核心是理清文档修改逻辑、避开常见坑、确保脚本稳定:Excel先用pandas处理数据再用openpyxl调样式;Word用python-docx逐段逐run操作保样式;PDF宜提取信息后用reportlab生成新文件。

用Python批量处理Excel、Word和PDF,核心不是学多少库,而是理清每类文档的修改逻辑、避开常见坑、让脚本真正稳定跑起来。下面分三块说清楚关键点和实用技巧。
Excel:别只用openpyxl改样式,先搞定数据结构再动格式
很多人一上来就调字体、边框、合并单元格,结果数据错位、公式失效、模板崩坏。正确顺序是:读取→清洗→计算→写入→再格式化。
- 用pandas读写主数据(速度快、自动识别类型、支持SQL式操作),用openpyxl补样式(如条件高亮、列宽、页眉页脚)
- 写入前务必用workbook.save()保存,别用workbook.close()——后者不触发持久化
- 合并单元格要小心:pandas.to_excel()默认不支持,得用openpyxl在保存后手动merge_cells(),且必须先清除原区域内容
Word:用python-docx做“真替换”,不是字符串查找
直接.replace()文本会破坏样式、段落结构、题注编号。python-docx的操作单位是paragraph和run,得逐段遍历。
- 替换带样式的文字(比如把“【日期】”换成红色加粗的当前日期),要拆成多个run处理:先定位含关键词的paragraph,再遍历其runs,找到匹配文本后清空该run.text,再用add_run()插入新内容并设font.bold = True
- 表格内替换更复杂:需循环table.cell(row, col).paragraphs,不能只扫document.paragraphs
- 生成目录?别手写TOC字段,用document.sections[0].footer.paragraphs[0].text = "页脚内容"这类精准路径控制
PDF:别硬改原文档,用PyPDF2+reportlab组合输出
PDF本质是二进制布局文件,python-pdfminer或PyPDF2只能提取或简单拼接,无法可靠修改文字/样式。稳妥做法是:提取关键信息 → 用reportlab生成新PDF → 合并签名页/盖章页。
立即学习“Python免费学习笔记(深入)”;
- 用PyPDF2.PdfReader提取文本和元数据(作者、标题、页数),用pdfplumber精确定位表格坐标(适合发票、报表解析)
- 生成新PDF推荐reportlab:支持中文字体嵌入(需提前注册SimSun或NotoSansCJK)、绘制表格、插入图片、设置页码
- 给PDF加水印或电子章?用PyPDF2.PdfWriter将水印PDF作为覆盖层merge_page()到目标页,比透明图层更兼容
三个工具链打通的关键,在于统一中间数据结构——比如用pandas DataFrame存所有业务数据,Excel导出原始表,Word填充报告摘要,PDF生成最终交付件。脚本健壮性靠异常捕获(IOError、KeyError、InvalidPageError)和日志记录,而不是反复试错。










