
可以把openpyxl 和pandas 理解为一个负责“操作 Excel 文件本身”一个负责“分析表格数据”。它们定位不同经常是配合使用的。一句话区分openpyxl专门读写.xlsx文件精细控制 Excel 的格式和内容单元格、样式、公式、图表等。pandas专注于数据处理与分析Excel 只是它的一种数据源/导出格式。核心差异对比维度openpyxlpandas主要用途读写 Excel 文件数据清洗、分析、统计数据模型工作簿 → 工作表 → 单元格DataFrame / Series二维表结构是否适合数据分析❌ 不适合✅ 非常适合是否支持样式/公式/图表✅ 原生支持❌ 基本不支持只保留少量格式读取方式按单元格、按行/列一次性读成 DataFrame性能大文件一般内存占用较高更好适合批量处理学习成本中等偏底层较低高层 API依赖关系独立库依赖 numpy常与 openpyxl 搭配典型使用场景✅ 用 openpyxl 的场景需要精确控制 Excel 格式设置字体、颜色、边框、合并单元格操作公式、图表、图片只改某个单元格不改整个表生成给业务人员看的“漂亮报表”from openpyxl import load_workbook wb load_workbook(data.xlsx) ws wb.active ws[A1] Hello ws[A1].font ws[A1].font.copy(boldTrue) wb.save(data.xlsx)✅ 用 pandas 的场景数据清洗缺失值、重复值、类型转换分组统计、透视表、聚合计算多表 merge / join批量处理大量 Excel/CSV 文件import pandas as pd df pd.read_excel(data.xlsx) df[total] df[price] * df[qty] result df.groupby(category)[total].sum() result.to_excel(summary.xlsx)两者如何配合使用最常见pandas 负责算openpyxl 负责“化妆”import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Font # pandas 处理数据 df pd.read_excel(data.xlsx) df[total] df[price] * df[qty] df.to_excel(report.xlsx, indexFalse) # openpyxl 美化报表 wb load_workbook(report.xlsx) ws wb.active ws[A1].font Font(boldTrue) wb.save(report.xlsx)pandas 从 1.3 开始内部读/写.xlsx其实就是用 openpyxl 做引擎pd.read_excel(data.xlsx, engineopenpyxl)怎么选只想算数、统计数据 →pandas只想读写 Excel、调格式 →openpyxl既要算又要好看 →pandas openpyxl超大文件、性能敏感 → pandas或考虑 polars / csv