Python自动化办公高级项目教程_批量ExcelWordPDF优化

核心是理清文档修改逻辑、避开常见坑、确保脚本稳定: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的操作单位是paragraphrun,得逐段遍历。

  • 替换带样式的文字(比如把“【日期】”换成红色加粗的当前日期),要拆成多个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 → 合并签名页/盖章页。

  • PyPDF2.PdfReader提取文本和元数据(作者、标题、页数),用pdfplumber精确定位表格坐标(适合发票、报表解析)
  • 生成新PDF推荐reportlab:支持中文字体嵌入(需提前注册SimSun或NotoSansCJK)、绘制表格、插入图片、设置页码
  • 给PDF加水印或电子章?用PyPDF2.PdfWriter将水印PDF作为覆盖层merge_page()到目标页,比透明图层更兼容

三个工具链打通的关键,在于统一中间数据结构——比如用pandas DataFrame存所有业务数据,Excel导出原始表,Word填充报告摘要,PDF生成最终交付件。脚本健壮性靠异常捕获(IOError、KeyError、InvalidPageError)和日志记录,而不是反复试错。