原本打算是能自动将旧的docx文件中的关键字替换,生成新的docx文件,格式、线段、图片、页眉页脚等都不变
结果目前有一下几点问题(后半部分更新已解决):
1.docx只能新增图片,不能保留原有的图片,不能保留线段
2.有的文字格式可以保留,有的不行
3.paragraph.run会将"编制:郭锋"切割为"编/制:郭/锋"(这什么鬼?)
目前只能做到提示功能,提示哪个文件需要修改,需要修改什么。
求大神指导怎么解决以上几个问题!!!
下面附代码(有一部分代码是我抄的)
import copy
import docx
import os
def change_key(doc, new_doc, dic):
if dic and doc and new_doc:
count = 0
doc_path = doc
new_doc_path = new_doc
doc_file = docx.Document(doc_path)
# 替换段落内容
#print(doc_file._element.xml)
for paragraph in doc_file.paragraphs:
# 深度复制段落内容,包括样式。如果不深度复制,样式会丢失(这下面原来的代码不能保证保留样式。。。)
#print(paragraph.style)
# list_runs = copy.deepcopy(paragraph.runs)
# paragraph.clear()
# #文字替换
# for run in list_runs:
# for name in dic:
# if name in run.text:
# value = dic[name]
# print(name+"->"+str(value))
# run.text = run.text.replace(name, str(value))
# count+=1
# # 段落样式的复制
# paragraph.add_run(run.text, run.style)
for name in dic:
if name in paragraph.text:
print(name+"->"+dic[name])
count+=1
# 替换表格内容
for table in doc_file.tables:
# 深度复制表格内容,包括样式, 如果不深度复制,样式会丢失
table_style = copy.deepcopy(table.style)
for row in table.rows:
for cell in row.cells:
for name in dic:
if name