当前位置:首页>python>Python办公自动化(一):Excel 文件处理完全指南

Python办公自动化(一):Excel 文件处理完全指南

  • 2026-09-10 22:57:13
Python办公自动化(一):Excel 文件处理完全指南

Python办公自动化(一):Excel 文件处理完全指南

引言

在日常办公中,Excel 是最常用的数据处理工具之一。无论是财务报表、销售数据还是人事档案,我们都离不开 Excel。本文将详细介绍如何使用 Python 自动化处理 Excel 文件,让你从繁琐的重复劳动中解放出来。

欢迎大家关注此公众号,后台留言"python书籍"可免费获取【Python办公自动化高清PDF】电子书一本

此外小庄推荐一本适合于新手\小白入手一本 Python基础书籍,欢迎大家订阅

环境准备

安装必要的库

pip install openpyxl pandas xlrd xlwt

主要库介绍

  • • openpyxl: 读写 Excel 2010+ (.xlsx) 文件
  • • pandas: 强大的数据处理和分析库
  • • xlrd/xlwt: 处理旧版 Excel 文件 (.xls)

基础操作

读取 Excel 文件

from openpyxl import load_workbook
import pandas as pd

# 方法一:使用 openpyxl
wb = load_workbook('data.xlsx')
ws = wb.active

# 读取单元格数据
print(ws['A1'].value)
print(ws.cell(row=2, column=1).value)

# 遍历所有行
for row in ws.iter_rows(values_only=True):
print(row)

# 方法二:使用 pandas(推荐)
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())

写入 Excel 文件

from openpyxl import Workbook

# 创建工作簿
wb = Workbook()
ws = wb.active
ws.title = "员工信息"

# 写入数据
ws['A1'] = "姓名"
ws['B1'] = "部门"
ws['C1'] = "工资"

employees = [
    ("张三", "技术部", 15000),
    ("李四", "销售部", 12000),
    ("王五", "财务部", 13000)
]

for idx, emp inenumerate(employees, start=2):
    ws[f'A{idx}'] = emp[0]
    ws[f'B{idx}'] = emp[1]
    ws[f'C{idx}'] = emp[2]

# 保存文件
wb.save('employee_data.xlsx')

实用案例

案例 1:批量合并多个 Excel 文件

import pandas as pd
import glob

defmerge_excel_files(folder_path, output_file):
"""合并指定文件夹下的所有 Excel 文件"""
    all_files = glob.glob(f"{folder_path}/*.xlsx")

    df_list = []
for file in all_files:
        df = pd.read_excel(file)
        df_list.append(df)

    merged_df = pd.concat(df_list, ignore_index=True)
    merged_df.to_excel(output_file, index=False)
print(f"已合并 {len(all_files)} 个文件到 {output_file}")

# 使用示例
merge_excel_files('./monthly_reports', 'annual_report.xlsx')

案例 2:数据筛选与统计

defanalyze_sales_data(file_path):
"""分析销售数据"""
    df = pd.read_excel(file_path)

# 筛选销售额大于 10000 的记录
    high_value = df[df['销售额'] > 10000]

# 按部门分组统计
    dept_summary = df.groupby('部门')['销售额'].sum().reset_index()

# 计算总体统计信息
    stats = {
'总销售额': df['销售额'].sum(),
'平均销售额': df['销售额'].mean(),
'最大订单': df['销售额'].max(),
'最小订单': df['销售额'].min()
    }

return high_value, dept_summary, stats

# 使用示例
high_value, summary, stats = analyze_sales_data('sales_2025.xlsx')
print(stats)

案例 3:自动生成月度报表

defgenerate_monthly_report(template_file, data_file, output_file):
"""根据模板和数据生成月度报表"""
from openpyxl import load_workbook

# 加载模板
    wb = load_workbook(template_file)
    ws = wb.active

# 读取数据
    df = pd.read_excel(data_file)

# 填充数据
    ws['B2'] = f"{df['月份'].iloc[0]}月报表"
    ws['D5'] = df['收入'].sum()
    ws['D6'] = df['支出'].sum()
    ws['D7'] = df['利润'].sum()

# 添加详细数据表
    start_row = 10
for idx, row in df.iterrows():
        ws[f'A{start_row + idx}'] = row['日期']
        ws[f'B{start_row + idx}'] = row['项目']
        ws[f'C{start_row + idx}'] = row['金额']

    wb.save(output_file)
print(f"报表已生成:{output_file}")

案例 4:Excel 格式美化

