首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python自学18 - Python读写Excel文件

Python自学18 - Python读写Excel文件

原创
作者头像
星哥玩云
发布2025-09-17 16:37:06
发布2025-09-17 16:37:06
10700
代码可运行
举报
文章被收录于专栏:python自学成菜python自学成菜
运行总次数:0
代码可运行

Python自学18 - Python读写Excel文件

在日常数据处理和分析工作中,Excel 文件是最常用的数据存储格式之一。Python 作为一门强大的编程语言,拥有多个专门用于读写 Excel 文件的库,能够帮助我们高效地处理 Excel 中的数据,摆脱手动操作的繁琐。本文将详细介绍 Python 中读写 Excel 文件的常用库和具体实现方法,包括xlrd(读取 Excel 文件)、xlwt(写入 Excel 文件)以及支持新版 Excel 格式的openpyxl库,同时通过实例演示完整的操作流程,帮助大家快速掌握这一实用技能。


1️⃣ 常用库对比

在开始读写 Excel 文件之前,我们需要先了解 Python 中常用的 Excel 处理库及其适用场景。不同的库支持的 Excel 版本和功能有所差异,选择合适的库是高效处理数据的第一步。

库名

支持格式

主要功能

适用场景

pandas

.xlsx .xls .xlsm

高效读取/写入,支持数据分析

数据处理、分析

openpyxl

.xlsx

读写、修改单元格、样式、公式

报表生成、格式化

xlrd

.xls

读取老版本 Excel

兼容旧文件

xlwt

.xls

写入老版本 Excel

兼容旧文件

pyxlsb

.xlsb

读取二进制 Excel

特殊格式

xlsxwriter

.xlsx

高性能写入、格式控制

大数据写入


2️⃣ 使用 pandas 快速读写

pandas 是数据分析神器,读写 Excel 十分简单。

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
​
# 读取 Excel
df = pd.read_excel("data.xlsx")
print(df.head())
​
# 写入 Excel
df.to_excel("output.xlsx", index=False)

优点

  • 一行代码搞定读写
  • 支持多 sheet
  • 可直接配合数据分析

3️⃣ 使用 openpyxl 精细操作

openpyxl 专注 .xlsx 格式,支持单元格样式、公式、图表等。

代码语言:javascript
代码运行次数:0
运行
复制
from openpyxl import load_workbook, Workbook
​
# 读取 Excel
wb = load_workbook("data.xlsx")
sheet = wb.active
for row in sheet.iter_rows(values_only=True):
    print(row)
​
# 写入 Excel
wb_new = Workbook()
ws = wb_new.active
ws.title = "Report"
ws.append(["姓名", "成绩"])
ws.append(["张三", 90])
wb_new.save("report.xlsx")

适用场景:需要修改单元格样式、合并单元格、插入图片等。


4️⃣ 处理 .xls 老版本文件

代码语言:javascript
代码运行次数:0
运行
复制
import xlrd
​
wb = xlrd.open_workbook("old.xls")
sheet = wb.sheet_by_index(0)
for i in range(sheet.nrows):
    print(sheet.row_values(i))

⚠️ 注意xlrd 2.0+ 不再支持 .xlsx,如需支持请安装旧版本:

代码语言:javascript
代码运行次数:0
运行
复制
pip install xlrd==1.2.0

5️⃣ 读取 .xlsb 二进制文件

代码语言:javascript
代码运行次数:0
运行
复制
from pyxlsb import open_workbook
​
with open_workbook("data.xlsb") as wb:
    with wb.get_sheet(1) as sheet:
        for row in sheet.rows():
            print([item.v for item in row])

6️⃣ 大文件优化技巧

  • pandas 分块读取
代码语言:javascript
代码运行次数:0
运行
复制
chunks = pd.read_excel("big.xlsx", chunksize=10000)
for chunk in chunks:
    process(chunk)  # 自定义处理逻辑
  • openpyxl 流式读取
代码语言:javascript
代码运行次数:0
运行
复制
wb = load_workbook("big.xlsx", read_only=True)
for row in wb.active.iter_rows(values_only=True):
    print(row)
  • xlsxwriter 常量内存模式(写入大数据)
代码语言:javascript
代码运行次数:0
运行
复制
import xlsxwriter
wb = xlsxwriter.Workbook("big_output.xlsx", {'constant_memory': True})
ws = wb.add_worksheet()
for i in range(1000000):
    ws.write(i, 0, i)
wb.close()

7️⃣ 常见问题与解决方案

问题

解决方案

读取加密 Excel

使用 msoffcrypto-tool 解密

写入后文件打不开

确保 save() 或 close() 正确调用

中文乱码

指定 encoding="utf-8"(CSV 场景)

版本冲突

检查 pandas、openpyxl、xlrd 版本兼容性


8️⃣ 总结

  • 快速读写 → 用 pandas
  • 精细控制 → 用 openpyxl
  • 兼容老文件 → 用 xlrd / xlwt
  • 特殊格式 → 用 pyxlsb / xlsxwriter
  • 大文件优化 → 分块读取、流式写入

掌握这些方法,你就能应对绝大多数 Excel 处理需求

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python自学18 - Python读写Excel文件
    • 1️⃣ 常用库对比
    • 2️⃣ 使用 pandas 快速读写
    • 3️⃣ 使用 openpyxl 精细操作
    • 4️⃣ 处理 .xls 老版本文件
    • 5️⃣ 读取 .xlsb 二进制文件
    • 6️⃣ 大文件优化技巧
    • 7️⃣ 常见问题与解决方案
    • 8️⃣ 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档