引言:为什么你还在手动改Excel?
下午3点,领导扔给你100个Excel文件:"把这些销售数据统计一下,下班前给我。"
你深吸一口气,打开第一个文件,复制、粘贴、求和... 重复了第50次后,你开始怀疑人生。
这种场景是不是很眼熟?
- • 每天要重复处理同样的表格,改格式、填数据、汇总结果
- • 手动复制粘贴改了3小时,眼睛都花了,结果还tm报错
别再折磨自己了!
用Python处理Excel,3小时的工作量3秒就能搞定。今天小甲鱼就手把手教你,用Python实现Excel自动化处理,让你准时下班!
正文
1️⃣ 环境准备:两个库搞定一切
Python处理Excel,只需要两个库:
pip install openpyxl pandas
- • openpyxl:读写Excel xlsx格式,性能好,功能全
- • pandas:数据处理神器,适合做分析、汇总、筛选
💡 小甲鱼温馨提示:如果你的Excel是老旧的xls格式,需要额外安装 xlrd 和 xlwt
2️⃣ 读取Excel:一行代码搞定
还在一个个双击打开文件?Python读取Excel只需一行:
import pandas as pd
# 读取Excel文件
df = pd.read_excel('销售数据.xlsx')
print(df.head()) # 查看前5行
print(df.shape) # 查看数据规模
如果想指定Sheet:
# 读取指定Sheet
df = pd.read_excel('销售数据.xlsx', sheet_name='2024年1月')
# 读取多个Sheet
df_dict = pd.read_excel('销售数据.xlsx', sheet_name=['Sheet1', 'Sheet2'])
3️⃣ 写入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("保存成功!")
如果想写入多个Sheet:
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个文件
这才是真·自动化!
假设你有一堆Excel文件,需要统计每个文件的销售总额:
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}")
# 汇总结果保存
result_df = pd.DataFrame(results)
result_df.to_excel('汇总结果.xlsx', index=False)
print("\n🎉 全部处理完成!汇总结果已保存")
运行结果:
✓ 1月销售.xlsx 处理完成,总额: 150000
✓ 2月销售.xlsx 处理完成,总额: 180000
✓ 3月销售.xlsx 处理完成,总额: 165000
🎉 全部处理完成!汇总结果已保存
5️⃣ 进阶技巧:数据清洗一步到位
日常工作中,Excel数据往往很乱:空值、重复行、格式不对...
import pandas as pd
df = pd.read_excel('原始数据.xlsx')
# 1. 删除重复行
df = df.drop_duplicates()
# 2. 填充空值
df['销售额'] = df['销售额'].fillna(0)
# 3. 筛选符合条件的行
df = df[df['销售额'] > 1000]
# 4. 按条件分组汇总
summary = df.groupby('部门')['销售额'].sum().reset_index()
# 5. 保存结果
summary.to_excel('清洗后数据.xlsx', index=False)
print("数据清洗完成!")
6️⃣ 格式设置:让Excel更好看
用pandas保存的Excel比较朴素,想让它看起来更专业?
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:
iflen(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("格式设置完成,文件已保存!")
总结
今天我们学会了:
- 1. 读取Excel -
pd.read_excel() 一行搞定 - 2. 写入Excel -
df.to_excel() 想怎么存就怎么存
Python处理Excel的核心就在于:把重复性的工作交给代码,把时间留给自己!
行动引导
📢 评论区留言:你在工作中遇到过哪些Excel处理的痛点?小甲鱼下一期专门安排!
👍 点赞:觉得有用就点个赞
📁 收藏:防止找不到这篇干货
🔔 关注:解锁更多Python实战技巧
我是小甲鱼,带你用Python搞定一切重复工作!
本文由Python小甲鱼原创,抄袭必究