Python读写Excel文件 1
Python读写Excel文件-1:教学详解、使用场景与最佳实践
一、Excel文件与Python操作的意义
🎯 场景引入
无论你是从事财务、数据分析、办公自动化,还是做系统对接开发,几乎都逃不开 Excel 文件的读写需求。举例:
- 企业报表导出: 从系统中批量导出客户、订单、库存等数据。
- 定期统计分析: 读取每月销售或访问数据,自动化生成汇总。
- 数据迁移与清洗: 读取旧表格数据,清洗后写入新的 Excel 模板。
- 辅助决策分析: 写入公式,让 Excel 自动计算结果。
- 教育场景: 教师自动生成学生成绩单,写入样式、评分。
二、Excel格式简介与库选择策略
🧾 Excel格式简述
文件格式 | 扩展名 | 年份支持 | Python推荐库 |
---|---|---|---|
早期格式 | .xls |
Excel 2003 及以前 | xlrd , xlwt |
新式格式 | .xlsx |
Excel 2007+ | openpyxl , pandas |
✅ 最佳实践建议
- 处理历史文件(
.xls
):使用xlrd
(读取)、xlwt
(写入)、xlutils
(复制/增强写功能)。 - 处理现代格式(
.xlsx
):推荐使用openpyxl
,功能强大、支持样式和图表。 - 批量分析与转换:使用
pandas.read_excel()
和to_excel()
提高效率。
三、使用 xlrd
读取 .xls
文件
📘 教学重点:结构与读取方式
import xlrd
wb = xlrd.open_workbook('示例.xls')
sheet = wb.sheet_by_index(0) # 或 sheet_by_name('Sheet1')
for row in range(sheet.nrows):
print(sheet.row_values(row))
🔍 应用技巧与场景
- 读取表头:
sheet.row_values(0)
可快速定位字段名。 - 判断单元格类型: 用
sheet.cell_type(row, col)
检查数据类型。 - 处理日期字段: Excel 日期是浮点数,需用
xldate_as_tuple()
还原。
⚠️ 注意事项
xlrd
1.2.0 以后默认不支持.xlsx
格式,注意文件扩展名!
四、使用 xlwt
写入 .xls
文件
🛠️ 基本写入操作
import xlwt
wb = xlwt.Workbook()
sheet = wb.add_sheet('成绩表')
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '分数')
sheet.write(1, 0, '张三')
sheet.write(1, 1, 95)
wb.save('成绩单.xls')
✨ 使用场景
- 批量生成成绩单、报表、问卷导出结果等。
- 数据源来自数据库、网络接口或日志处理。
五、设置 Excel 单元格样式:美观+实用
🎨 常用样式分类与设置
样式项目 | 使用类 | 示例说明 |
---|---|---|
字体 | xlwt.Font() |
字体名称、加粗、颜色 |
背景色 | xlwt.Pattern() |
设置表头背景颜色 |
对齐 | xlwt.Alignment() |
水平/垂直居中 |
边框 | xlwt.Borders() |
边框线条类型与颜色 |
高宽 | sheet.row().set_style() / sheet.col().width |
设置行高列宽 |
🌟 示例:为表头设置黄色背景、加粗居中字体和边框
header_style = xlwt.XFStyle()
# 背景
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5 # 黄色
header_style.pattern = pattern
# 字体
font = xlwt.Font()
font.name = '宋体'
font.bold = True
header_style.font = font
# 对齐
align = xlwt.Alignment()
align.horz = xlwt.Alignment.HORZ_CENTER
align.vert = xlwt.Alignment.VERT_CENTER
header_style.alignment = align
# 边框
borders = xlwt.Borders()
borders.left = borders.right = borders.top = borders.bottom = xlwt.Borders.THIN
header_style.borders = borders
六、通过 xlutils
实现“读后写”:嵌入计算公式
🧮 教学目标:在原表中添加公式(例如平均值与求和)
from xlutils.copy import copy
import xlrd, xlwt
wb_read = xlrd.open_workbook('示例.xls')
wb_write = copy(wb_read)
sheet = wb_write.get_sheet(0)
nrows = wb_read.sheet_by_index(0).nrows
sheet.write(nrows, 1, xlwt.Formula(f'average(B2:B{nrows})'))
sheet.write(nrows, 2, xlwt.Formula(f'sum(C2:C{nrows})'))
wb_write.save('汇总.xls')
💼 应用场景
- 自动为表格附加“汇总/平均/最大值”等。
- 配合模板进行自动批量填表。
七、最佳实践总结与升级路径
✅ 推荐做法
- 模块化封装读写函数,提升可复用性。
- 结合数据分析工具
pandas
实现更加灵活的数据处理。 - 使用
.xlsx
文件尽量切换到openpyxl
或pandas + openpyxl
。 - 模板驱动设计:构建固定格式的 Excel 模板,只写入变化数据。
🚀 进阶建议
场景 | 推荐工具 | 原因 |
---|---|---|
大批量读取、写入 | pandas |
速度快、语法简洁 |
操作现代 Excel 格式 | openpyxl |
支持图表、图像、验证等高级功能 |
生成复杂报表 | xlsxwriter |
支持丰富格式和图表 |
八、结语与拓展
掌握 Python 操作 Excel 文件不仅可以提升日常办公效率,更能在项目开发、数据分析和系统对接中提供极大的便利。在后续章节中,我们将进一步介绍如何使用 pandas
、openpyxl
等工具处理 .xlsx
文件,实现更多样化的 Excel 自动化任务。
如你希望我继续推出《Python读写Excel文件-2》,请告诉我你希望重点学习的内容,例如:
- 读取多个工作簿并合并?
- 使用 pandas 导入导出?
- openpyxl 图表与公式支持?
- 多线程批量处理?
我会根据你的需求继续教学设计。