采集了1000条商品数据,要存到Excel里。
问题:写进去格式乱了、追加到新行写成了覆盖、读取表格时总报错。
根源:没搞清楚影刀Excel指令的四种核心操作。
四兄弟:读取、写入、追加、清空。
一、Excel指令全家福
| 指令 | 作用 | 常用场景 |
|---|---|---|
| 打开Excel | 打开一个xlsx文件,返回Excel对象 | 所有操作的前提 |
| 读取行 | 读取指定行的内容,返回列表 | 遍历表格数据 |
| 写入行 | 覆盖写入某一行 | 将数据写入空表 |
| 追加行 | 在表格最后一行后面新增一行 | 边采集边写入 |
| 清空行 | 清空某一行(保留表头) | 重置表格内容 |
| 保存Excel | 保存并关闭文件 | 最后一定要做 |
| 获取总行数 | 返回表格已有数据行数 | 计算追加位置 |
位置:右侧指令面板搜索“Excel”即可找到。
二、读取Excel——遍历已有数据
场景:Excel里有100个商品链接,要逐个打开采集。
操作步骤:
- 拖入“打开Excel”,选择文件路径(最好用绝对路径,如
C:\data\urls.xlsx)。
2. 输出变量命名为
{excel_obj}(Excel对象)。
- 用“获取总行数”知道有多少行(不包括表头)。
- 用“固定次数循环”从第2行开始读(假设第1行是表头)。
- 循环内用“读取行”,行号变量
{i},输出到列表变量{row_data}。 - 从列表里取第一列(链接)存到
{url}。
7. 处理完成后,用“关闭Excel”释放文件。
# 读取Excel模板

# 1. 打开Excel
# 文件路径:C:\data\product_urls.xlsx
# 输出到:excel_obj
# 2. 获取总行数
# Excel对象:{excel_obj}
# 输出到:{total_rows}
# 3. 固定次数循环,循环次数 = {total_rows} - 1(减去表头)
# 循环变量:{row_num},起始值 = 2(第一行是表头)
# 4. 读取行
# Excel对象:{excel_obj}
# 行号:{row_num}
# 输出到:{row_data}(列表类型)
# 5. 取出第一列(链接)
# 用“获取列表指定位置的元素”,位置0,输出到 {url}
# 6. 执行采集逻辑(打开URL,采集数据...)
# 7. 循环结束
# 8. 关闭Excel
# Excel对象:{excel_obj}
# 保存:是
易错点:循环结束后一定要“关闭Excel”,否则文件被占用,下次写入会报错。
三、写入行——从零开始创建数据
场景:采集新数据,要写入一个全新的Excel文件。
操作步骤:
- 先用“创建Excel”或手动建一个xlsx文件,有表头(如“商品名称”“价格”“链接”)。
- “打开Excel”后,用“写入行”按行号写入。
- 注意:写入行会覆盖该行原有内容,所以适合从第2行开始顺序写入。
# 写入行示例(循环采集后写入)
# 1. 打开Excel(文件已存在,已有表头)
# 路径:C:\data\result.xlsx
# 输出:excel_obj
# 2. 设置变量 {current_row} = 2(从表头下一行开始)
# 3. 列表循环 {product_list}(采集到的商品数据)
# 4. 准备一行数据:将标题、价格等组合成列表
# 例如:["手机壳", "29.9", "https://xxx.com"]
# 5. 写入行
# Excel对象:{excel_obj}
# 行号:{current_row}

# 写入内容:{row_data}(列表)

