影刀RPA Excel数据筛选与排序自动化
影刀RPA Excel数据筛选与排序自动化作者林焱数据采集到Excel后第一件事往往不是直接用而是筛选和排序——把需要的数据挑出来、按某个字段排好序。手动在Excel里点筛选、排序很简单但在RPA流程里怎么自动化完成很多人用影刀读出全部数据后用Python做筛选排序再写回去。这当然可以但其实影刀和openpyxl也提供了直接操作Excel筛选和排序的能力。这篇文章把几种方案都讲清楚。一、用影刀指令操作Excel筛选1.1 开启自动筛选影刀提供【设置Excel筛选】指令可以直接在Excel中开启筛选模式【设置Excel筛选】 文件路径D:\data\product.xlsx Sheet名Sheet1 区域A1:D100 筛选列B列 筛选条件等于 筛选值在售这相当于在Excel里手动点筛选按钮然后选择B列筛选值为在售的行。坑筛选后数据还在但被隐藏Excel的筛选不是删除数据而是隐藏不满足条件的行。如果你用影刀读取筛选后的区域默认读到的是所有行包括被隐藏的。需要配合其他方式只读取可见行。1.2 读取筛选后的数据importopenpyxl wbopenpyxl.load_workbook(D:\\data\\product.xlsx)wswb[Sheet1]# 读取可见行筛选后未被隐藏的行visible_data[]![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d58174aa4a8c4f80b0526864ff1b0139.png#pic_center)forrowinws.iter_rows():ifnotws.row_dimensions[row[0].row].hidden:visible_data.append([cell.valueforcellinrow])set_variable(filtered_data,visible_data)1.3 清除筛选【清除Excel筛选】 文件路径D:\data\product.xlsx Sheet名Sheet1或者用Pythonws.auto_filter.refNone# 清除自动筛选wb.save(D:\\data\\product.xlsx)二、用pandas做数据筛选推荐拼多多店群自动化上架方案pandas的筛选能力远超Excel的自动筛选而且操作更灵活。2.1 单条件筛选importpandasaspd dfpd.read_excel(D:\\data\\product.xlsx)# 筛选价格大于100的行resultdf[df[价格]100]# 筛选状态为在售的行resultdf[df[状态]在售]# 筛选商品名包含手机的行resultdf[df[商品名].str.contains(手机)]# 筛选库存不为空的行resultdf[df[库存].notna()]# 写入新文件result.to_excel(D:\\data\\filtered.xlsx,indexFalse)2.2 多条件筛选# AND条件价格100 且 状态在售resultdf[(df[价格]100)(df[状态]在售)]# OR条件状态在售 或 状态预售resultdf[df[状态].isin([在售,预售])]# NOT条件状态不等于已下架resultdf[df[状态]!已下架]# 组合条件resultdf[(df[价格]100)(df[状态]在售)(df[库存]0)(df[商品名].str.contains(手机))]坑多条件必须用括号pandas中多个条件组合时每个条件必须用括号括起来。写成df[价格] 100 df[状态] 在售会报错因为的优先级高于。2.3 模糊匹配筛选# 以华为开头resultdf[df[品牌].str.startswith(华为)]# 以Pro结尾resultdf[df[型号].str.endswith(Pro)]# 正则匹配resultdf[df[商品名].str.contains(r\d{4},regexTrue)]# 包含4位数字# 不区分大小写resultdf[df[商品名].str.contains(iphone,caseFalse)]2.4 按区间筛选# 价格在100-500之间resultdf[df[价格].between(100,500)]# 日期在指定范围内resultdf[df[日期].between(2026-01-01,2026-06-30)]2.5 取前N条/后N条# 取价格最高的10条resultdf.nlargest(10,价格)# 取价格最低的5条resultdf.nsmallest(5,价格)# 取前20条resultdf.head(20)# 取最后10条resultdf.tail(10)三、用pandas做数据排序3.1 单列排序# 按价格升序排列resultdf.sort_values(价格,ascendingTrue)# 按价格降序排列resultdf.sort_values(价格,ascendingFalse)3.2 多列排序# 先按状态升序再按价格降序resultdf.sort_values([状态,价格],ascending[True,False])坑排序后索引乱了排序后行索引会跟着打乱。如果后续需要按索引访问数据重置索引resultresult.reset_index(dropTrue)3.3 按中文拼音排序importpandasaspdimportpypinyindefget_pinyin(text):获取中文的拼音首字母ifpd.isna(text):returnreturn.join([p[0][0]forpinpypinyin.pinyin(str(text),stylepypinyin.FIRST_LETTER)])# 按商品名的拼音排序df[拼音首字母]df[商品名].apply(get_pinyin)resultdf.sort_values(拼音首字母).drop(columns[拼音首字母])3.4 按自定义顺序排序# 按指定状态顺序排列在售→预售→已下架status_order[在售,预售,已下架]df[状态排序]df[状态].map({s:ifori,sinenumerate(status_order)})![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/be9efa3d150c476994869e6a9578f3cb.png#pic_center)resultdf.sort_values(状态排序).drop(columns[状态排序])四、用openpyxl设置Excel排序如果你需要在Excel文件中保留排序效果打开Excel就能看到排序后的数据用openpyxl4.1 openpyxl排序的限制openpyxl不能直接对Excel数据排序只能设置排序筛选条件。真正执行排序需要Excel应用打开文件。所以如果要对数据排序并保存结果推荐用pandas。4.2 设置排序条件importopenpyxlfromopenpyxl.worksheet.filtersimportSortColumn wbopenpyxl.load_workbook(D:\\data\\product.xlsx)wswb[Sheet1]# 设置自动筛选区域ws.auto_filter.refA1:D100# 添加排序条件B列升序sort_colSortColumn(colId1,ascendingTrue)ws.auto_filter.sortColumn.add(sort_col)wb.save(D:\\data\\product.xlsx)注意这只是设置了排序条件实际排序在Excel应用打开时执行。五、实战场景5.1 采集数据后自动排序筛选importpandasaspd# 1. 读取采集的原始数据dfpd.read_excel(D:\\data\\raw_collection.xlsx)# 2. 去重dfdf.drop_duplicates(subset[商品ID])# 3. 筛选有效数据dfdf[(df[价格]0)(df[库存].notna())]# 4. 按价格降序排列dfdf.sort_values(价格,ascendingFalse)# 5. 只取前100条dfdf.head(100)# 6. 重置索引dfdf.reset_index(dropTrue)# 7. 写入报表文件df.to_excel(D:\\data\\top100_products.xlsx,indexFalse)5.2 多维度交叉筛选dfpd.read_excel(D:\\data\\sales.xlsx)# 筛选条件# - 地区在华东或华南# - 月份是1-6月# - 销售额大于平均值的1.5倍# - 排除测试订单avg_salesdf[销售额].mean()resultdf[(df[地区].isin([华东,华南]))(df[月份].between(1,6))(df[销售额]avg_sales*1.5)(df[订单类型]!测试)].sort_values(销售额,ascendingFalse)result.to_excel(D:\\data\\high_value_orders.xlsx,indexFalse)5.3 分组排序每组取Top NTEMU店群如何管理运营dfpd.read_excel(D:\\data\\sales.xlsx)# 每个地区销售额前3名resultdf.groupby(地区).apply(lambdax:x.nlargest(3,销售额)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/806f0157462d45c9ac1d651280b89530.png#pic_center)).reset_index(dropTrue)result.to_excel(D:\\data\\top3_by_region.xlsx,indexFalse)5.4 排序后写入带格式的Excelimportpandasaspdimportopenpyxlfromopenpyxl.stylesimportFont,PatternFill# 1. pandas排序dfpd.read_excel(D:\\data\\product.xlsx)dfdf.sort_values(价格,ascendingFalse)df.to_excel(D:\\data\\sorted.xlsx,indexFalse)# 2. openpyxl加格式wbopenpyxl.load_workbook(D:\\data\\sorted.xlsx)wswb.active# 表头加粗forcolinrange(1,ws.max_column1):ws.cell(row1,columncol).fontFont(boldTrue,colorFFFFFF)ws.cell(row1,columncol).fillPatternFill(start_color4472C4,end_color4472C4,fill_typesolid)# 冻结首行ws.freeze_panesA2wb.save(D:\\data\\sorted.xlsx)六、性能对比操作影刀指令pandasopenpyxl筛选1000行较慢快中等排序10000行慢快不支持直接排序多条件筛选不灵活灵活不支持保留筛选效果支持不支持覆盖写入支持保留原格式支持不支持支持推荐策略数据处理筛选排序用pandas最快最灵活需要在Excel文件中保留筛选/排序效果用影刀指令或openpyxl先用pandas处理数据再用openpyxl加格式七、避坑清单坑1筛选后行号不连续pandas筛选后行索引不连续如果用df.iloc[0]取第一行可能不是你期望的。用reset_index(dropTrue)重置索引。坑2排序改变了原始数据sort_values默认返回新DataFrame不修改原数据。如果需要原地修改用inplaceTruedf.sort_values(价格,inplaceTrue)坑3数字和字符串混合排序某列里既有数字又有字符串如100和50排序结果不正确。先把数据类型统一df[价格]pd.to_numeric(df[价格],errorscoerce)坑4NaN值的排序位置排序时NaN默认排在最后升序或最前降序。可以用na_position参数控制df.sort_values(库存,ascendingFalse,na_positionlast)坑5Excel自动筛选的兼容性问题不同Excel版本对自动筛选的支持不同。openpyxl设置的筛选条件在WPS中可能不生效。如果需要跨平台兼容用pandas处理数据后重新写入。

