Python自学18 - Python读写Excel文件

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 十分简单。

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 格式,支持单元格样式、公式、图表等。

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 老版本文件

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,如需支持请安装旧版本:

pip install xlrd==1.2.0

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

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 分块读取
chunks = pd.read_excel("big.xlsx", chunksize=10000)
for chunk in chunks:
    process(chunk)  # 自定义处理逻辑
  • openpyxl 流式读取
wb = load_workbook("big.xlsx", read_only=True)
for row in wb.active.iter_rows(values_only=True):
    print(row)
  • xlsxwriter 常量内存模式(写入大数据)
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 场景)
版本冲突检查 pandasopenpyxlxlrd 版本兼容性

8️⃣ 总结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星哥玩云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值