在影刀RPA里做电商采集,Excel是绕不开的环节。所有采集到的数据要写到Excel里,要处理的关键词列表要从Excel里读,甚至多店铺的对账也要靠Excel汇总。可以说,Excel用不好,自动化流程就废了一半。
这篇文章从最基础的读取写入开始,到进阶的批量处理技巧和常见陷阱,全部用实战场景来拆解。非技术出身完全能跟上,保证你看完就能上手操作。
指令面板中的三个核心Excel指令
影刀RPA的Excel操作集中在“Excel”指令分类下。从新手到进阶,掌握这三个核心指令就能覆盖90%的工作场景。
指令一:打开Excel(或绑定Excel)
所有Excel操作的第一步。有两种打开方式:
方式A:新建Excel
- 在指令面板搜索“新建Excel”,指定一个保存路径
- 适合从零开始写入数据的场景,比如采集完成后的数据导出
方式B:打开已有Excel
- 在指令面板搜索“打开Excel”,选择文件路径
- 适合读取已有数据的场景,比如从关键词列表里读词
配置要点:
- “是否可见”选项:建议勾选“不可见”。流程运行时不弹出Excel窗口,运行更快,也不会因为误触导致操作中断
- “自动保存”选项:建议开启,防止流程意外中断导致数据丢失
结束后的操作:流程结束时务必使用“关闭Excel”指令释放资源。如果不关,下次再打开同一个文件时会提示“文件被占用”。
指令二:读取Excel数据
读取数据有三种常用方式:
方式A:读取单元格
- 指定行号和列号,取单个单元格的值
- 场景:读取特定的配置参数,比如读取A1单元格的“最大采集页数”
方式B:读取行数据
- 指定行号,返回该行所有列的数据(列表形式)
- 场景:遍历数据表时逐行处理
方式C:读取所有数据
- 返回整个表格的数据(二维列表),配合“循环遍历”逐行处理
- 场景:批量处理关键词列表、账号列表
实操示例:读取关键词列表
1. 打开Excel(路径:D:\关键词库.xlsx)
2. 获取表格总行数(用“获取Excel行数”指令)
3. 读取A列所有关键词 → 存入列表变量 keywords
4. 关闭Excel
5. 循环遍历 keywords 列表,逐个执行搜索采集
容易踩的坑:读取到的数据默认是字符串类型。如果读取的是数字(比如价格、数量),一定要用“转换为数字”指令处理后再参与计算,否则会出现“1+1=11”这种字符串拼接的情况。
指令三:写入Excel数据
写入数据也有三种方式:
方式A:写入单元格
- 指定行号、列号,写入单个值
- 场景:更新某个特定的配置或状态值
方式B:写入行数据
- 指定行号,一次性写入整行数据(列表形式)
- 场景:每条采集结果写入一行
方式C:写入所有数据(覆盖式)
- 一次性把整个二维列表写入表格,覆盖原有内容
- 场景:生成完整的报表
我常用的写入模式:先攒后写
不建议采集一条就写入一条,这样会频繁操作Excel文件,影响性能。我习惯这样做:
1. 在流程开始前初始化一个空列表 data_list = []
2. 在循环采集过程中,每采集到一条数据,用“添加元素到列表”指令追加到 data_list
3. 循环结束后,用“写入所有数据”指令一次性把 data_list 写入Excel
这种模式的优势:
- Excel只操作一次,性能高
- 数据在内存中处理速度快
- 方便在写入前做数据清洗和去重
四种遍历方式的对比与选型
在处理Excel数据时,不同的遍历方式适用于不同的场景:
方式一:行遍历(最常用)
场景:每一行是一条独立的记录(如商品数据、关键词列表)
循环(行号从1到总行数):
1. 读取第N行所有列 → 存入行数据列表
2. 提取第1列(商品ID)、第2列(商品名称)...
3. 执行相应的业务操作
注意:如果第1行是表头,循环要从第2行开始。
方式二:列遍历
场景:某一列是一组需要处理的参数(如关键词列表在A列)
循环(行号从1到总行数):
1. 读取第N行第A列 → 得到关键词
2. 用该关键词执行搜索采集
方式三:动态行列遍历
场景:不确定表格的行数和列数
1. 用“获取Excel行数”获取总行数
2. 用“获取Excel列数”获取总列数
3. 双层循环:外层行,内层列
- 读取每个单元格的值进行处理
方式四:条件过滤遍历
场景:只处理符合条件的行(如“状态”列=“待处理”)
1. 读取所有数据 → 存入二维列表
2. 遍历每一行:
a. 检查第5列(状态列)是否等于“待处理”
b. 如果是,则处理该行
c. 如果否,跳过
大数据量处理的两个优化技巧
技巧一:分批写入避免内存溢出
如果采集数据超过1万行,一次性“写入所有数据”可能会导致影刀卡顿或内存溢出。解决方案是分批写入:
1. 初始化临时列表 temp_list = []
2. 每采集100条数据:
a. 将temp_list追加到主数据列表
b. 清空temp_list
3. 循环结束后,将主数据列表一次性写入Excel
技巧二:多表协同处理
有时候需要同时操作多个Excel文件——从A文件读取关键词,从B文件读取账号信息,采集结果写入C文件。
影刀支持同时打开多个Excel文件,但要注意:每个打开的Excel都要用独立的Excel对象变量来区分。我一般这样命名:
excel_关键词库:存放关键词excel_账号池:存放账号信息excel_采集结果:写入最终数据
影刀中调用Python进行高级数据清洗
当Excel数据量很大或者清洗逻辑比较复杂时(比如正则匹配、日期格式转换),建议用Python指令来处理。
# Python指令:Excel数据去重与清洗
# 输入:从Excel读取的原始数据列表(二维列表)
# 输出:清洗后的数据列表(二维列表)
import pandas as pd
def clean_excel_data(raw_data):
"""
清洗Excel数据
1. 去除空行
2. 按第1列(商品ID)去重
3. 价格列转为数字格式
4. 日期列标准化
"""
if not raw_data:
return []
# 转为DataFrame处理(需要先安装pandas)
# 注意:列表第一行可能包含表头
df = pd.DataFrame(raw_data[1:], columns=raw_data[0])
# 删除所有列都为空的空行
df = df.dropna(how='all')
# 按第1列去重,保留第一次出现的记录
df = df.drop_duplicates(subset=[df.columns[0]], keep='first')
# 价格列清洗:移除¥符号,转为数字
if '价格' in df.columns:
df['价格'] = df['价格'].astype(str).str.replace(r'[¥¥,]', '', regex=True)
df['价格'] = pd.to_numeric(df['价格'], errors='coerce')
# 转回列表格式,方便写入Excel
cleaned_data = [df.columns.tolist()] + df.values.tolist()
return cleaned_data
在影刀中使用Python指令的步骤:
- 在指令面板搜索“运行Python代码”
- 在代码框中输入上述清洗函数
- 定义输入变量(从Excel读取的数据)和输出变量(清洗后的数据)
- 确认Python图标已点亮(指令详情面板右上角)
常见问题速查表
| 现象 | 原因 | 快速修复 |
|---|---|---|
| Excel打开失败报“文件被占用” | 上次流程未正确关闭Excel | 手动关闭Excel文件,或重启电脑 |
| 读取到的数字无法计算 | 数据类型是字符串 | 用“转换为数字”指令处理 |
| 写入数据时覆盖了原有内容 | 误用了“写入所有数据” | 改用“写入行数据”追加写入 |
| 数据量大时流程变慢 | 频繁操作Excel | 改为先攒数据,最后一次写入 |
| 读取中文内容乱码 | Excel文件编码问题 | 另存为“UTF-8编码”的CSV文件 |
| 表格有合并单元格导致读取异常 | 合并单元格干扰 | 先取消合并,或通过“查找表格区域”获取实际数据范围 |
推荐资源
- 影刀官方-Excel自动化课程:在影刀学习中心有完整的Excel操作教学视频,从基础到进阶,建议按顺序看一遍。
- Excel插件-方方格子:如果你经常需要在Excel中手动处理数据,这个插件可以帮很多忙(数据清洗、合并拆分)。虽然影刀能自动化大部分,但有些临时性的数据整理用插件更快。
- 社区版限制提醒:如果采集数据量很大(如每天上万条),建议使用Excel的
.xlsx格式而非.xls,xlsx支持更大的行数(104万行),xls只有65536行。
#影刀RPA #RPA自动化 #Excel自动化 #数据处理 #批量采集 #电商数据采集
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
