用Python处理Excel,3小时的工作量3秒就能搞定
下午三点,当一份包含上百个文件的销售数据统计任务突然摆到面前,并且要求“下班前交活儿”时,那种熟悉的窒息感是不是又回来了?
接下来的流程几乎可以预判:机械地打开第一个文件,复制、粘贴、求和……重复到第50次时,大脑已经一片空白。
这种场景,恐怕每位职场人都心有戚戚:每天被枯燥的表格格式调整、数据填报和结果汇总所淹没;耗费数小时手动操作,眼睛酸痛不说,最后还容易出错;而当你还在埋头苦干时,隔壁的同事早已收拾妥当,准时打卡下班。
是时候停止这种低效的自我消耗了。
借助Python,那些动辄数小时的Excel重复性工作,完全有可能在几秒钟内自动完成。下面,我们就来系统地看看,如何用Python实现Excel的自动化处理,真正让你解放双手,高效办公。

一、引言:为什么你还在手动改Excel?
下午3点,领导扔给你100个Excel文件:“把这些销售数据统计一下,下班前给我。”
你深吸一口气,打开第一个文件,复制、粘贴、求和... 重复了第50次后,你开始怀疑人生。
这种场景是不是很眼熟?
- 每天要重复处理同样的表格,改格式、填数据、汇总结果
- 手动复制粘贴改了3小时,眼睛都花了,结果还tm报错
- 同事准时下班摸鱼,你还在苦逼地改表格
别再折磨自己了!
用Python处理Excel,3小时的工作量3秒就能搞定。今天小甲鱼就手把手教你,用Python实现Excel自动化处理,让你准时下班!
二、正文
1. 环境准备:两个库搞定一切
要让Python与Excel对话,其实只需两个核心库就足够了。
pip install openpyxl pandas
- openpyxl:专门用于读写.xlsx格式的Excel文件,性能出色,功能全面,尤其擅长处理单元格格式。
- pandas:数据分析领域的“瑞士军刀”,在进行数据汇总、筛选和分析时堪称神器。
对了,如果你的数据源是旧版的.xls格式文件,那么可能需要额外安装 xlrd 和 xlwt 这两个库来兼容。
2. 读取Excel:一行代码搞定
还在一个个双击文件图标?读取Excel文件,在Python里真正可以做到一行代码完成。
import pandas as pd
# 读取Excel文件
df = pd.read_excel('销售数据.xlsx')
print(df.head()) # 查看前5行
print(df.shape) # 查看数据规模
如果需要读取特定的工作表,或者一次性读取多个表,方法同样直观:
# 读取指定Sheet
df = pd.read_excel('销售数据.xlsx', sheet_name='2024年1月')
# 一次性读取多个Sheet,返回一个字典
df_dict = pd.read_excel('销售数据.xlsx', sheet_name=['Sheet1', 'Sheet2'])
3. 写入Excel:想怎么写就怎么写
数据处理完毕,如何优雅地存回Excel?方法和读取一样简洁。
import pandas as pd
# 假设我们生成了处理后的数据
data = {
'姓名': ['张三', '李四', '王五'],
'销售额': [10000, 25000, 18000],
'提成': [1000, 2500, 1800]
}
df = pd.DataFrame(data)
# 保存到Excel,不保存索引,并指定工作表名称
df.to_excel('员工提成表.xlsx', index=False, sheet_name='提成明细')
print(“保存成功!”)
如果想把多个数据框写入同一个Excel文件的不同工作表,可以这样做:
with pd.ExcelWriter('汇总表.xlsx') as writer:
df1.to_excel(writer, sheet_name=‘1月’, index=False)
df2.to_excel(writer, sheet_name=‘2月’, index=False)
4. 实战场景:批量处理100个文件
批量处理,才是自动化的精髓所在。想象一下,有一百个销售数据文件需要分别计算总额,手动操作简直不敢想。但用Python,不过是一个循环的事儿。
import pandas as pd
import os
from pathlib import Path
# 获取当前目录下所有xlsx文件
files = list(Path('.').glob(‘*.xlsx’))
results = []
for file in files:
try:
df = pd.read_excel(file)
# 假设销售额列名叫“销售额”
total = df[‘销售额'].sum()
results.append({
‘文件名': file.name,
‘销售总额': total
})
print(f”✓ {file.name} 处理完成,总额: {total}”)
except Exception as e:
print(f”✗ {file.name} 处理失败: {e}”)
# 将汇总结果保存为新的Excel
result_df = pd.DataFrame(results)
result_df.to_excel(‘汇总结果.xlsx’, index=False)
print(“\n? 全部处理完成!汇总结果已保存”)
运行这段代码后,控制台会清晰地展示处理进度:
✓ 1月销售.xlsx 处理完成,总额: 150000
✓ 2月销售.xlsx 处理完成,总额: 180000
✓ 3月销售.xlsx 处理完成,总额: 165000
? 全部处理完成!汇总结果已保存
5. 进阶技巧:数据清洗一步到位
现实中的数据往往杂乱无章,充斥着空值、重复项和错误格式。别担心,这些清洗工作也能一站式完成。
import pandas as pd
df = pd.read_excel(‘原始数据.xlsx’)
# 1. 删除完全重复的行
df = df.drop_duplicates()
# 2. 填充空值,例如将销售额的空值填为0
df[‘销售额'] = df[‘销售额'].fillna(0)
# 3. 筛选符合条件的行,比如只看销售额大于1000的
df = df[df[‘销售额'] > 1000]
# 4. 按条件分组汇总,例如按部门统计销售额总计
summary = df.groupby(‘部门')[‘销售额'].sum().reset_index()
# 5. 保存清洗后的结果
summary.to_excel(‘清洗后数据.xlsx’, index=False)
print(“数据清洗完成!”)
6. 格式设置:让Excel更好看
用pandas直接导出的表格可能略显朴素。想让报表看起来更专业、更美观,就需要请出openpyxl来设置格式了。
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Alignment
# 先用pandas处理并保存数据
df = pd.read_excel(‘销售数据.xlsx’)
df.to_excel(‘处理后.xlsx’, index=False)
# 再用openpyxl加载文件,设置格式
wb = load_workbook(‘处理后.xlsx’)
ws = wb.active
# 设置表头样式 - 蓝色背景加粗体白字
header_fill = PatternFill(start_color=‘4472C4’, end_color=‘4472C4’, fill_type=‘solid’)
header_font = Font(bold=True, color=‘FFFFFF’)
for cell in ws[1]: # 第一行是表头
cell.fill = header_fill
cell.font = header_font
cell.alignment = Alignment(horizontal=‘center’)
# 自动调整所有列的宽度,使内容完全显示
for column in ws.columns:
max_length = 0
column_letter = column[0].column_letter
for cell in column:
try:
if len(str(cell.value)) > max_length:
max_length = len(str(cell.value))
except:
pass
adjusted_width = (max_length + 2) * 1.2
ws.column_dimensions[column_letter].width = adjusted_width
wb.save(‘格式化后.xlsx’)
print(“格式设置完成,文件已保存!”)
三、总结
回顾一下今天梳理的核心技能:
- 读取Excel - 一个
pd.read_excel()函数即可打开数据世界。 - 写入Excel - 通过
df.to_excel(),可以灵活地将数据持久化保存。 - 批量处理 - 利用循环结构,轻松实现海量文件的自动化操作。
- 数据清洗 - 删除重复值、填充空值、筛选与分组,化杂乱为整洁。
- 格式美化 - 结合openpyxl,让输出的表格兼具专业性和可读性。
说到底,用Python处理Excel的核心逻辑就是把那些重复、繁琐且易错的操作,封装成简短可靠的代码。将时间从无效的重复劳动中解放出来,这才是提升工作效率的关键。
