
Python中操作Excel
在 Python 中操作 Excel 有多种方式,常用的库包括 openpyxl
、pandas
、xlrd/xlwt
和 xlsxwriter
。以下是详细的操作指南:
1. 常用库介绍
openpyxl:适用于读写
.xlsx
文件,支持公式、图表和样式。pandas:适合数据分析和批量操作,底层依赖
openpyxl
或xlrd
。xlrd/xlwt:仅支持旧版
.xls
格式(xlrd
用于读,xlwt
用于写)。xlsxwriter:专注于写入和格式化
.xlsx
文件,支持高级功能。
2. 安装库
pip install openpyxl pandas xlrd xlwt xlsxwriter
3. 使用 openpyxl 操作 Excel
基本操作
from openpyxl import Workbook, load_workbook
# 创建新工作簿
wb = Workbook()
ws = wb.active
ws.title = "Sheet1"
# 写入数据
ws['A1'] = "Hello"
ws.append(["Python", 2023]) # 追加一行数据
# 保存文件
wb.save("example.xlsx")
# 读取现有文件
wb = load_workbook("example.xlsx")
ws = wb["Sheet1"]
print(ws['A1'].value) # 输出: Hello
处理多个 Sheet
# 添加新 Sheet
ws2 = wb.create_sheet("Sheet2")
ws2['B2'] = "New Sheet Data"
# 遍历所有 Sheet
for sheet in wb.sheetnames:
print(sheet)
设置单元格格式
from openpyxl.styles import Font, Alignment
cell = ws['A1']
cell.font = Font(name='Arial', size=12, bold=True, color="FF0000")
cell.alignment = Alignment(horizontal="center")
4. 使用 pandas 操作 Excel
读取和写入数据
import pandas as pd
# 读取 Excel
df = pd.read_excel("input.xlsx", sheet_name="Sheet1")
# 数据处理(示例:新增列)
df["New_Column"] = df["Existing_Column"] * 2
# 写入 Excel
df.to_excel("output.xlsx", index=False, sheet_name="Results")
# 解析上传的excel
def upload_excel():
# 读取excel
with open("a.xlsx", "rb") as f:
# 读取Excel文件,指定sheet_name
df = pd.read_excel(f, sheet_name="Sheet1")
# 遍历
for index, row in df.iterrows():
# 打印当前行数
print(f"index: {index}")
# 打印当前行的ID
print(f"row['ID']: {row['ID']}")
处理多个 Sheet
# 读取多 Sheet
with pd.ExcelFile("data.xlsx") as xls:
df1 = pd.read_excel(xls, "Sheet1")
df2 = pd.read_excel(xls, "Sheet2")
# 写入多 Sheet
with pd.ExcelWriter("output.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1", index=False)
df2.to_excel(writer, sheet_name="Sheet2", index=False)
5. 使用 xlrd/xlwt 操作旧版 Excel (.xls)
import xlrd
import xlwt
# 读取 .xls 文件
workbook = xlrd.open_workbook("old_data.xls")
sheet = workbook.sheet_by_index(0)
print(sheet.cell_value(0, 0)) # 输出 A1 的值
# 写入 .xls 文件
wb = xlwt.Workbook()
ws = wb.add_sheet("Sheet1")
ws.write(0, 0, "Hello")
wb.save("output.xls")
6. 常见问题
文件路径问题:确保路径正确,使用绝对路径或正确相对路径。
文件占用冲突:操作前关闭 Excel 程序,避免权限错误。
大文件处理:使用
openpyxl
的read_only
或write_only
模式优化性能。格式兼容性:
xlrd
2.0+ 不再支持.xlsx
,需降级到xlrd==1.2.0
。
7. 总结
简单读写:使用
pandas
(适合数据分析)。复杂格式:使用
openpyxl
或xlsxwriter
。旧版 .xls:使用
xlrd/xlwt
。
通过上述方法,可以高效地在 Python 中实现 Excel 的自动化操作。如需更高级功能(如公式、图表),可参考官方文档:
openpyxl 文档
pandas 文档
xlsxwriter 文档