当前位置: 首页 > article >正文

Python openpyxl操作Excel完整指南:10个高频场景附代码

Python openpyxl操作Excel完整指南10个高频场景附代码数据分析工作中Excel处理是绕不开的环节。手动操作费时费力用Python自动化才是正道。本文用10个实战场景带你掌握openpyxl的核心用法。一、环境准备openpyxl是Python操作xlsx文件最成熟的库之一。安装只需一行pip install openpyxl支持Python 3.6无需额外依赖。处理百万级数据建议用pandas日常几千到几十万行的Excel用openpyxl足够。二、10个高频实战场景场景1读取Excel数据from openpyxl import load_workbook # 加载已有文件 wb load_workbook(data/sales_2026.xlsx) ws wb.active # 获取活动工作表 # 按行读取数据 for row in ws.iter_rows(min_row2, values_onlyTrue): date, product, amount row[0], row[1], row[2] print(f{date} | {product} | {amount}) # 按列读取 for col in ws.iter_cols(min_col1, max_col3, values_onlyTrue): print(col)iter_rows是核心方法values_onlyTrue直接返回单元格值不含Cell对象效率更高。min_row2跳过表头。场景2创建新Excel并写入数据from openpyxl import Workbook wb Workbook() ws wb.active ws.title 销售数据 # 写入表头 headers [日期, 产品, 销售额, 利润率] ws.append(headers) # 写入数据行 data [ [2026-01-15, 产品A, 15200, 0.23], [2026-01-16, 产品B, 28400, 0.31], [2026-01-17, 产品A, 19600, 0.27], ] for row in data: ws.append(row) wb.save(output/sales_report.xlsx)场景3批量合并多个Excelimport os from openpyxl import load_workbook, Workbook # 找到目标目录下所有xlsx文件 files [f for f in os.listdir(data/) if f.endswith(.xlsx)] wb_out Workbook() ws_out wb_out.active ws_out.title 合并数据 # 写入表头从第一个文件读取 wb_first load_workbook(fdata/{files[0]}) ws_first wb_first.active ws_out.append([cell.value for cell in ws_first[1]]) # 合并所有文件的数据行跳过表头 for fname in files: wb load_workbook(fdata/{fname}) ws wb.active for row in ws.iter_rows(min_row2, values_onlyTrue): ws_out.append(row) wb_out.save(output/merged_all.xlsx) print(f合并完成共{len(files)}个文件)这是数据分析工作中最高频的需求之一。每月/每周各分公司提交报表合并分析是家常便饭。场景4设置单元格格式数字/百分比/日期from openpyxl.styles import numbers, Font, Alignment, PatternFill # 数字格式千分位分隔 ws[C2].number_format #,##0 # 百分比格式 ws[D2].number_format 0.0% # 日期格式 ws[A2].number_format YYYY-MM-DD # 字体设置 ws[A1].font Font(boldTrue, size14, colorFFFFFF) # 背景色 ws[A1].fill PatternFill(start_color4472C4, end_color4472C4, fill_typesolid) # 居中对齐 ws[A1].alignment Alignment(horizontalcenter, verticalcenter)场景5条件格式自动高亮异常数据from openpyxl.formatting.rule import CellIsRule, FormulaRule from openpyxl.styles import PatternFill # 销售额低于10000的标红 red_fill PatternFill(start_colorFFC7CE, end_colorFFC7CE, fill_typesolid) ws.conditional_formatting.add( C2:C100, CellIsRule(operatorlessThan, formula[10000], fillred_fill) ) # 利润率低于20%的标黄 yellow_fill PatternFill(start_colorFFEB9C, end_colorFFEB9C, fill_typesolid) ws.conditional_formatting.add( D2:D100, CellIsRule(operatorlessThan, formula[0.2], fillyellow_fill) )条件格式让数据异常一目了然。领导看报表时不需要你解释颜色已经说明了问题。场景6按条件筛选数据并导出新表from openpyxl import Workbook, load_workbook wb load_workbook(data/sales_2026.xlsx) ws wb.active wb_out Workbook() ws_out wb_out.active ws_out.title 筛选产品A # 写表头 ws_out.append([cell.value for cell in ws[1]]) # 筛选产品A的数据 count 0 for row in ws.iter_rows(min_row2, values_onlyTrue): if row[1] 产品A: # 第2列是产品名 ws_out.append(row) count 1 wb_out.save(output/filtered_product_a.xlsx) print(f筛选完成共{count}条记录)场景7添加公式SUM/AVERAGE/VLOOKUP# 求和 ws[C101] fSUM(C2:C100) # 平均值 ws[C102] fAVERAGE(C2:C100) # 计数 ws[C103] fCOUNTA(C2:C100) # VLOOKUP跨表匹配 ws[E2] VLOOKUP(B2,产品表!A:B,2,FALSE) # 注意openpyxl写公式时用Excel标准语法 # 打开文件后Excel会自动计算不需要openpyxl执行场景8冻结窗格 自动筛选# 冻结首行滚动时表头不动 ws.freeze_panes A2 # 冻结前两行和第一列 # ws.freeze_panes B3 # 添加自动筛选表头下拉箭头 ws.auto_filter.ref A1:D100 # 设置列宽 ws.column_dimensions[A].width 15 ws.column_dimensions[B].width 20 ws.column_dimensions[C].width 15 ws.column_dimensions[D].width 12场景9图表生成柱状图折线图from openpyxl.chart import BarChart, LineChart, Reference # 柱状图各产品销售额 chart BarChart() chart.title 各产品销售额对比 chart.x_axis.title 产品 chart.y_axis.title 销售额元 data Reference(ws, min_col3, min_row1, max_row10) categories Reference(ws, min_col2, min_row2, max_row10) chart.add_data(data, titles_from_dataTrue) chart.set_categories(categories) ws.add_chart(chart, F2) # 折线图销售额趋势 line_chart LineChart() line_chart.title 月度销售趋势 line_chart.y_axis.title 销售额 data2 Reference(ws, min_col5, min_row1, max_row13) cats2 Reference(ws, min_col1, min_row2, max_row13) line_chart.add_data(data2, titles_from_dataTrue) line_chart.set_categories(cats2) ws.add_chart(line_chart, F18)场景10数据透视表效果分组汇总from collections import defaultdict # 按产品分组汇总 summary defaultdict(lambda: {sales: 0, count: 0}) for row in ws.iter_rows(min_row2, values_onlyTrue): product, amount row[1], row[2] if product and amount: summary[product][sales] amount summary[product][count] 1 # 写入汇总表 ws_out wb.create_sheet(汇总) ws_out.append([产品, 总销售额, 订单数, 平均客单价]) for product, stats in summary.items(): avg stats[sales] / stats[count] if stats[count] else 0 ws_out.append([product, stats[sales], stats[count], round(avg, 2)]) wb.save(output/sales_with_summary.xlsx)三、性能优化技巧当数据量超过1万行时openpyxl可能会变慢。几个优化技巧1. 只读模式加载大文件时用load_workbook(file.xlsx, read_onlyTrue)内存占用降低90%以上。2. 只写模式创建大文件时用Workbook(write_onlyTrue)逐行写入不缓存。3. 避免频繁访问Cell对象用iter_rows(values_onlyTrue)比逐个访问ws.cell()快5-10倍。4. 大数据量建议用pandas超过10万行直接pd.read_excel()处理写回用df.to_excel()。四、总结openpyxl是Python操作Excel的瑞士军刀。日常工作中90%的Excel处理需求用这10个场景就能覆盖读取数据 → 写入数据 → 合并文件 → 格式设置 → 条件格式 → 筛选导出 → 公式计算 → 冻结筛选 → 图表生成 → 分组汇总学会这些你的Excel处理效率至少提升10倍。省下来的时间去学点更有价值的东西。我是船长一个在数据分析领域干了近10年的实战派。关注我用最接地气的方式学数据分析。

