Excel 文件(通常为 .xlsx)是一种基于 XML 的压缩容器格式,用于存储结构化表格数据、工作表、样式、公式与图表等信息。
与 CSV 的“纯文本、单表”不同,Excel 文件支持:
• 多工作表(Sheet)
• 单元格类型(数值、文本、日期、布尔值)
• 公式与格式
• 合并单元格、样式、筛选等结构信息
因此,Excel 更适合结构复杂、需要格式与计算逻辑的表格数据存储。
一、Excel 文件格式基础
1、常见扩展名
.xlsx:现代 Excel 格式(Office 2007+)
.xls:旧版二进制格式
.xlsm:含宏的 Excel 文件
推荐统一使用 .xlsx。
2、Excel 文件的结构特征
• 一个文件可包含多个工作表(Sheet)
• 单元格具有明确数据类型
• 支持公式(如 =SUM(A1:A10))
• 支持样式、列宽、冻结窗格等
• 实际上是一个 ZIP 压缩包(包含 XML 文件)
二、在 Python 中表示 Excel 数据
Excel 本质仍然是“二维表格结构”,因此在 Python 中通常以以下结构表示:
1、使用列表与字典表示表格
students = [{"id": 1, "姓名": "张三", "成绩": 95},{"id": 2, "姓名": "李四", "成绩": 88},{"id": 3, "姓名": "王五", "成绩": 90},{"id": 4, "姓名": "赵六", "成绩": 70},]
这种结构与 Excel 的“行–列”天然对应。
2、使用二维列表表示单个工作表
table = [["id", "姓名", "成绩"],[1, "张三", 95],[2, "李四", 88],[3, "王五", 90],[4, "赵六", 70],]
适用于 openpyxl 等库逐单元格写入。
三、使用 openpyxl 操作 Excel 文件
Python 标准库不支持 Excel 文件,需要第三方库。
推荐使用:
• openpyxl(读写 .xlsx)
• pandas(数据分析场景)
1、安装 openpyxl/pandas
pip install openpyxl pandas2、创建并写入 Excel 文件
from openpyxl import Workbook# 创建工作簿wb = Workbook()ws = wb.activews.title = "Students"# 写入表头ws.append(["id", "姓名", "成绩"])# 写入数据ws.append([1, "张三", 95])ws.append([2, "李四", 88])ws.append([3, "王五", 90])# 保存文件wb.save("students1.xlsx")print("students1.xlsx 文件已保存。")
说明:
• Workbook() 创建工作簿对象
• ws.append() 按行写入
• wb.save() 保存文件
3、读取 Excel 文件
from openpyxl import load_workbookwb = load_workbook("students1.xlsx")ws = wb["Students"]for row in ws.iter_rows(values_only=True):print(row)
输出:
('id', '姓名', '成绩')(1, '张三', 95)(2, '李四', 88)(3, '王五', 90)
values_only=True 表示直接返回单元格值。
4、多工作表操作
wb.create_sheet("Summary")wb.save("students1.xlsx")
一个 Excel 文件可包含多个数据表。
四、使用 pandas 处理 Excel 文件
在数据分析场景中,通常优先使用 pandas。
pandas 在读取 .xlsx 时默认使用 openpyxl 作为后端引擎。
1、读取 Excel 文件
import pandas as pddf = pd.read_excel("students1.xlsx")print(df.head())
输出:
id 姓名 成绩0 1 张三 951 2 李四 882 3 王五 90
2、指定工作表读取
df = pd.read_excel("students1.xlsx", sheet_name="Students")3、筛选与统计
top = df[df["成绩"] >= 90]avg = df["成绩"].mean()print(top)print("平均分:", avg)
4、写入 Excel 文件
top.to_excel("top_students1.xlsx", index=False)与 CSV 相比,Excel 格式具有以下差异:
• .xlsx 文件为二进制容器格式,不涉及文本编码参数
• 支持写入多个 Sheet
5、写入多个工作表
with pd.ExcelWriter("report.xlsx") as writer:df.to_excel(writer, sheet_name="All")top.to_excel(writer, sheet_name="Top")
ExcelWriter 用于创建多 Sheet 文件。
五、综合案例:完整 Excel 数据流程
流程:构造 → 写入 → 读取 → 筛选 → 输出
import pandas as pd# 1. 构造数据students = [{"id": 1, "姓名": "张三", "成绩": 95},{"id": 2, "姓名": "李四", "成绩": 88},{"id": 3, "姓名": "王五", "成绩": 90},{"id": 4, "姓名": "赵六", "成绩": 70},]# 2. 转为 DataFramedf = pd.DataFrame(students)# 3. 保存 Excel 文件df.to_excel("students.xlsx", index=False)# 4. 读取文件df2 = pd.read_excel("students.xlsx")# 5. 筛选top = df2[df2["成绩"] >= 85]# 6. 写入新文件top.to_excel("top_students.xlsx", index=False)print("处理完成。")
六、性能与注意事项
1、Excel 为 XML 结构 + 压缩容器,解析成本高于纯文本 CSV。
2、多 Sheet 文件建议使用 pandas。
3、避免频繁逐单元格写入(性能低)。
4、不建议用 Excel 存储百万级数据。
5、若涉及公式,请确认是否需要保留公式或计算结果。
📘 小结
Excel 文件支持多表、多类型与公式,适合报表与结构化数据管理。Python 中推荐使用 openpyxl 进行底层读写,使用 pandas 进行分析与批量处理。在工程实践中,应根据数据规模与使用场景选择 CSV 或 Excel,以兼顾兼容性、性能与结构表达能力。
