Попытка редактирования документа 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')