相关文章:

Python openpyxl操作Excel完整指南:10个高频场景附代码

Python openpyxl操作Excel完整指南:10个高频场景附代码数据分析工作中,Excel处理是绕不开的环节。手动操作费时费力,用Python自动化才是正道。本文用10个实战场景,带你掌握openpyxl的核心用法。一、环境准备openpyxl是Python操作x…...

3分钟极速完成原神成就数据导出:YaeAchievement工具完全指南

3分钟极速完成原神成就数据导出:YaeAchievement工具完全指南 【免费下载链接】YaeAchievement 更快、更准的原神数据导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement 你是否还在为原神成就进度追踪而烦恼?手动记录数百个成…...

从Seurat到pyscenic:用Singularity容器无缝衔接单细胞转录因子分析

从Seurat到pyscenic:用Singularity容器构建工业级单细胞转录因子分析流水线 在单细胞转录组分析领域,从上游的细胞聚类到下游的转录因子调控网络推断,往往需要跨越R与Python两大生态系统的鸿沟。当分析规模扩展到数百个样本时,依赖…...

PyTorch实战:两种方法实现Partial Conv(PConv)提升模型效率,附完整代码

PyTorch实战:两种Partial Conv实现方案深度解析与性能优化 在移动端和边缘计算场景中,模型效率直接决定了产品的用户体验和商业可行性。当我们尝试将ResNet-50这样的经典网络部署到手机端时,常常会面临显存不足和计算延迟的问题——这正是部分…...

从信用评分到汽车油耗:用MATLAB SHAP值实战分析两个经典数据集

