Python批量处理Excel报表应以pandas处理数据、openpyxl控制样式、os/pathlib遍历文件为核心,配合异常防护与轻量调度,明确分工可高效完成90%自动化任务。

用Python批量处理Excel报表,关键不在写多少行代码,而在选对工具、理清流程、避开常见坑。核心是用pandas读写数据 + openpyxl操作样式/多表/公式,再配合os或pathlib遍历文件——三者配合,90%的日常报表自动化都能稳稳拿下。
统一读取:用pandas接管所有“数据内容”
pandas的read_excel()能自动识别.xlsx/.xls,支持指定sheet、跳过行、列名处理;写入时to_excel()配合ExcelWriter可追加多表。别用手动循环xlrd或openpyxl逐单元格读——慢、易错、难维护。
- 读多个文件合并:用
glob或pathlib.Path().glob("*.xlsx")收集路径,pd.concat([pd.read_excel(f) for f in files]) - 读特定区域:加
usecols="A:C"或skiprows=2, nrows=100,比手动切片更可靠 - 写入不覆盖原格式:先用
openpyxl.load_workbook()打开模板,再用pd.ExcelWriter(... engine="openpyxl", if_sheet_exists="replace")
精准控制:用openpyxl处理“非数据”需求
字体、边框、合并单元格、条件格式、图表、密码保护……这些pandas干不了,必须交给openpyxl。原则是:pandas管“算什么”,openpyxl管“怎么呈现”。
- 给标题行加粗居中:
ws['A1'].font = Font(bold=True); ws['A1'].alignment = Alignment(horizontal="center") - 动态冻结首行首列:
ws.freeze_panes = "B2" - 写入后自动调整列宽:
for col in ws.columns: max_length = max(len(str(cell.value)) for cell in col); ws.column_dimensions[col[0].column_letter].width = min(max_length + 2, 50)
安全执行:文件遍历+异常防护不能少
批量处理最怕中途报错导致部分文件写坏或漏处理。加基础防护,脚本就从“偶尔能跑”变成“每天敢用”。
标签: linux excel python windows 编码 工具 mac ai macos win cos
还木有评论哦,快来抢沙发吧~