在日常工作与生活中,Excel几乎是绕不开的工具——财务人员用它核算月度收支,人事专员用它整理员工考勤,运营同学用它统计用户增长数据,甚至普通人也会用它记录家庭账单。但手动操作Excel往往效率低下:重复录入数据易出错、批量修改表格耗时久、复杂数据统计需要逐行计算。而openpyxl,作为Python生态中专门用于处理Excel 2010及以上版本.xlsx/.xlsm文件的库,恰好能解决这些痛点。它无需依赖Excel软件本身,可纯代码实现Excel文件的创建、读取、修改、格式设置甚至图表生成,让繁琐的Excel操作自动化,大幅提升工作效率,是程序员和办公人士的“效率神器”。安装库
openpyxl的安装极为简单,只需在命令行中执行pip安装命令即可,它兼容Python 3.6及以上版本,无需额外配置系统环境:
若需要处理包含图表的Excel文件,建议安装完整版依赖,以支持图表生成功能:
pip install openpyxl[charts]
基本用法
openpyxl的核心操作围绕“工作簿(Workbook)-工作表(Worksheet)-单元格(Cell)”三层结构展开,以下是最常用的4个基础操作:
1. 创建新Excel文件并写入数据
创建工作簿对象,获取默认工作表,向指定单元格写入数据后保存文件:
from openpyxl import Workbook# 创建新的工作簿wb = Workbook()# 获取默认的第一个工作表ws = wb.active# 重命名工作表ws.title = "2026年2月家庭账单"# 两种写入数据的方式:指定坐标/行号列号ws["A1"] = "消费类型"ws["B1"] = "消费金额(元)"ws.cell(row=2, column=1, value="餐饮")ws.cell(row=2, column=2, value=356.8)ws.cell(row=3, column=1, value="交通")ws.cell(row=3, column=2, value=89.5)# 保存文件到本地wb.save("家庭账单.xlsx")
2. 读取已有Excel文件数据
加载本地Excel文件,读取指定单元格、整行/整列数据:
from openpyxl import load_workbook# 加载已有工作簿(read_only=True可提升大文件读取效率)wb = load_workbook("家庭账单.xlsx", read_only=False)# 通过工作表名称获取目标sheetws = wb["2026年2月家庭账单"]# 读取单个单元格数据print("A1单元格内容:", ws["A1"].value)print("第2行第2列内容:", ws.cell(row=2, column=2).value)# 遍历读取1-3行的所有数据(values_only=True仅返回值,不返回单元格对象)for row in ws.iter_rows(min_row=1, max_row=3, values_only=True): print("整行数据:", row)# 关闭工作簿,释放资源wb.close()
3. 修改Excel中的单元格内容
加载已有文件后直接修改单元格值,重新保存即可覆盖原文件:
from openpyxl import load_workbookwb = load_workbook("家庭账单.xlsx")ws = wb["2026年2月家庭账单"]# 修改交通费用数值ws.cell(row=3, column=2, value=98.5)# 新增购物消费记录ws.cell(row=4, column=1, value="购物")ws.cell(row=4, column=2, value=520.0)# 保存修改wb.save("家庭账单.xlsx")wb.close()
4. 设置单元格格式(字体、颜色、对齐)
通过样式设置让表格更美观,提升可读性:
from openpyxl import Workbookfrom openpyxl.styles import Font, Alignment, PatternFillwb = Workbook()ws = wb.activews.title = "格式化账单"# 定义表头样式:黑体、12号字、红色、加粗、黄色背景、居中对齐header_font = Font(name="黑体", size=12, color="FF0000", bold=True)header_align = Alignment(horizontal="center", vertical="center")header_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")# 写入表头并应用样式ws["A1"] = "消费类型"ws["B1"] = "消费金额(元)"ws["A1"].font = header_fontws["A1"].alignment = header_alignws["A1"].fill = header_fillws["B1"].font = header_fontws["B1"].alignment = header_alignws["B1"].fill = header_fill# 写入数据ws["A2"] = "餐饮"ws["B2"] = 356.8ws["A3"] = "交通"ws["B3"] = 98.5# 调整列宽ws.column_dimensions["A"].width = 15ws.column_dimensions["B"].width = 20wb.save("格式化账单.xlsx")
高级用法
针对更复杂的批量处理场景,以下代码可汇总指定文件夹下所有销售数据Excel文件,并自动生成带柱状图的汇总报表:
from openpyxl import Workbook, load_workbookfrom openpyxl.chart import BarChart, Referenceimport osdef sum_sales_data(folder_path): """汇总指定文件夹下所有销售数据Excel的销售额,并生成带图表的汇总表""" # 创建汇总工作簿 summary_wb = Workbook() summary_ws = summary_wb.active summary_ws.title = "月度销售汇总" summary_ws["A1"] = "部门" summary_ws["B1"] = "总销售额(元)" row_num = 2 sales_dict = {} # 存储各部门销售额 # 遍历文件夹中的Excel文件 for file_name in os.listdir(folder_path): if file_name.startswith("销售数据_") and file_name.endswith(".xlsx"): file_path = os.path.join(folder_path, file_name) wb = load_workbook(file_path) ws = wb.active # 读取部门(A2)和销售额(B2) dept = ws["A2"].value sales = ws["B2"].value # 累加销售额 sales_dict[dept] = sales_dict.get(dept, 0) + sales wb.close() # 写入汇总数据 for dept, total_sales in sales_dict.items(): summary_ws.cell(row=row_num, column=1, value=dept) summary_ws.cell(row=row_num, column=2, value=total_sales) row_num += 1 # 创建柱状图 chart = BarChart() chart.title = "各部门月度销售额" chart.x_axis.title = "部门" chart.y_axis.title = "销售额(元)" # 绑定数据源 data = Reference(summary_ws, min_col=2, min_row=1, max_row=row_num-1) categories = Reference(summary_ws, min_col=1, min_row=2, max_row=row_num-1) chart.add_data(data, titles_from_data=True) chart.set_categories(categories) # 插入图表到D2位置 summary_ws.add_chart(chart, "D2") # 保存汇总文件 summary_wb.save(os.path.join(folder_path, "月度销售汇总.xlsx"))# 调用函数(替换为你的实际文件夹路径)sum_sales_data("./sales_data")
实际应用场景
个人场景:自动整理月度消费账单,计算总支出、分类占比,生成可视化报表,无需手动求和或制作图表;
职场场景:财务人员批量处理报销单Excel,自动校验金额格式、汇总总额;人事专员根据打卡数据自动生成考勤表,标记迟到记录;运营人员汇总多平台用户数据,快速生成增长分析报告;
小型企业场景:无需购买昂贵的BI工具,用openpyxl批量处理销售数据,生成可视化报表,辅助业务决策。
openpyxl的价值不仅在于简化Excel操作,更在于将程序员从重复的手工劳动中解放出来,让代码成为提升工作效率的利器。它的轻量化、易上手特性,既适合专业程序员构建自动化办公脚本,也适合非技术人员学习基础用法解决日常Excel痛点。相比VBA,openpyxl跨平台性更好(兼容Windows/Mac/Linux),且能与Python其他库(如pandas、matplotlib)无缝结合,拓展更多数据处理能力。
你是否也曾被大量重复的Excel操作困扰?不妨试试用openpyxl编写自动化脚本,哪怕是最简单的“读取-修改-保存”流程,也能显著减少手工操作的时间。如果有更复杂的Excel自动化需求,比如结合定时任务自动生成日报,或者对接数据库批量导出数据到Excel,欢迎在评论区交流,我们可以一起探讨更优的实现方案。
总结
openpyxl是Python处理.xlsx格式Excel文件的核心库,无需依赖Excel软件,可实现创建、读取、修改、格式设置、图表生成等全流程操作;
基础用法围绕“工作簿-工作表-单元格”三层结构展开,高级用法可满足批量汇总、可视化报表生成等复杂场景;
应用场景覆盖个人账单整理、职场办公自动化、小型企业数据汇总,是提升Excel处理效率的高效工具。