Python办公自动化常见问题包括:openpyxl中文乱码需显式设字体样式;pandas读大Excel应限定sheet、列和dtype,或用chunksize分块;win32com报com_error多因Excel未安装、被占用或位数不匹配;python-docx改Word模板须严格匹配样式名并单独设置段落样式。

用 openpyxl 读写 Excel 时中文乱码或样式丢失
根本原因常是未指定 encoding(该参数其实不生效),或误用 xlrd(已停止维护且不支持 .xlsx 写入)。openpyxl 默认使用 UTF-8,但单元格字体、对齐等需显式设置:
from openpyxl import Workbook注意:不能用
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws['A1'] = '测试'
ws['A1'].font = Font(name='微软雅黑', size=10)
wb.save('output.xlsx')
print(ws['A1'].value) 验证样式是否生效——样式信息不会体现在 .value 中。
pandas.read_excel() 读取大文件卡死或内存爆掉
默认加载全部 sheet 和全部列,且不跳过空行。实战建议:
- 用
sheet_name=0明确指定单表,避免解析隐藏 sheet - 加
usecols="A:C"或usecols=[0,1,2]限定列范围 - 设
dtype={'ID': str}防止数字列被自动转为 float 导致小数点后补零 - 超 10 万行优先改用
chunksize=5000迭代读取
pandas.read_excel("data.xlsx") —— 没有约束,等于把整个 Excel 解压+解析+建 DataFrame 三连击,极易触发 OOM。
调用 win32com.client 自动化 Excel 却报错 pywintypes.com_error
这是 Windows COM 接口层面的异常,和 Python 语法无关。常见诱因:
- 本地没装 Microsoft Excel(
win32com不自带 Excel,只调用已安装的桌面版) - Excel 正在前台打开且文档被锁定
- 64 位 Python 调用 32 位 Excel(或反之),导致架构不匹配
- 代码中用了
app.Visible = True但在无桌面环境(如 Windows Server 无用户登录)下运行
用 python-docx 修改 Word 模板却丢失原有样式
该库不保留原始模板的 Style 定义,所有新段落默认用 Normal 样式。关键动作:
- 先用
document.styles['Heading 1']确认模板中是否存在该样式名(注意大小写和空格) - 新增段落后立即调用
paragraph.style = document.styles['标题 1'](名称必须与模板内完全一致) - 避免用
paragraph.add_run().bold = True替代样式——这属于内联格式,无法继承模板的样式联动逻辑
cell.paragraphs[0].style,不能只设 cell.text。立即学习“Python免费学习笔记(深入)”;
真正卡住开发者的,从来不是“第几讲”,而是打开文件时的PermissionError、写入后打不开的 Corrupted file、或者自动化脚本在别人电脑上死活不跑的 com_error。盯住错误信息本身,比追教程编号管用得多。










