Python Excel文件操作全攻略

发布于:2025-03-29 ⋅ 阅读:(29) ⋅ 点赞:(0)

一、常用Python操作Excel库

1. 常用库对比

库名称 支持格式 主要功能 适用场景
pandas xls/xlsx 数据读写/分析 数据分析与批量处理
openpyxl xlsx 读写/修改/样式设置 复杂Excel文件操作
xlrd/xlwt xls 读写旧版Excel 兼容性要求高的场景
xlsxwriter xlsx 创建文件/设置复杂格式 生成报表/图表

2.​xlrd/xlwt

  • 适用场景:处理.xls格式的旧版Excel文件
  • 核心功能:
    • xlrd读取文件
    • xlwt写入文件
    • xlutils修改已有文件
  • 示例
# 读取xls文件
import xlrd  
# 打开 excel 文件
wb = xlrd.open_workbook('数据.xls')  
# 获取 sheet 对象
sheet = wb.sheet_by_index(0)  
# 读取坐标为 0,0 格的值
print(sheet.cell_value(0, 0))  

# 写入xls文件
import xlwt  
wb = xlwt.Workbook()  
# 添加 一个 sheet
sheet = wb.add_sheet('Sheet1')  
# 写入坐标为 0,0 格的值 Hello
sheet.write(0, 0, 'Hello')  
# 保存表格
wb.save('output.xls')  

3. ​openpyxl

  • 适用场景:处理.xlsx格式,支持读写与样式修改
  • 核心功能
    • 创建/修改工作簿
    • 单元格样式调整(字体、颜色、边框)
    • 公式计算与图表生成
  • 示例
## 读取文件
# 创建带格式的Excel
from openpyxl import load_workbook

wb = load_workbook("data.xlsx")
sheet = wb["Sheet1"]

# 遍历单元格
for row in sheet.iter_rows(min_row=2, values_only=True):
    print(row[0], row[1])  # 输出前两列数据

# 获取特定单元格
cell_b5 = sheet["B5"].value

wb = Workbook()
sheet = wb.active
sheet.title = "销售数据"

# 设置标题样式
title_font = Font(bold=True, size=14)
sheet["A1"] = "2023年销售报表"
sheet["A1"].font = title_font

## 写入数据
headers = ["月份", "销售额"]
data = [
    ["1月", 150000],
    ["2月", 180000],
    ["3月", 210000]
]

sheet.append(headers)
for row in data:
    sheet.append(row)

# 设置对齐方式
for row in sheet.iter_rows(min_row=2):
    for cell in row:
        cell.alignment = Alignment(horizontal="center")

wb.save("sales_report.xlsx")

4. ​pandas

  • 适用场景:数据清洗、分析与快速批处理
  • 核心优势
    • 一行代码读取/写入Excel
    • 支持合并多个文件(pd.concat
    • 内置数据透视表功能
  • 示例
# 读取文件
import pandas as pd

# 读取整个文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")

# 读取指定范围
df_range = pd.read_excel("data.xlsx", 
                        usecols="A:C",  # 读取A-C列
                        nrows=100)      # 前100行

# 处理多个sheet
with pd.ExcelFile("data.xlsx") as excel:
    df1 = pd.read_excel(excel, "Sheet1")
    df2 = pd.read_excel(excel, "Sheet2")

## 写入文件
# 创建DataFrame
data = {
    "姓名": ["张三", "李四", "王五"],
    "年龄": [25, 30, 28],
    "部门": ["技术部", "市场部", "财务部"]
}
df = pd.DataFrame(data)

# 写入Excel(自动创建文件)
with pd.ExcelWriter("output.xlsx") as writer:
    df.to_excel(writer, sheet_name="员工信息", index=False)
    
    # 追加第二个sheet
    df.describe().to_excel(writer, sheet_name="统计信息")

# 合并多个Excel
import pandas as pd  
all_files = glob.glob("*.xlsx")  
merged_df = pd.concat([pd.read_excel(f) for f in all_files])