发布时间:2026/7/22 23:27:17
影刀RPA 用Python在影刀中做Excel高级处理:pandas vs openpyxl的选择 影刀RPA 用Python在影刀中做Excel高级处理pandas vs openpyxl的选择影刀内置的Excel动作能覆盖70%的场景。剩下的30%大数据量、复杂筛选、多表关联、透视汇总得靠Python节点。这篇不教Python语法只讲一个核心问题什么场景用pandas什么场景用openpyxl。选错了库十万行数据能让你等到天荒地老。pandas vs openpyxl 一句话区分pandas处理数据内容和结构的像SQL操作数据表。读取、筛选、分组、聚合、合并——它擅长。openpyxl操作Excel文件和格式的像Excel应用程序。样式、图表、合并单元格、行高列宽——它擅长。你要算月销售额总和 → pandas 你要给销售额那列标红 → openpyxl 你要把两个表按客户名关联 → pandas 你要设置表头加粗白字蓝底 → openpyxl ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9fcb46093f33481295e8e55b6745d0ae.png#pic_center) 你要从100万行里筛选出金额10000的 → pandas 你要给符合条件的行加条件格式 → openpyxl场景一数据筛选与计算 → pandas拼多多店群自动化上架方案importpandasaspd# 读取Exceldfpd.read_excel(rC:\data\orders.xlsx,dtype{订单号:str})# pandas的筛选操作 # 单条件筛选high_valuedf[df[金额]10000]# 多条件筛选ANDresultdf[(df[金额]1000)(df[状态]已完成)]# 多条件筛选ORresultdf[(df[地区]北京)|(df[地区]上海)]# 按列值筛选INprovinces[广东,浙江,江苏]resultdf[df[省份].isin(provinces)]# 模糊筛选包含关键字resultdf[df[客户名].str.contains(科技,naFalse)]# pandas的聚合计算 # 按客户分组汇总金额summarydf.groupby(客户名)[金额].agg([sum,count,mean])summary.columns[总金额,订单数,平均金额]# 按日期和地区分组pivotdf.pivot_table(values金额,index日期,columns地区,aggfuncsum,fill_value0)# 排序df_sorteddf.sort_values(金额,ascendingFalse)df_top10df_sorted.head(10)# 保存结果summary.to_excel(rC:\data\summary.xlsx)场景二格式与样式操作 → openpyxlfromopenpyxlimportload_workbookfromopenpyxl.stylesimportFont,PatternFill,Alignment wbload_workbook(rC:\data\report.xlsx)wswb.active# openpyxl的格式操作 # 遍历单元格设置样式forrowinws.iter_rows(min_row2):amountrow[4].value# E列金额ifamountandamount10000:row[4].fontFont(colorFF0000,boldTrue)# 合并单元格ws.merge_cells(A10:C10)ws[A10]汇总ws[A10].alignmentAlignment(horizontalcenter)# 冻结窗格ws.freeze_panesA2# 设置打印区域ws.print_areaA1:F50wb.save(rC:\data\report_styled.xlsx)场景三数据量大 → pandas唯一选择当数据超过几万行时openpyxl会变得很慢——因为它要逐行逐列操作Excel的XML结构。importpandasaspd# 读取大文件10万行以上dfpd.read_excel(rC:\data\huge_file.xlsx)# 筛选filtereddf[df[金额]1000]# 指定列类型加速读取dfpd.read_excel(huge_file.xlsx,dtype{订单号:str,金额:float},usecols[订单号,客户名,金额]# 只读需要的列加快速度)filtered.to_excel(rC:\data\filtered.xlsx,indexFalse)pandas在大数据下的性能碾压openpyxl10万行数据pandas筛选保存大概2-3秒openpyxl逐行遍历可能需要几十秒到一分钟。组合使用获取最佳效果实际场景中两个库组合使用是最佳实践importpandasaspdfromopenpyxlimportload_workbookfromopenpyxl.stylesimportFont,PatternFill# 步骤1pandas处理数据内容和结构 dfpd.read_excel(rC:\data\raw_data.xlsx)# 数据清洗、筛选、计算dfdf[df[金额].notna()]# 去掉金额为空的行df[利润率]df[利润]/df[金额]# 按客户分组汇总summarydf.groupby(客户名).agg({金额:sum,利润:sum,订单号:count}).reset_index()summary.columns[客户名,总金额,总利润,订单数]summary[利润率]summary[总利润]/summary[总金额]# 写入ExceloutputrC:\data\final_report.xlsxsummary.to_excel(output,indexFalse,sheet_name汇总)# 步骤2openpyxl美化格式 wbload_workbook(output)wswb.active# 表头样式forcellinws[1]:cell.fontFont(boldTrue,colorFFFFFF)cell.fillPatternFill(start_color2F5496,end_color2F5496,fill_typesolid)# 数据列格式forrowinws.iter_rows(min_row2):row[1].number_format¥#,##0.00# 总金额row[2].number_format¥#,##0.00# 总利润row[4].number_format0.00%# 利润率wb.save(output)流程总结pandas做内容openpyxl做好看。常见操作对应的库选择操作推荐库原因读取大文件5万行pandas速度快筛选、排序、分组pandas语法简洁性能好两个表关联类似VLOOKUPpandas mergepd.merge跟SQL join一样直观设置字体颜色、背景色openpyxlpandas做不到合并单元格openpyxlpandas做不到TEMU店群如何管理运营| 添加图表 | openpyxl | 支持但不完美复杂图表用xlsxwriter || 设置数据验证下拉选项 | openpyxl | DataValidation || 修改已有文件的样式 | openpyxl | pandas只能覆盖写入 || 读取特定Sheet/区域 | 两者都可 | 看后续操作需求 |坑pandas写入会覆盖已有的格式这是一个经常踩的坑。你有一个人工做好的带格式的Excel模板想用pandas写入数据保留格式——不行。pandas的to_excel()是完全覆盖Sheet。之前的所有格式、图表、条件格式全部丢失。解决方案用openpyxl加载模板然后逐行写入数据。fromopenpyxlimportload_workbook# 加载带格式的模板wbload_workbook(rC:\data\template.xlsx)wswb.active# 从第2行开始写入数据第1行是表头模板fori,row_datainenumerate(data,start2):forj,valueinenumerate(row_data,start1):ws.cell(rowi,columnj,valuevalue)wb.save(rC:\data\filled.xlsx)# 模板的格式、图表、条件格式都保留一句话数据计算用pandas格式美化用openpyxl。超过5万行数据强制用pandas需要保留模板格式用openpyxl增量写入。作者林焱

