Python处理Excel的5个“神仙库”,办公效率直接翻倍!

大家好,这里是程序员晚枫。

还在手动录入Excel到深夜?百份表格批量改格式改到手腕发酸?跨表核对数据反复出错返工?打工人别硬扛了!Python里藏着5个处理Excel的"神仙库"------从基础读写、批量分析到格式美化,全场景覆盖,直接帮你省出2小时摸鱼时间!下面逐个拆解,按需捡走~

一、openpyxl:.xlsx处理的"入门首选"

openpyxl是Python处理Excel 2010+版本(.xlsx/.xlsm)的"入门界顶流"------纯Python开发,Windows、Mac、Linux都能用,API设计得清爽不绕弯,官方文档还带详细示例。新手花半小时跟着示例敲代码,就能搞定基础操作,日常办公的读写、改格式需求基本都能cover。

核心功能

基础操作全拿捏:创建/打开工作簿、工作表;轻松搞定单元格数据的读写和修改;字体(加粗、变色、调字号)、对齐方式、边框、背景色这些格式随便改;合并单元格、冻结窗格也能实现;还支持"读写模式优化",打开大文件不卡顿。

优缺点

优点很实在:免费开源不花钱,跨平台不用挑电脑,新手看示例就会用,还不用装Microsoft Excel;优化后能扛大文件,处理几MB的表格也不卡。缺点也得提:只认.xlsx系列格式,老掉牙的.xls文件打不开;想做复杂图表的话,它就有点力不从心了。

适用场景

日常办公直接用:比如给程序员晚枫的员工信息表统一加表头颜色、加粗标题;批量更新表格里的固定字段(像全公司部门调整,一键改完);或者简单读写.xlsx文件,替代手动复制粘贴。

安装与示例

安装超简单,命令行敲一行:pip install openpyxl

给新手整个"创建带格式表格"的实用示例,复制就能跑:

python 复制代码
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill

# 新建工作簿和工作表
wb = Workbook()
ws = wb.active
ws.title = "程序员晚枫的员工信息表"  # 给工作表改个名

# 写表头+加样式(加粗白字+蓝色背景)
headers = ["姓名", "部门", "入职日期"]
for col, header in enumerate(headers, 1):
    cell = ws.cell(row=1, column=col, value=header)
    cell.font = Font(bold=True, color="FFFFFF")  # 加粗白字
    cell.fill = PatternFill(start_color="4472C4", fill_type="solid")  # 蓝色背景

# 写数据
data = [["张三", "研发部", "2025-01-15"], ["李四", "市场部", "2025-02-20"]]
for row, row_data in enumerate(data, 2):  # 从第2行开始写数据
    for col, value in enumerate(row_data, 1):
        ws.cell(row=row, column=col, value=value)

# 保存文件(直接生成在当前文件夹)
wb.save("程序员晚枫的员工信息表.xlsx")

二、xlrd/xlwt:旧版.xls的"专属搭档"

xlrd和xlwt是处理"老古董".xls文件的"黄金搭档"------分工超明确:xlrd负责读.xls数据,xlwt负责写.xls文件,再配个xlutils库,还能改已有.xls文件,完美解决旧格式兼容问题。重点提醒:xlrd 2.0以上版本不支持.xlsx,要处理旧文件得装1.2.0版本。

核心功能

核心能力精准匹配旧格式:xlrd能读.xls的工作表、单元格数据,还能算出行数列数,按需加载工作表省内存;xlwt能新建.xls,写数据时加基础格式(加粗、边框),合并单元格也能用;xlutils就是"粘合剂",让xlrd读的内容能通过xlwt修改。

优缺点

优点就是"专":专为.xls设计,老报表打开不乱码,兼容性拉满;体积小运行快,轻量不占资源。缺点也明显:xlrd不支持新格式.xlsx,xlwt写的文件最多只能放65536行(超了会报错);高级格式和图表基本做不了,只能满足基础需求。

适用场景

适配场景很明确:公司整理历史档案,一堆2010年前的.xls报表要提取数据;批量汇总多个旧版销售报表的关键数据;生成不超过6万行的旧格式报表(比如给还在用老Excel的客户发文件)。

安装与示例

安装要指定xlrd版本,命令行敲:pip install xlrd==1.2.0 xlwt xlutils

最常用的"读旧版.xls"示例,复制即用:

python 复制代码
import xlrd

# 打开旧版.xls文件(路径换成自己的)
workbook = xlrd.open_workbook("旧版销售数据.xls")
# 取第一个工作表(也能按名字取:sheet_by_name("1月销售"))
worksheet = workbook.sheet_by_index(0)

# 读表头(第一行)
headers = [worksheet.cell_value(0, col) for col in range(worksheet.ncols)]
print("表头:", headers)

