Python处理Excel和CSV应选对工具:Pandas擅长数据清洗分析与批量转换,Openpyxl专注Excel样式与结构控制;二者常组合使用——Pandas处理数据后,Openpyxl美化输出。

Python处理Excel和CSV文件,核心是选对工具:Openpyxl适合精细控制Excel格式(如样式、公式、多表操作),Pandas更适合数据清洗、分析和批量转换。两者常配合使用——用Pandas做计算和结构化处理,用Openpyxl写回带样式的Excel报告。
用Pandas高效读写CSV与Excel基础表
Pandas的read_csv()和read_excel()能自动推断数据类型,跳过空行,指定列名;to_csv()和to_excel()支持索引控制、日期格式、编码设置。注意CSV默认用逗号分隔,中文环境建议加encoding='utf-8-sig'避免Excel乱码。
- 读取带标题的CSV:pd.read_csv("data.csv", encoding='utf-8-sig')
- 读取Excel多个sheet:pd.read_excel("report.xlsx", sheet_name=None)返回字典,key为sheet名
- 写入多个DataFrame到不同sheet:with pd.ExcelWriter("output.xlsx") as writer: df1.to_excel(writer, "Sheet1"); df2.to_excel(writer, "Sheet2")
用Openpyxl精准控制Excel样式与结构
Openpyxl不解析公式结果,但能读写公式、冻结窗格、设置字体/边框/填充色、调整行列宽高。它适合生成管理报表、财务模板等需严格格式的文件。注意:Openpyxl不能直接处理CSV,也不擅长大数据量计算——先用Pandas处理好数据,再用Openpyxl“美化”输出。
- 给单元格加粗+居中:ws['A1'].font = Font(bold=True); ws['A1'].alignment = Alignment(horizontal="center")
- 设置整列宽度:ws.column_dimensions['B'].width = 15
- 写入公式(字符串形式):ws['C1'] = "=A1+B1"
实战组合:Pandas清洗 + Openpyxl出报告
典型流程:用Pandas加载原始数据→去重、填充缺失、计算新列→分组聚合→导出为Excel临时文件→用Openpyxl打开该文件,添加标题、样式、页眉页脚、打印区域。这样既发挥Pandas的数据处理能力,又保留Excel的专业呈现效果。
立即学习“Python免费学习笔记(深入)”;
- 例如销售汇总:Pandas按地区求和并排序后,用to_excel("temp.xlsx", index=False)保存
- 再用Openpyxl打开temp.xlsx,插入公司Logo图片、设置第一行为冻结行、添加页眉“2024年Q3销售报告”
- 最后另存为正式文件,原临时文件可删除
避坑提醒:编码、日期、大文件处理
CSV中文乱码多数因未指定encoding;Excel中日期在Pandas里常变成datetime64,写入Openpyxl前建议转成字符串或用dt.strftime()格式化;单表超10万行慎用Openpyxl(内存高、速度慢),优先用Pandas+CSV流式处理,或改用xlsxwriter引擎(pd.ExcelWriter(..., engine="xlsxwriter"))提升写入性能。
- 统一日期格式写法:df["date"] = pd.to_datetime(df["date"]).dt.strftime("%Y-%m-%d")
- 大文件分块读取CSV:for chunk in pd.read_csv("big.csv", chunksize=5000): process(chunk)
- 避免Openpyxl内存溢出:不用load_workbook(data_only=False)反复读写同一文件,处理完及时wb.close()










