在 Python 中使用第三方库来操作电子表格文件

在 Python 中操作电子表格文件(如 Excel)通常会使用第三方库,以下是几种常见场景和对应库的使用方法:

1. 使用 pandas 进行基础操作

适用场景:快速处理数据、导出/导入表格。
安装pip install pandas openpyxl(openpyxl 用于处理 .xlsx 文件)

import pandas as pd

# 创建数据
data = {
    '姓名': ['张三', '李四'],
    '年龄': [20, 21],
    '成绩': [85.5, 90.0]
}

# 创建 DataFrame
df = pd.DataFrame(data)

# 导出到 Excel
df.to_excel('students.xlsx', index=False, sheet_name='学生信息')

# 从 Excel 读取
df_read = pd.read_excel('students.xlsx')
print(df_read)

特点

  • 简单易用,适合数据分析。
  • 自动处理表头和索引。
  • 支持多种格式:CSV、Excel、JSON 等。

2. 使用 openpyxl 进行高级 Excel 操作

适用场景:复杂格式设置、公式计算、图表生成。
安装pip install openpyxl

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment

# 创建工作簿和工作表
wb = Workbook()
ws = wb.active
ws.title = "学生信息"

# 设置表头
headers = ["序号", "姓名", "年龄", "成绩"]
ws.append(headers)

# 设置表头样式
for cell in ws[1]:
    cell.font = Font(bold=True)
    cell.alignment = Alignment(horizontal="center")

# 添加数据
students = [
    (1, "张三", 20, 85.5),
    (2, "李四", 21, 90.0)
]

for row in students:
    ws.append(row)

# 设置列宽
for col_letter in ['A', 'B', 'C', 'D']:
    ws.column_dimensions[col_letter].width = 15

# 添加公式(计算平均成绩)
ws['E1'] = "平均成绩"
ws['E2'] = "=AVERAGE(D2:D3)"  # 计算平均成绩

# 保存文件
wb.save("students_advanced.xlsx")

特点

  • 直接操作 Excel 对象(工作表、单元格、样式)。
  • 支持公式、图表、条件格式等高级功能。
  • 适合需要精细控制 Excel 文件的场景。

3. 使用 xlwings 连接 Python 与 Excel

适用场景:与打开的 Excel 文件交互、自动化操作。
安装pip install xlwings

import xlwings as xw

# 连接到 Excel(打开或新建)
wb = xw.Book()
sheet = wb.sheets[0]

# 写入数据
sheet.range('A1').value = [
    ["姓名", "年龄", "成绩"],
    ["张三", 20, 85.5],
    ["李四", 21, 90.0]
]

# 读取数据
data = sheet.range('A1:C3').value
print(data)

# 保存并关闭
wb.save("students_xlwings.xlsx")
wb.close()

特点

  • 可以操作正在运行的 Excel 实例。
  • 支持 VBA 宏和 Excel 函数。
  • 适合需要实时交互的场景(如数据可视化)。

4. 使用 xlrdxlwt(旧版 Excel 文件)

适用场景:处理 .xls 格式文件。
安装pip install xlrd xlwt

import xlwt
import xlrd

# 写入 .xls 文件
wb = xlwt.Workbook()
sheet = wb.add_sheet('Sheet1')

sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年龄')
sheet.write(1, 0, '张三')
sheet.write(1, 1, 20)

wb.save('students_old.xls')

# 读取 .xls 文件
wb_read = xlrd.open_workbook('students_old.xls')
sheet = wb_read.sheet_by_index(0)
print(sheet.cell_value(1, 0))  # 输出:张三

注意

  • xlrd 从 2.0.0 版本起不再支持 .xlsx,需使用 openpyxl

选择建议

  • 快速导出/导入:用 pandas
  • 复杂格式/公式:用 openpyxl
  • 实时交互/自动化:用 xlwings
  • 旧版 .xls 文件:用 xlrdxlwt

常见操作对比

功能 pandas openpyxl xlwings
读取数据 pd.read_excel() 遍历单元格 sheet.range().value
写入数据 df.to_excel() sheet.cell().value sheet.range().value
设置样式 有限支持 完全支持 完全支持
公式计算 需手动写入 sheet['A1'] = '=SUM(B1:B10)' 支持 Excel 函数
图表生成 需配合 matplotlib 支持 支持

根据具体需求选择合适的库,可以大幅提高电子表格处理效率!

posted @ 2025-07-04 17:45  nxhujiee  阅读(58)  评论(0)    收藏  举报