# 读所有数据行(跳过表头)
for row in range(1, worksheet.nrows):
    row_data = [worksheet.cell_value(row, col) for col in range(worksheet.ncols)]
    print(f"第{row}行数据:", row_data)

三、pandas:Excel数据处理的"效率王者"

pandas虽不是专门为Excel设计的,但处理Excel批量数据的能力,堪称办公界的"天花板"!它能用"DataFrame"表格格式加载Excel数据,筛选、排序、汇总都是秒级完成,再搭openpyxl或xlrd当"引擎",新旧格式都能搞定。

核心功能

批量操作是强项:单份/多份Excel一键读取,还能指定读某张工作表;用DataFrame做数据筛选、去重、分组统计(比如按区域算销售额),甚至补缺失值;多表合并也轻松(比如把业绩表和考勤表按员工ID拼在一起);处理完的数据直接写回Excel,还能分拆到不同工作表。

优缺点

优点太香了:批量数据处理速度飞起,一行代码搞定人工几小时的统计;多表合并、数据清洗这些复杂操作不用写循环;新旧格式都兼容。缺点也得接受:对Excel的格式(字体、颜色)控制很弱,想美化报表得换别的库;新手要先学下DataFrame的基础用法(不难,半小时入门)。

适用场景

办公场景高频用:月度销售数据汇总(按区域、产品统计);十几份Excel报表合并去重(比如各门店的销售表汇总成全国表);清洗数据(删除空行、修正错误格式);生成数据透视表风格的统计结果(比Excel手动拖更灵活)。

安装与示例

安装要带引擎(处理.xlsx用openpyxl):pip install pandas openpyxl

打工人最常用的"多表汇总"示例,超实用:

python 复制代码
import pandas as pd

# 要汇总的Excel文件列表(换成自己的文件名)
file_names = ["1月销售.xlsx", "2月销售.xlsx"]
# 批量读取所有文件并合并成一个表格
all_data = pd.concat([
    pd.read_excel(file, engine="openpyxl")  # 用openpyxl当引擎读.xlsx
    for file in file_names
])

# 按"区域"汇总"销售额"(表格要真有这两列哦)
sales_summary = all_data.groupby("区域")["销售额"].sum().reset_index()

# 写回新Excel,分两个工作表存
with pd.ExcelWriter("季度销售汇总.xlsx", engine="openpyxl") as writer:
    all_data.to_excel(writer, sheet_name="原始数据", index=False)  # 存原始数据
    sales_summary.to_excel(writer, sheet_name="区域汇总", index=False)  # 存汇总结果

print("汇总完成!直接打开'季度销售汇总.xlsx'看结果~")

四、xlsxwriter:Excel格式美化的"颜值担当"

xlsxwriter是Excel"颜值担当"------虽然不能读Excel文件,但做格式美化和图表的能力拉满!单元格格式、条件格式、数据验证都能精细控制,还能做折线图、柱状图这些专业图表,生成的Excel报表堪比专业排版,拿去给老板汇报超有面。

核心功能

美化能力拉满:字体、颜色、边框、背景色想怎么调就怎么调;条件格式超实用(比如销售额低于5万标红预警);还能限制单元格输入(比如只能填数字);生成的图表带标题、图例、数据标签,比Excel手动做的还规整;插入图片、超链接也没问题。

优缺点

优点就是"美且强":格式控制精细到像素,图表专业度高;支持内存优化,生成几十MB的大报表也不崩;API清晰,看示例就会用。缺点也明确:只能新建Excel,不能读也不能改已有文件;只认.xlsx,老格式.xls不支持。

适用场景

汇报场景必用:做月度业绩报表,加个专业柱状图;做库存预警表,低于安全库存自动标红;做公司统一的报销单、申请表模板,格式固定不混乱。

安装与示例

安装一行命令:pip install xlsxwriter

给新手整个"带条件格式+图表"的汇报报表示例:

python 复制代码
import xlsxwriter

# 新建工作簿和工作表
workbook = xlsxwriter.Workbook("业绩报表.xlsx")
worksheet = workbook.add_worksheet("销售趋势")  # 工作表命名

# 定义样式(表头样式+预警样式)
header_style = workbook.add_format({
    "bold": True, "bg_color": "#4472C4", "font_color": "white"
})
warning_style = workbook.add_format({"font_color": "red"})  # 销售额低标红

# 写表头和数据
headers = ["月份", "销售额(元)"]
data = [["1月", 50000], ["2月", 65000], ["3月", 48000], ["4月", 72000]]
worksheet.write_row("A1", headers, header_style)  # 写表头+加样式

# 写数据,销售额低于5万标红
for row, (month, sales) in enumerate(data, 1):
    worksheet.write(row, 0, month)  # 写月份
    # 条件判断:低于5万加预警样式
    if sales < 50000:
        worksheet.write(row, 1, sales, warning_style)
    else:
        worksheet.write(row, 1, sales)