相关新闻

Vivado IBERT 7系列GTX误码率测试:4种环回模式对比与眼图扫描实战

Vivado IBERT 7系列GTX误码率测试:4种环回模式对比与眼图扫描实战

Vivado IBERT在7系列FPGA GTX收发器调试中的高阶应用:从误码率测试到信号完整性优化当硬件工程师面对一块搭载Xilinx 7系列FPGA的电路板时,GTX收发器的性能验证往往是硬件调试中最具挑战性的环节之一。信号完整性、时钟抖动、传输线损耗——这些因素都可…

2026/7/9 3:12:28 阅读更多 →
AI 智能体工程实践:从大模型宕机到稳定数学解题

AI 智能体工程实践:从大模型宕机到稳定数学解题

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 在实际 AI 应用开发中,我们常常会遇到一个看似矛盾的现象:一方面,大模型在各类评测和演示中表现惊…

2026/7/9 3:10:27 阅读更多 →
Python基础知识(一)

Python基础知识(一)

一、Python的基本数据类型二、Python整数进制转换三、Python数据类型转换函数一、Python的基本数据类型Python包含了很多种的数据类型,以下仅列举出几种常见并且非常基础的数据类型。1、整数型(int):支持正负整数,无大…

2026/7/9 3:08:26 阅读更多 →