从信用评分到汽车油耗:用MATLAB SHAP值实战分析两个经典数据集 金融风控与工业预测看似毫无关联,但数据科学家们总能找到共通的语言。当银行需要解释为什么拒绝某笔贷款申请,或者汽车工程师想了解哪些因素真正影响油耗时,SHAP&…...

从Flink数据源测试出发:手把手教你搭建Kafka 2.5.0单机环境

从Flink数据源测试出发:手把手教你搭建Kafka 2.5.0单机环境 在流处理领域,Kafka作为分布式消息队列的标杆,与Flink的集成已成为实时数据处理的标准组合。本文将从一个实际开发场景切入——当你已经掌握Flink基础概念,正准备测试一…...

LeetCode热题100-26. 删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k。去重后&#x…...

企业级HTML转Word文档自动化转换框架:构建高性能文档处理系统

企业级HTML转Word文档自动化转换框架:构建高性能文档处理系统 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 在当今数字化办公环境中,HTML转Word文档转换已成为企业文档自动化…...

Qt5/6项目实战:告别中文乱码,从编辑器设置到源码编码的完整避坑指南

Qt5/6中文编码实战:从源码到编译器的全链路避坑手册 第一次在Qt项目中看到满屏的"锟斤拷"时,我盯着屏幕愣了三分钟。这不是简单的技术问题,而是跨平台开发中字符编码的"百慕大三角"——编译器、IDE、操作系统和Qt版本在这…...

YOLOv8-Pose实战:从Labelme标注到模型训练的数据流水线构建

1. 环境准备与工具安装 在开始构建YOLOv8-Pose数据流水线之前,我们需要准备好开发环境和必要的工具。我推荐使用Python 3.8环境,这个版本在兼容性和稳定性方面表现最好。首先安装Labelme标注工具,这个工具在关键点标注领域几乎是行业标准&am…...

为什么选择Asyncer:快速提升异步开发体验的完整教程

为什么选择Asyncer:快速提升异步开发体验的完整教程 【免费下载链接】asyncer Asyncer, async and await, focused on developer experience. 项目地址: https://gitcode.com/gh_mirrors/as/asyncer Asyncer是一个专注于提升开发者体验的异步编程工具&#x…...

别再只存整个模型了!PyTorch中保存与加载模型的两种正确姿势(避坑ModuleNotFoundError)

PyTorch模型保存与加载的工程实践:从原理到避坑指南 在深度学习项目开发中,模型保存与加载看似简单的操作却暗藏玄机。许多开发者都曾遇到过这样的场景:在Colab上训练好的模型,下载到本地后却报出ModuleNotFoundError;…...

MAVROS深度解析:从ROS话题到飞控指令的桥梁

1. MAVROS的核心作用与工作流程 MAVROS是连接ROS生态与PX4飞控的关键中间件,它的核心功能可以概括为"协议翻译器"和"数据路由器"。想象一下,你有一个只会说英语的飞控(PX4)和一个只会说中文的ROS系统&#xf…...

如何用 Go-retryablehttp 实现指数退避算法:网络重试的最佳实践

如何用 Go-retryablehttp 实现指数退避算法:网络重试的最佳实践 【免费下载链接】go-retryablehttp Retryable HTTP client in Go 项目地址: https://gitcode.com/gh_mirrors/go/go-retryablehttp 在网络请求中,暂时性故障如服务器过载或网络波动…...

终极指南:如何使用PS2EXE将PowerShell脚本一键转换为EXE可执行文件

终极指南:如何使用PS2EXE将PowerShell脚本一键转换为EXE可执行文件 【免费下载链接】PS2EXE Module to compile powershell scripts to executables 项目地址: https://gitcode.com/gh_mirrors/ps/PS2EXE 你是否曾经想过将PowerShell脚本变成独立的可执行文件…...

JS Search 核心组件详解:索引策略、分词器与搜索算法的完美结合

JS Search 核心组件详解:索引策略、分词器与搜索算法的完美结合 【免费下载链接】js-search JS Search is an efficient, client-side search library for JavaScript and JSON objects 项目地址: https://gitcode.com/gh_mirrors/js/js-search JS Search 是…...

颠覆性视频生成革命:ComfyUI-FramePackWrapper如何将显存占用降低60%并重塑AI视频工作流

颠覆性视频生成革命:ComfyUI-FramePackWrapper如何将显存占用降低60%并重塑AI视频工作流 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper 在AI视频生成领域,开发者长期面临着…...

大模型应用开发岗、算法岗、C++/Java/Go开发岗到底什么区别?谁替代谁了吗?

现在大模型很火,也有了一个岗位叫做:大模型应用开发岗。 在boss上搜一下,现在 大模型应用开发 岗位很多,比普通开发岗位都多。下面我这还是仅仅深圳南山的结果: 很多粉丝,搞不懂 大模型应用开发就是是个啥&#xff1f…...

