Python读写Excel文件 1
基础教学 1 min read

Python读写Excel文件 1

Blog Author

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 文件尽量切换到 openpyxlpandas + openpyxl
  • 模板驱动设计:构建固定格式的 Excel 模板,只写入变化数据。

🚀 进阶建议

场景 推荐工具 原因
大批量读取、写入 pandas 速度快、语法简洁
操作现代 Excel 格式 openpyxl 支持图表、图像、验证等高级功能
生成复杂报表 xlsxwriter 支持丰富格式和图表

八、结语与拓展

掌握 Python 操作 Excel 文件不仅可以提升日常办公效率,更能在项目开发、数据分析和系统对接中提供极大的便利。在后续章节中,我们将进一步介绍如何使用 pandasopenpyxl 等工具处理 .xlsx 文件,实现更多样化的 Excel 自动化任务。

如你希望我继续推出《Python读写Excel文件-2》,请告诉我你希望重点学习的内容,例如:

  • 读取多个工作簿并合并?
  • 使用 pandas 导入导出?
  • openpyxl 图表与公式支持?
  • 多线程批量处理?

我会根据你的需求继续教学设计。