在 Python 中操作 Excel 有多种方式,常用的库包括 openpyxlpandasxlrd/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. 常见问题​

  1. 文件路径问题​:确保路径正确,使用绝对路径或正确相对路径。

  2. 文件占用冲突​:操作前关闭 Excel 程序,避免权限错误。

  3. 大文件处理​:使用 openpyxl 的 read_only 或 write_only 模式优化性能。

  4. 格式兼容性​:xlrd 2.0+ 不再支持 .xlsx,需降级到 xlrd==1.2.0


​7. 总结​

  • 简单读写​:使用 pandas(适合数据分析)。

  • 复杂格式​:使用 openpyxl 或 xlsxwriter

  • 旧版 .xls​:使用 xlrd/xlwt

通过上述方法,可以高效地在 Python 中实现 Excel 的自动化操作。如需更高级功能(如公式、图表),可参考官方文档:

  • openpyxl 文档

  • pandas 文档

  • xlsxwriter 文档