相关新闻

2026/7/21 5:54:41

C++编程实战指南:从环境搭建到性能优化,掌握现代C++核心技能

1. 从“Hello World”到系统级编程:为什么C依然无可替代?如果你在搜索引擎里敲下“C教程”,大概率会看到两种极端:一种是“三天速成C”的营销号,另一种是动辄上千页、充满晦涩术语的“天书”。这恰恰反映了C的现状——…

2026/7/21 5:54:41

C++多线程编程中锁粒度选择:从粗到细的性能优化策略与实践

1. 项目概述:锁粒度选择的十字路口 在C多线程编程的世界里,锁是协调并发访问、保护共享数据的基石。但锁用不好,性能瓶颈就来了。很多开发者,尤其是从单线程思维过渡过来的,最容易犯的错误就是“一把大锁走天下”——用…

2026/7/22 23:26:07

Windows系统文件dusmsvc.dll丢失找不到问题解决

dusmsvc.dll在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行…

2026/7/22 23:26:07

网站通用导航与页脚模块制作学习小结

通过这个用例,主要学习了网站公用部分(导航页脚)的完整开发方法,核心收获可分为三点:1. 页面复用的开发思路网站头部导航、底部版权是所有页面的通用模块,完成后可复制为多份文件(如首页、商品页…

2026/7/22 23:26:07

如何快速掌握ARPL黑群晖安装:新手入门终极指南

如何快速掌握ARPL黑群晖安装:新手入门终极指南 【免费下载链接】arpl Automated Redpill Loader 项目地址: https://gitcode.com/gh_mirrors/ar/arpl 还在为黑群晖(DSM)安装的复杂配置而头疼吗?CPU不支持MOVBE指令导致型号…

2026/7/22 23:21:07

【HarmonyOS 6】HarmonyOS 自定义时间选择器实现

前言 在开发时间管理类应用时,时间选择器是一个非常常见的功能。本文将通过近期在鸿蒙应用开发中的一个实际案例,详细讲解如何在 HarmonyOS 应用中实现一个自定义的时间选择器。我们这个案例中的选择器支持半小时为单位的时间选择,适合用于记…

2026/7/22 9:29:13

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析:为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中,抓包是常见手段。但很多开发者会遇到一个现象:正常访问页面时没有问题,一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主,我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电,导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者,我最近半年一直在折腾副业项目,每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者,我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费,字节跳动出品的国内首款 AI 原生 …

2026/7/22 21:00:12

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…