Word 文档在我们的工作中也扮演了重要的角色,各种合同、通知、请示等基本都采用 Word 格式的。对于单个 Word 文档,我们可以手动读取内容、写入内容以及调整样式。假如有成千上万个文档,就需要借助 Python 编程来实现自动化处理。给 Word 文档添加分页符
在 Word 中,有时候需要添加一个“分页符”,表示当前页结束了,后续内容都在下一页开始,如图所示。我们怎么用代码实现这个功能呢?在 python-docx 模块中,调用文档对象的 add_page_break() 方法,可以帮助我们添加一个分页符,该方法无须传入任何参数。在如图所示的 Word 文档中,只有一页内容。我们的需求是为该文档添加一个分页符,并在第 2 页中添加一些其他内容。from docx import Documentdoc = Document("添加新页.docx")doc.add_page_break()doc.add_heading("分页后,添加一级标题", level=1)doc.add_paragraph("分页后,添加一个段落")doc.save("添加新页_分页符.docx")
在获取到文档对象 doc 后,直接调用 add_page_break() 方法(见 1),就添加一个分页符。接着,我们在第 2 页中分别添加了一个一级标题(见 2)和一个段落(见 3)。最终效果如图所示。案例:批量替换 Word 文档中的文字
如图所示,我们需要将文档中的“Python”关键字,全部替换成“888”,应该怎么做呢?假如有 100 个 Word 文档呢,如何批量完成替换呢?from docx import Documentdoc = Document("Python简介.docx")def replace_word(doc, old, new): for p in doc.paragraphs: for run in p.runs: run.text = run.text.replace(old, new) for table in doc.tables: for row in table.rows: for cell in row.cells: cell.text = cell.text.replace(old, new)replace_word(doc, "Python", "888")doc.save("Python简介_替换后.docx")
在 1 处,我们自定义了一个转换函数 replace_word,这个函数共有 3 个形参,doc 表示文档对象,old 表示替换前的旧文字,new 表示替换后的新文字。由于待替换的文字主要存放在段落和表格中,因此,这个函数一共有两个 for 循环。在 2 处,主要替换的是段落中的文字。在 3 处,主要替换的是表格中的文字。调用转换函数 replace_word 后(见 4),最终效果如图所示。小思考
如果有 100 个 Word 文档需要统一替换字符,是不是可以搭配 os 模块和 for 循环来实现呢?
系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。