影刀RPA实操指南:Excel表格读写操作指南——读取/写入/追加/清空

采集了一堆数据,最后卡在存Excel这一步。行写错了、列对不齐、追加变成了覆盖、清空把表头也删了。

影刀的Excel指令覆盖了完整操作: 读取区域、写入行、追加行、清空工作表。掌握这四个,就能搞定90%的表格处理。

picture.image


指令1:读取Excel数据——把表格变成变量

picture.image

场景:读取关键词列表批量搜索、读取商品ID批量采集。

核心指令

  • 打开Excel(先打开文件)

picture.image

  • 读取区域数据(返回二维列表)
  • 读取列数据到列表(返回一维列表)
  • 关闭Excel(用完关掉)

操作步骤:

picture.image

  1. 拖入打开Excel,选择文件路径(支持变量)
  2. 拖入读取区域数据
  3. 设置起始行/列、结束行/列
  4. 输出到列表变量
  5. 拖入关闭Excel

picture.image

配置示例(读取关键词列):

打开Excel:
  - 文件路径:C:\商品列表.xlsx
  
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/63ecb334549842bab3c269e1a6e5623d~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783882909&x-signature=4HC0vnSG6pQkTek9dIC5Z11Rfpc%3D)
  - 可见性:不可见(省资源)

读取列数据到列表:
  - 工作表:Sheet1
  - 列号:A(或填1)
  
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/6174710958cd486e870e058fb380b7c7~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783882909&x-signature=WRv7FlUlWHuZIU3ciqCNbP1LRSY%3D)
  - 起始行号:2(跳过表头)
  - 输出列表:${关键词列表}

关闭Excel

picture.image

⚠️ 踩坑:读完Excel一定要关闭Excel,否则下次运行时文件被占用,报“文件正在使用”。


指令2:写入行数据——从第1行开始填

场景:采集结果实时写入,每采集一条写一行。

核心指令

  • 写入行数据到表格(指定行号写入)
  • 获取Excel行数(拿到已有行数,决定下一行写哪)

操作步骤:

  1. 打开Excel
  2. 获取Excel行数得到当前最后一行行号
  3. 新行号 = 最后行号 + 1
  4. 写入行数据到表格,行号填新行号

示例(写入采集结果):

# 假设已打开Excel,工作表Sheet1

获取Excel行数 → ${当前行数}
设置变量(新行号 = ${当前行数} + 1)

写入行数据到表格:
  - 工作表:Sheet1
  
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/bb26d6ffaa934daaaf3ee118fb02b20c~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783882909&x-signature=wk8VA54hdUJW7sb3tIWSqOucXsc%3D)
  - 起始行号:${新行号}
  - 起始列号:A(或1)
  - 行数据:["鼠标垫", "¥49", "月销1000"]

# 行数据是一个列表,按顺序写入A、B、C列

写表头(第一次运行时):

# 先判断是否需要写表头
获取Excel行数 → ${行数}
如果 ${行数} == 0:
    写入行数据到表格(行号=1, 行数据=["商品名","价格","销量"])

⚠️ 踩坑写入行数据到表格的“行号”参数,如果填的数字对应的行已经有数据,会覆盖原来的内容,不是追加。所以一定要用“最后一行+1”的方式计算新行号。


指令3:追加行——不用算行号,自动加到底部

场景:批量采集时不断加行,不想手动算行号。

核心指令追加行到表格

操作方法:

  • 一行代码搞定,不需要获取行数行号+1

picture.image

示例:

追加行到表格:
  - 工作表:Sheet1
  - 行数据:["影刀鼠标垫", "¥49", "月销1000"]

效果:不管当前表格有多少行,新数据会写在最后一行的下面。

追加多行:

# 循环列表,每一条追加一行
列表循环(${采集结果列表}):
    当前商品 = 当前项
    追加行到表格(行数据=[当前商品.标题, 当前商品.价格])

对比写入vs追加:

操作需要自己算行号是否会覆盖适用场景
写入行数据✅ 需要指定行号会覆盖修改指定行、写入固定位置
追加行❌ 不需要不会覆盖持续写入新数据(推荐)