from openpyxl.styles import Font, PatternFill, Alignment, Border, Side

defformat_excel_beautiful(file_path):
"""美化 Excel 表格样式"""
    wb = load_workbook(file_path)
    ws = wb.active

# 定义样式
    title_font = Font(name='微软雅黑', size=16, bold=True, color='FFFFFF')
    header_font = Font(name='微软雅黑', size=11, bold=True)
    normal_font = Font(name='微软雅黑', size=10)

    blue_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
    light_blue_fill = PatternFill(start_color='D6DCE4', end_color='D6DCE4', fill_type='solid')

    center_alignment = Alignment(horizontal='center', vertical='center')

# 设置标题行
    ws.row_dimensions[1].height = 25
for cell in ws[1]:
        cell.font = title_font
        cell.fill = blue_fill
        cell.alignment = center_alignment

# 设置表头
    ws.row_dimensions[2].height = 20
for cell in ws[2]:
        cell.font = header_font
        cell.fill = light_blue_fill
        cell.alignment = center_alignment

# 设置列宽
    ws.column_dimensions['A'].width = 15
    ws.column_dimensions['B'].width = 20
    ws.column_dimensions['C'].width = 12

# 添加边框
    thin_border = Border(
        left=Side(style='thin'),
        right=Side(style='thin'),
        top=Side(style='thin'),
        bottom=Side(style='thin')
    )

for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
for cell in row:
            cell.border = thin_border

    wb.save(file_path)

高级技巧

数据验证

from openpyxl.worksheet.datavalidation import DataValidation

# 创建下拉列表
dv = DataValidation(type="list", formula1='"选项 A,选项 B,选项 C'")
ws.add_data_validation(dv)
dv.add('A1:A100')

# 数字范围验证
num_dv = DataValidation(type="
whole", operator="between", formula1="1", formula2="100")
ws.add_data_validation(num_dv)
num_dv.add('B1:B100')

条件格式

from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import Font

# 大于 10000 的值显示为红色
red_font = Font(color='FF0000')
rule = CellIsRule(operator='greaterThan', formula=['10000'], font=red_font)
ws.conditional_formatting.add('C1:C100', rule)

创建图表

from openpyxl.chart import BarChart, Reference

defcreate_chart(ws):
"""在 Excel 中创建柱状图"""
    chart = BarChart()
    chart.type = "col"
    chart.style = 10
    chart.title = "销售统计"
    chart.y_axis.title = '销售额'
    chart.x_axis.title = '月份'

    data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=12)
    cats = Reference(ws, min_col=1, min_row=2, max_row=12)

    chart.add_data(data, titles_from_data=True)
    chart.set_categories(cats)

    ws.add_chart(chart, "E1")

最佳实践

  1. 1. 使用 pandas 进行数据分析:pandas 提供了更简洁高效的数据操作接口
  2. 2. 保留原始数据备份:在修改前务必备份原文件
  3. 3. 异常处理:添加 try-except 块处理可能的错误
  4. 4. 资源释放:操作完成后及时保存并关闭工作簿
  5. 5. 性能优化:对于大文件,使用 read_only 和 write_only 模式

常见问题解决

问题 1:中文乱码

# 确保系统编码正确,使用 UTF-8
df.to_excel('output.xlsx', engine='openpyxl', encoding='utf-8')

问题 2:文件格式不支持

# .xls 文件使用 xlrd 读取
df = pd.read_excel('old_file.xls', engine='xlrd')

# .xlsx 文件使用 openpyxl
df = pd.read_excel('new_file.xlsx', engine='openpyxl')

问题 3:内存不足

# 分块读取大文件
chunk_iter = pd.read_excel('large_file.xlsx', chunksize=1000)
for chunk in chunk_iter:
    process(chunk)

总结

通过本文的学习,你已经掌握了使用 Python 处理 Excel 文件的核心技能。从基本的读写操作到复杂的数据分析,这些技巧将极大提升你的办公效率。记住,自动化的关键在于找到重复性工作的规律,然后用代码将其固化下来。

在下一篇文章中,我们将学习如何使用 Python 处理 Word 文档,敬请期待!

练习作业

  1. 1. 编写一个脚本,将多个 Excel 文件合并为一个
  2. 2. 创建一个销售数据分析报表,包含统计信息和图表
  3. 3. 设计一个带有格式美化的员工信息表

如果你觉得这篇文章有帮助,欢迎分享给更多需要的朋友!

最新文章

随机文章