Python之word文档模板套用 - 真正的模板格式套用

Python之word文档模板套用:

 1 '''
 2     #word模板套用2:套用模板
 3 '''
 4 
 5 #导入所需库
 6 from docx import Document
 7 '''
 8     #另存word文档后格式丢失的问题要导入库设定word文档的初始格式
 9     from docx.shared import Pt
10     from docx.oxml.ns import qn
11 '''
12 
13 #导入模板文档
14 document = Document('D:/路径/模板.docx')
15 '''
16     #如果出现word文档表格格式丢失的时候,需要设置word文档的整体样式,将这一段注释取消
17     document.styles['Normal'].font.name = '微软雅黑'
18     document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑')
19     document.styles['Normal'].font.size = Pt(12)
20 '''
21 #创建函数
22 def change_text(old_text, new_text):
23     #读取模板文档里的所有段落
24     all_paragraphs = document.paragraphs
25     #开始循环段落
26     for paragraph in all_paragraphs:
27         #开始循环段落里的每个run,如果发现run在打印的时候是不整齐的,那么需要重新创建一份模板,并且以纯文字的方式粘贴
28         for run in paragraph.runs:
29             #开始替换文字内容,用new_text替换old_text,如果没有就不替换
30             run_text = run.text.replace(old_text, new_text)
31             run.text = run_text #再把run_text赋值给run的文字部分,要解释的是,不在paragraph里更改是会丢失格式
32     #获取文档里的所有表格
33     all_tables = document.tables
34     #循环读取每个表格
35     for table in all_tables:
36         #循环读取每个表格的每行
37         for row in table.rows:
38             #循环读取每行的每个单元格
39             for cell in row.cells:
40                 #开始替换单元格里的文字内容
41                 cell_text = cell.text.replace(old_text, new_text)
42                 #再把替换后的文字返还给表格内容
43                 cell.text = cell_text
44 #开始替换
45 change_text('','OK')
46 change_text('','哈士奇')
47 
48 #另存文档,就可以完成格式套用,(可能表格格式会丢失,即不是模板格式,回到新建word文档时候的格式,这就要在代码开头指定整个文档的格式)
49 document.save('test.docx')

 

posted @ 2020-11-13 22:41  、一叶孤城  阅读(2411)  评论(1编辑  收藏  举报