推荐:日常采集用追加行,省心不出错。


指令4:清空工作表——不是删文件

场景:每次运行前清空旧数据,重新采集。

核心指令

  • 清除单元格区域(清空指定区域内容)
  • 删除行(整行删除)

清空整个工作表(保留表头):

# 获取最后一行号
获取Excel行数 → ${最后行号}

# 如果数据行>1(假设第1行是表头)
如果 ${最后行号} > 1:
    删除行:
      - 工作表:Sheet1
      - 起始行号:2
      - 结束行号:${最后行号}

清空全部内容(连表头也清):

清除单元格区域:
  - 工作表:Sheet1
  - 起始单元格:A1
  - 结束单元格:根据最大列和行号确定

⚠️ 踩坑清除单元格区域只清内容,不删行。下次写入会从清空的行开始,可能留下空白行。推荐用删除行彻底移除。


实战:完整的采集→写入流程

# B_主流程

# 1. 初始化Excel
调用子流程(D_初始化采集表)

# 2. 采集循环
列表循环(${关键词列表}):
    调用子流程(C_搜索采集, 输入参数=${当前关键词})
    # 采集结果存到变量${单条数据}
    
    # 3. 追加写入
    调用子流程(D_追加数据, 输入参数=${单条数据})

# 4. 关闭Excel
关闭Excel

---
# D_初始化采集表子流程

打开Excel(路径="C:\采集结果.xlsx", 可见性=不可见)

# 检查是否需要写表头
获取Excel行数  ${行数}
如果 ${行数} == 0:
    追加行到表格(行数据=["关键词", "标题", "价格", "采集时间"])

# 不清空旧数据,保留历史。如果要清空,在这里加清空逻辑

---
# D_追加数据子流程

流程参数:
  - 输入:数据列表(如["鼠标垫","¥49"])

追加行到表格(行数据=${数据列表})

Excel指令速查表

需求指令名称关键参数注意事项
打开文件打开Excel文件路径、可见性用完记得关闭
关闭文件关闭Excel不关会占用文件
读取区域读取区域数据起始行列、结束行列返回二维列表
读取列读取列数据到列表列号、起始行返回一维列表
写入行写入行数据到表格行号、行数据会覆盖
追加行追加行到表格行数据自动底部新增
获取行数获取Excel行数工作表名0表示空表
删除行删除行起始/结束行号整行删除
清除内容清除单元格区域区域范围只清内容不删行
保存保存Excel关闭前自动保存

常见问题速查

问题原因解决方法
报错“文件被占用”上次运行没关闭Excel手动关掉Excel,流程里加关闭Excel
追加行写到了第10000行表格下面有看不见的空行先删除所有空行;或用获取行数检查
写入的中文变乱码Excel编码问题文件格式用.xlsx,不要用.xls
读取区域返回空列表区域设置错了检查起始行/列是否大于实际范围
写入速度越来越慢每写一行都打开关闭Excel循环外打开一次,循环内只追加,循环完关闭
读取数字变成文本Excel单元格格式问题在影刀里用转换成数字指令处理

性能优化:大数量写入

采集1万条数据,每写一行都打开关闭Excel,耗时极长。

优化方案:批量写入

# 先在内存里攒够100条
设置变量(缓存列表 = [])

循环采集:
    把单条数据加入缓存列表
    如果 缓存列表.长度 >= 100:
        批量写入(缓存列表)
        清空缓存列表

# 最后写入剩余不足100条的
如果 缓存列表.长度 > 0:
    批量写入(缓存列表)

# 批量写入子流程
对于每行数据 in 缓存列表:
    追加行到表格(行数据=每行数据)

实测:1万条数据,逐行写入约3分钟,批量写入(100条一批)约40秒。


版本差异

  • 社区版:Excel指令完全可用,无限制
  • 创业版:支持更多格式(.csv、.xlsm)
  • 注意:大文件(超过50MB)读取会慢,建议先拆分成小文件

推荐资源:影刀官方示例库搜“Excel批量读写”,有现成的“关键词批量搜索+结果写入”模板,直接改路径就能用。


作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论