最新新闻

ragflow v0.26.4发布:16种语言词干化上线,Go后端持续统一,Agent与MCP一口气修复大量关键问题

ragflow v0.26.4发布:16种语言词干化上线,Go后端持续统一,Agent与MCP一口气修复大量关键问题

RAGFlow 在 2026 年 7 月 7 日发布了 v0.26.4。 从这次版本说明来看,v0.26.4 并不是单点更新,而是一轮覆盖面非常广的系统性迭代:既有 NLP 分词能力的增强,也有 Go 架构继续推进后的大量对齐与补齐;既修复了 MCP、Agen…

2026/7/9 5:33:14 阅读更多 →
Python编码解码全解析

Python编码解码全解析

Python编码解码详解 一、核心概念与原理 1.1 编码与解码的本质区别 操作方向输入输出方法编码字符串 → 字节Unicode字符串字节序列str.encode()解码字节 → 字符串字节序列Unicode字符串bytes.decode() 编码是将人类可读的文本(字符串)转换为计算机…

2026/7/9 5:31:14 阅读更多 →
NAND Flash 硬件电路设计 3 大实战:全志H3、ZYNQ、HI3798 平台对比

NAND Flash 硬件电路设计 3 大实战:全志H3、ZYNQ、HI3798 平台对比

NAND Flash硬件电路设计实战:全志H3、ZYNQ与海思HI3798平台深度对比在嵌入式系统设计中,NAND Flash作为主流存储方案,其硬件电路设计直接影响系统稳定性和性能表现。本文将针对全志H3、Xilinx ZYNQ和海思HI3798三大主流SoC平台,从…

2026/7/9 5:31:14 阅读更多 →
0402/0603/0805贴片电阻:5种封装功率曲线与PCB布局散热实测

0402/0603/0805贴片电阻:5种封装功率曲线与PCB布局散热实测

0402/0603/0805贴片电阻:功率曲线与PCB散热设计实战指南 当你在高密度PCB上布局一颗0402封装的贴片电阻时,是否思考过它微小的身躯如何应对电流通过时产生的热量?现代电子设备正朝着更小体积、更高性能的方向发展,这对电路设计中的…

2026/7/9 5:29:13 阅读更多 →
第一次用TMGM 官方版 MT5 系统,界面怎么调才不抓瞎?

第一次用TMGM 官方版 MT5 系统,界面怎么调才不抓瞎?

刚打开软件,看着密密麻麻的英文和花花绿绿的图表,是不是整个人都懵了?别怕,今天就教你几招,把这个TMGM 官方版 MT5 系统(mt5-get.com)调整得清清爽爽,让你一眼就能看懂。第一步&…

2026/7/9 5:27:13 阅读更多 →
CUDA 13.1 + PyTorch 2.10 环境搭建:RTX 5060 Ti 显卡兼容性验证与 2 个关键配置

CUDA 13.1 + PyTorch 2.10 环境搭建:RTX 5060 Ti 显卡兼容性验证与 2 个关键配置

CUDA 13.1 PyTorch 2.10 环境搭建:RTX 5060 Ti 显卡兼容性实战指南当RTX 5060 Ti遇上PyTorch 2.10,看似简单的环境搭建却暗藏玄机。许多开发者在全新硬件上配置深度学习环境时,常被sm_120 is not compatible警告或torch.cuda.is_available()…

2026/7/9 5:23:12 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