Python Excel案例如何操作Excel表格

wen python案例 26

Python Excel案例:如何用Python高效操作Excel表格(完整实战指南)

📚 目录导读

  1. 为什么选择Python操作Excel?
  2. 环境准备与库安装
  3. 读取Excel数据(经典案例)
  4. 写入与更新Excel表格
  5. 样式设置与格式处理
  6. 实战案例:自动化报表生成
  7. 常见问题问答(Q&A)
  8. 总结与扩展建议

为什么选择Python操作Excel?

在日常办公中,Excel是最常用的数据处理工具,当面对大量重复性操作(如数据清洗、批量合并、定期报表生成)时,手动操作效率低下且易出错,Python凭借其强大的第三方库(如openpyxlpandasxlrd/xlwt),能够实现:

Python Excel案例如何操作Excel表格

  • 自动化处理:秒级完成千行数据的读取、筛选、计算。
  • 跨平台兼容:在Windows、macOS、Linux上均可运行。
  • 与数据库联动:轻松将Excel数据导入/导出至SQL、CSV等格式。

核心库对比openpyxl支持.xlsx格式的读写与样式(推荐企业使用);pandas擅长数据分析与表格整合;xlrd/xlwt适合旧版.xls文件(已逐步淘汰)。


环境准备与库安装

1 安装必要库

打开终端或命令行,执行以下命令(建议使用Python 3.7+):

pip install openpyxl pandas xlsxwriter
  • openpyxl:读写.xlsx文件,支持样式、图表。
  • pandas:高效数据处理,配合openpyxl写入Excel。
  • xlsxwriter:高级功能(如条件格式、图表)。

2 数据结构理解

Python操作Excel的核心是 工作簿(Workbook)→ 工作表(Worksheet)→ 单元格(Cell) 的层级关系。


读取Excel数据(经典案例)

1 基础读取(openpyxl方式)

假设有一个销售数据.xlsx文件,包含“日期”、“产品”、“销售额”三列,代码如下:

import openpyxl
# 加载工作簿
wb = openpyxl.load_workbook('销售数据.xlsx')
# 获取活动工作表(或指定名称:wb['Sheet1'])
ws = wb.active
# 读取整表数据
for row in ws.iter_rows(min_row=1, values_only=True):
    print(row)  # 输出每行元组

2 读取特定区域(pandas方式)

pandasread_excel函数更直观:

import pandas as pd
df = pd.read_excel('销售数据.xlsx', sheet_name='Sheet1', usecols='A:C')
print(df.head())  # 显示前5行

重点:当数据量超过10万行时,建议使用pandaschunksize参数分块读取,避免内存溢出。


写入与更新Excel表格

1 新建并写入数据(openpyxl)

from openpyxl import Workbook
wb = Workbook()
ws = wb.active= "月度报表"
# 写入表头
headers = ['月份', '收入', '成本']
ws.append(headers)
# 写入多行数据
data = [['1月', 50000, 30000], ['2月', 55000, 32000]]
for row in data:
    ws.append(row)
wb.save('报表_2024.xlsx')

2 更新已有文件(追加或修改)

# 打开已有文件
wb = openpyxl.load_workbook('报表_2024.xlsx')
ws = wb.active
# 修改指定单元格(B2单元格改为60000)
ws['B2'] = 60000
# 在末尾追加新行
ws.append(['3月', 62000, 35000])
wb.save('报表_2024.xlsx')  # 覆盖保存

样式设置与格式处理

1 设置单元格格式(字体、背景、对齐)

from openpyxl.styles import Font, PatternFill, Alignment
ws['A1'].font = Font(name='微软雅黑', size=12, bold=True, color='FFFFFF')
ws['A1'].fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')

2 自动调整列宽

# 遍历列,根据内容自适应宽度
for col in ws.columns:
    max_length = 0
    column_letter = col[0].column_letter
    for cell in col:
        if cell.value:
            max_length = max(max_length, len(str(cell.value)))
    ws.column_dimensions[column_letter].width = max_length + 2

实战案例:自动化报表生成

需求描述

每周需从原始数据订单明细.csv中,按“区域”汇总销售额,并输出格式化Excel报表。

代码实现(含注释)

import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
# 1. 读取CSV数据
df = pd.read_csv('订单明细.csv')
# 2. 按区域分组汇总
summary = df.groupby('区域')['销售额'].sum().reset_index()
summary.columns = ['区域', '总销售额']
# 3. 创建Excel并写入
wb = Workbook()
ws = wb.active= "区域汇总"
# 写入表头
ws.append(['区域', '总销售额'])
header_fill = PatternFill(start_color='FFC000', end_color='FFC000', fill_type='solid')
header_font = Font(bold=True, size=11)
for cell in ws[1]:
    cell.fill = header_fill
    cell.font = header_font
    cell.alignment = Alignment(horizontal='center')
# 写入数据
for _, row in summary.iterrows():
    ws.append([row['区域'], row['总销售额']])
# 自动列宽
for col in ws.columns:
    max_len = max(len(str(cell.value)) if cell.value else 0 for cell in col)
    ws.column_dimensions[col[0].column_letter].width = max_len + 4
# 保存文件
wb.save('区域销售报表.xlsx')
print("报表生成成功!")

常见问题问答(Q&A)

Q1:为什么我读取的Excel数据带有多余的空行或None值?

A:可能是Excel末尾存在空白行,建议在iter_rows()时指定max_row,或使用pandasdropna()方法过滤。

Q2:如何保存后保留Excel中原有的图表和格式?

A:推荐使用openpyxl打开原文件后追加写入(不新建),但注意openpyxl对部分旧版图表支持有限,若图表复杂,可考虑xlwings库直接调用Excel应用程序。

Q3:处理超大Excel文件(超1GB)时内存不足怎么办?

A:使用openpyxl只读模式read_only=True)或pandaschunksize分块处理,避免一次性加载全部数据。

Q4:openpyxl与xlsxwriter哪个更适合写入?

Axlsxwriter写入速度更快,且支持更复杂的功能(如数据验证、缩放比例),但无法读取已有文件openpyxl读写均衡,日常使用足够。

Q5:如何让Python操作Excel时保留原有的公式?

Aopenpyxl可以读取公式(cell.data_type=='f'),但写入公式需使用字符串形式:ws['A1'].value = '=SUM(B1:B10)',保存后Excel会自动计算。


总结与扩展建议

本文通过多个案例,演示了Python操作Excel的核心场景:从数据读取、写入更新到样式设置,再到自动化报表生成,掌握这些技能后,你可以:

  • 将重复性Excel任务(如日报、周报)完全自动化。
  • 结合matplotlibplotly在Excel中插入动态图表。
  • 使用pandas进行更复杂的数据透视与合并。

建议下一步学习

  • xlwings:直接操控Excel应用程序,适合需要VBA宏替代的场景。
  • pyxlsb:处理二进制格式(.xlsb)的高性能文件。

通过Python与Excel的结合,你将彻底摆脱机械化的表格操作,释放时间专注于更深度的数据分析与决策。


注意:本文案例代码均基于Python 3.10+、openpyxl 3.1.2版本测试通过,若遇操作错误,请检查库版本或数据文件路径。

抱歉,评论功能暂时关闭!