VisionMaster通讯配置避坑指南:从TCP/IP到Modbus,手把手搞定设备连接与数据解析

VisionMaster工业通讯实战:从协议配置到故障排查的全链路指南 工业视觉系统的通讯链路如同神经网络,任何一处信号阻滞都可能导致整个生产线瘫痪。上周在汽车零部件检测项目中,我们遇到PLC与VisionMaster之间频繁断连的问题——产线每运行37分…...

把RK3568开发板变成网络摄像头:Android 11下UVC视频输出保姆级配置指南

将RK3568开发板改造为高性能网络摄像头的完整实战指南 手里闲置的RK3568开发板除了跑Demo还能做什么?今天我要分享一个极具实用价值的改造方案——将它变成一台支持UVC协议的网络摄像头。这个方案不仅成本低廉,还能充分发挥RK3568的硬件编解码能力&#…...

如何快速掌握Office Custom UI Editor:面向初学者的完整指南

如何快速掌握Office Custom UI Editor:面向初学者的完整指南 【免费下载链接】office-custom-ui-editor Standalone tool to edit custom UI part of Office open document file format 项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor …...

NCMconverter终极指南:3步解锁网易云音乐加密格式,释放你的音乐自由

NCMconverter终极指南:3步解锁网易云音乐加密格式,释放你的音乐自由 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 你是否曾在网易云音乐下载了心爱的歌…...

避坑指南:赛元单片机触摸库配置,SOCAPI_SET_TOUCHKEY_CHANNEL和阈值到底怎么设?

赛元单片机触摸库实战:从参数解析到抗干扰配置全指南 第一次接触赛元单片机的电容触摸功能时,面对那一堆十六进制参数和模糊的文档说明,我盯着示波器上跳动的信号波形整整三天没睡好觉。电机干扰导致的误触发、阈值设置不当引发的响应迟钝、…...

【Docker 27网络策略终极指南】:27项生产级策略配置、隔离与审计实战(附策略合规检查清单)

第一章:Docker 27网络策略演进与核心架构解析Docker 27(代号“Nexus”)标志着容器网络模型的一次范式跃迁,其网络策略体系不再仅围绕桥接、主机与覆盖网络的静态划分,而是以零信任原则为基底,将策略执行点下…...

FPGA光模块调试翻车记:IBERT IP核的管脚约束,为什么我写的XDC总被覆盖?

FPGA光模块调试实战:破解IBERT IP核管脚约束冲突的底层逻辑 第一次在Vivado里看到"LOC constraint conflict"的红色报错时,我盯着IBERT生成的Example Design发呆了十分钟。明明在XDC文件里明确定义了SFP光模块的GTY收发器管脚,为什…...

银行内网系统如何确保Excel公式导入CKEditor的数据安全?

CMS企业官网项目 - 编辑器Word导入功能集成记录 需求分析 作为四川的一名PHP程序员,最近接手的CMS企业官网项目客户提出了一个新需求:在CKEditor 4编辑器中实现Word等文档的一键导入功能。具体要求包括: 支持Word/Excel/PPT/PDF文档导入支…...

【Docker 27低代码集成权威指南】:20年DevOps专家亲授容器化低代码平台落地的5大避坑法则

第一章:Docker 27低代码平台容器集成全景认知 Docker 27 是一款面向企业级低代码开发场景深度优化的容器化运行时环境,其核心能力在于将可视化建模、组件编排与容器生命周期管理无缝融合。它并非 Docker CE 或 EE 的简单版本迭代,而是基于 Mo…...

工业容器安全红线清单,Docker 27新增device-cgroup-policy与seccomp-v2双锁机制解析(仅限首批通过IEC 62443-4-2认证的17家厂商内部共享)

第一章:工业容器安全红线清单的演进逻辑与合规基线工业容器安全红线清单并非静态文档,而是随OT/IT融合深度、攻击面扩展及监管框架升级持续演进的技术契约。其底层逻辑源于三重张力:实时性约束与隔离强度的平衡、遗留设备兼容性与零信任原则的…...

Codeforces评分预测神器Carrot:从API崩溃到社区自救的技术传奇

Codeforces评分预测神器Carrot:从API崩溃到社区自救的技术传奇 【免费下载链接】carrot A browser extension for Codeforces rating prediction 项目地址: https://gitcode.com/gh_mirrors/carrot1/carrot 想象一下这样的场景:你正在参加一场激烈…...

ACE-Step镜像详解:开箱即用的音乐创作神器

ACE-Step镜像详解:开箱即用的音乐创作神器 你有没有想过,自己也能像专业音乐人一样,用几句话就“召唤”出一段完整的音乐?不是简单的旋律片段,而是带有完整编曲、丰富配器,甚至能表达特定情绪的背景音乐。…...