# 6. {current_row} = {current_row} + 1
# 7. 循环结束
# 8. 保存并关闭Excel
写入的内容必须是列表,列表长度应等于Excel列数。
如果只写一列,也要写成 ["值"],不要直接写字符串。
四、追加行——最简单的边采边写
场景:不确定有多少条数据,每采集一条就写到Excel末尾。
操作步骤:
- 打开Excel。
- 每次采集到一条数据后,直接调用“追加行”指令。
- 不需要自己计算行号,系统自动在最后一行的后面加一行。
# 追加行(推荐新手用)
# 打开Excel后
# 列表循环 {product_list}
# - 提取标题、价格 → 组合成列表 {new_row}
# - 追加行
# Excel对象:{excel_obj}
# 写入内容:{new_row}
# - (不需要关心行号)
# 关闭Excel
优点:不用管当前写到第几行,不会覆盖已有数据。
缺点:如果循环内有错误导致重复执行,会追加重复行(但在采集场景下通常没问题)。
💡 追加 vs 写入:
追加 = 在最后加一行(永远不覆盖)
写入 = 在指定行覆盖写入(适合更新固定位置的汇总数据)
五、清空行——重置表格内容
场景:每天跑流程前,需要清空昨天的数据,但保留表头。
操作步骤:
- 打开Excel。
- 用“获取总行数”知道有多少行(比如100行)。
- 用固定次数循环从第2行到第100行,依次“清空行”。
- 或者一次性用“删除行”(但删除行会让行号变化,复杂)。
# 清空所有数据行(保留表头)
# 1. 打开Excel
# 2. 获取总行数 → {total_rows}
# 3. 如果 {total_rows} > 1
# 固定次数循环,循环次数 = {total_rows} - 1
# 循环变量:{row_num},从2开始
# 清空行:Excel对象、行号{row_num}
# 循环结束
# 4. 保存并关闭
更简单的清空方法:
删除原文件,用“创建Excel”重新生成一个带表头的新文件。
推荐这种做法,避免清空循环出错。
六、实战:采集淘宝商品列表写入Excel
完整流程:
-
准备Excel表头(手动创建或代码创建):
- 列A:商品标题
- 列B:价格
- 列C:月销量
- 列D:商品链接
-
影刀流程:
# 主流程
# 1. 打开Excel(路径:C:\taobao_data.xlsx)
# 输出:excel_obj
# 2. 采集第一页商品
# - 获取相似元素列表(商品卡片)
# - 循环每个卡片
# - 提取标题、价格、销量、链接
# - 组装成列表:["标题", "价格", "销量", "链接"]
# - 追加行(写入Excel)
# 3. 翻页(用按钮判断法)
# 条件循环(下一页存在)
# - 点击下一页
# - 等待商品列表出现
# - 重复采集循环(追加行)
# 4. 所有页面采完后,关闭Excel(保存)
注意:在循环体内频繁写入Excel会拖慢速度。
优化:先把数据存到一个列表变量(如 {all_data}),循环结束后一次性写入。
但一次性写入需要自己算行号,推荐新手用追加行,简单不易错。
七、常见问题速查
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 打开Excel报“文件不存在” | 路径写错或文件被占用 | 用绝对路径,关闭已打开的Excel |
| 写入行后Excel内容为空 | 忘记保存关闭 | 最后要“关闭Excel”并勾选保存 |
| 追加行写到了错误的位置 | 之前写入过数据,表格有空白行 | 先清空多余行,或新建文件 |
| 写入的内容是“对象类型” | 直接写了变量而不是列表 | 用“创建列表”指令包一层 |
| 读取行返回空 | 行号从0开始数? | 行号从1开始,表头是第1行 |
| 循环内频繁操作Excel变慢 | 每次写入都触发IO | 收集一批(如10条)再写入 |
影刀专属操作清单
| 指令 | 精确名称 | 关键参数 |
|---|---|---|
| 打开Excel | 打开Excel | 文件路径、输出Excel对象 |
| 读取行 | 读取行 | Excel对象、行号(整数)、输出列表 |
| 写入行 | 写入行 | Excel对象、行号、写入内容(列表) |
| 追加行 | 追加行 | Excel对象、写入内容(列表) |
| 清空行 | 清空行 | Excel对象、行号 |
| 获取总行数 | 获取总行数 | Excel对象、输出整数 |
| 关闭Excel | 关闭Excel | Excel对象、是否保存 |
版本差异:社区版同时只能打开一个Excel文件,多个文件需要依次处理。
创业版/企业版支持同时操作多个Excel。
推荐资源
- 影刀官方帮助中心:《Excel自动化完整教程》
- 影刀学院视频:《Excel读写——从入门到实战》(约22分钟)
- 模板搜索:“电商数据采集+Excel存储”,下载后看标准写法
最后一句:Excel是数据采集的终点站。
新手先学会“打开-追加行-关闭”三板斧,够用99%的场景。
进阶再学“读取行”做批量操作。记得用完一定要关文件。
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
