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