Попытка редактирования документа ms word с помощью django

Я хочу прочитать данные из файла ms excel и отредактировать существующий документ word, используя данные из excel для заполнения закладок. До сих пор мне удавалось успешно считывать данные, но я испытываю трудности с редактированием. Для этого я использую python-docx. Было бы здорово, если бы кто-нибудь смог помочь.

мой код:

from django.shortcuts import render
from django.http import HttpResponse
import openpyxl
import docx
from docx import Document

def index(request):
    if "GET" == request.method:
        return render(request, 'letters/index.html', {})
    else:
        excel_file = request.FILES["excel_file"]

        # you may put validations here to check extension or file size

        wb = openpyxl.load_workbook(excel_file)

        # getting a particular sheet by name out of many sheets
        worksheet = wb.sheetnames
        if 'sheet name' in wb.sheetnames:
            sheet = wb['sheet name']
        print(worksheet)

        excel_data = list()
        # iterating over the rows and
        # getting value from each cell in row
        for name in wb.sheetnames:
            sheet = wb[name]
            first = False
            for row in sheet.iter_rows():
                row_data = list()
                
                for cell in row:
                    row_data.append(str(cell.value))
                print (row_data)
                
                if first == False:
                    pass
                else:

                    document = Document("media/template.docx")
                    doc = docx.Document()
                    for x in range (5):
                        def addParagraphAfterParagraph(self, document, paragraph, bookmark ):
                            for para in document.paragraphs:
                                if para.text == bookmark:
                                    p = para._p
                                    p.addnext(paragraph._p)
                        addParagraphAfterParagraph ("", document,row_data[0] , bookmark = '[name]'  )
                        addParagraphAfterParagraph("", document, row_data[1], bookmark = '[grade]')
                        addParagraphAfterParagraph ("", document,row_data[2] , bookmark = '[admissionNumber]')
                        addParagraphAfterParagraph ("", document,row_data[3] , bookmark = '[fee]'  )
                        addParagraphAfterParagraph ("", document,row_data[4] , bookmark = '[arrears]'  )
                        addParagraphAfterParagraph ("", document,row_data[5] , bookmark = '[total]'  )
                        Admission = row_data[2]
                        doc.save(Admission.docx)


                first = True

                excel_data.append(row_data)
               
    return render(request, 'letters/index.html', {"excel_data":excel_data})

Ошибка, которую я получаю

 AttributeError at /
'str' object has no attribute 'docx'

на линии

doc.save(Admission.docx)

Здесь я пытаюсь дать уникальное имя сохраняемому документу.

Решено!!! Я использовал python-doxc для редактирования моих документов word. Я все еще не мог понять, как использовать закладки, но вместо этого я заменил части, которые я хочу отредактировать, следующим образом:

for paragraph in document.paragraphs:
  if 'Name of the student   : ' in paragraph.text:
     paragraph.text = 'Name of the student  : ' + Name

Затем я использовал pypandoc, чтобы перевести их в формат pdf.

pypandoc.convert_file('template.docx', 'pdf', outputfile='S' + ' ' + Name + '.pdf') 
Вернуться на верх