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\')

 

版权声明:本文为mafu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mafu/p/13971720.html