# 做柱状图(销售趋势)
chart = workbook.add_chart({"type": "column"})
# 关联数据(月份为X轴,销售额为Y轴)
chart.add_series({
    "name": "销售额",
    "categories": ["销售趋势", 1, 0, 4, 0],  # 月份数据范围
    "values": ["销售趋势", 1, 1, 4, 1],      # 销售额数据范围
})
# 给图表加标题和轴标签
chart.set_title({"name": "2025年1-4月销售趋势"})
chart.set_x_axis({"name": "月份"})
chart.set_y_axis({"name": "销售额(元)"})

# 插入图表到D2位置
worksheet.insert_chart("D2", chart)

# 关闭工作簿(必写!不然文件会损坏)
workbook.close()
print("报表生成完成!打开'业绩报表.xlsx'看效果~")

五、pywin32:Windows下的"全能操控手"

pywin32是Windows用户的"Excel全能遥控器"------靠调用本地Microsoft Excel的COM接口干活,相当于用Python替你手动点鼠标操作Excel。所以Excel能做的事,它全能干,宏、密码保护、高级图表这些都不在话下,堪称"无上限"工具。

核心功能

Excel原生功能全复刻:启动/关闭Excel、新建/打开文件都能控制,还能让Excel后台偷偷运行不弹窗;.xls/.xlsx/.xlsm不管啥格式都能处理;宏能运行能录制,带宏的财务报表直接自动化;转PDF精度拉满,和手动转的一模一样;带密码的Excel文件也能处理。

优缺点

优点就是"全能":Excel能做的它都能做,复杂报表、宏操作全拿下;格式转换精度第一,投标文件这种关键文档转PDF必用;能和Word、PPT联动(比如从Word提数据写Excel)。缺点很明显:仅限Windows,Mac/Linux用不了;必须装正版Excel;后台运行容易残留进程,忘关会占内存。

适用场景

复杂场景救星:处理带宏的自动计算报表(比如财务的利润表,改数据自动算结果);投标报价表转PDF(要求和原表格格式完全一致);做Office联动流程(Excel取数→Word写报告→PDF存档)。

安装与示例

安装命令:pip install pywin32

高频场景"Excel转PDF"示例,精度拉满:

python 复制代码
import win32com.client as win32

# 启动Excel(后台运行,不弹窗)
excel = win32.Dispatch("Excel.Application")
excel.Visible = 0  # 0=后台,1=显示界面
excel.DisplayAlerts = 0  # 关闭弹窗警告(比如文件已存在的提示)

# 打开Excel文件(路径要写全,注意用双反斜杠或r前缀)
workbook = excel.Workbooks.Open(r"C:\你的文件路径\投标报价表.xlsx")

# 转PDF(17是PDF的固定编码,记住就行)
pdf_path = r"C:\你的文件路径\投标报价表.pdf"
workbook.SaveAs(pdf_path, FileFormat=17)

# 关键!一定要关文件和Excel,不然后台会残留进程
workbook.Close()
excel.Quit()

print(f"PDF已生成:{pdf_path}")

终极选型指南:按需pick不踩坑

不用再纠结!按场景直接挑:

新手入门/日常.xlsx处理:openpyxl(免费跨平台,看示例就会);

旧版.xls文件处理:xlrd+xlwt(专属兼容,老报表不慌);

批量数据汇总/清洗:pandas(效率之王,一行代码顶一小时人工);

高颜值报表/图表:xlsxwriter(汇报神器,格式专业拿得出手);

Windows+Excel深度操控:pywin32(全能选手,宏、高精度转格式全搞定)。

其实80%的办公场景,openpyxl(基础操作)+pandas(批量处理)就够了!练熟这俩,基本能告别重复的Excel操作,效率直接翻倍~

相关推荐
_处女座程序员的日常3 小时前
如何预览常见格式word、excel、ppt、图片等格式的文档
前端·javascript·word·excel·开源软件
小兜全糖(xdqt)3 小时前
python ppt转pdf以及图片提取
python·pdf·powerpoint
best_scenery3 小时前
excel T检测时[检验类型]参数设置的方法
excel
路漫漫其修远.3 小时前
解决excel复制页面行高无法复制的问题
excel
前端世界3 小时前
用Python打造智能成绩分析系统:从异常处理到断言验证的全流程实战
服务器·数据库·python
yaoxin5211233 小时前
229. Java 集合 - 操作集合中的多个元素(批量操作)
java·开发语言·python
岁岁岁平安3 小时前
python 配置pip镜像源
python
在人间负债^3 小时前
从Python到仓颉:核心项目内容迁移实践
开发语言·python·鸿蒙·仓颉
云和数据.ChenGuang3 小时前
SyntaxError: Non-UTF-8 code starting
人工智能·python·numpy