需要把excel表中的字段填到word文件中,每行生成一个word文件。excel文件的操作以前用过openpyxl,这次也直接用openpyxl了。word文件以前没在python里操作过,搜索了一下就用python-docx这个库了。
import openpyxl
import docx
def docx_replace_save(filename,text1,text2,text3,text4,text5):
doc = docx.Document('file.docx') # type: Doc
for paragraph in doc.paragraphs:
runs = paragraph.runs
for i, run in enumerate(runs):
run.text=run.text.replace("11111",text1)
run.text=run.text.replace("22222",text2)
run.text=run.text.replace("33333",text3)
run.text=run.text.replace("44444",text4)
run.text=run.text.replace("55555",text5)
doc.save("out/" + filename + ".docx")
book=openpyxl.load_workbook("file.xlsx")
sheetnames=book.sheetnames
for sheet in book:
num=1
chejian=""
while sheet['B' + str(num)].value!=None:
if sheet['B'+ str(num)].value=='岗位':
num=num+1
continue
if sheet['A'+ str(num)].value!=None:
chejian=sheet['A'+ str(num)].value
filename=sheet.title + "_" + chejian + "_" + str(sheet['B' + str(num)].value) + "_" + str(int(sheet['c' + str(num)].value)*2) + "份"
filename=filename.replace('/','')
docx_replace_save(filename,chejian,str(sheet['B' + str(num)].value),str(sheet['D' + str(num)].value),str(sheet['E' + str(num)].value),str(sheet['F' + str(num)].value))
print(filename)
num=num+1
转载请注明:HANLEI'BLOG » python-docx批量修改、生成word文件