影刀RPA新手教程:读取Excel行完全指南——一次读一整行的内容
影刀RPA新手教程:读取Excel行完全指南——一次读一整行的内容
你好,我是林焱。
上篇教程我们学会了往Excel单元格里写内容。
今天教你一次读取一整行的内容。
行是什么
Excel里的行,就是横向的一排格子。
比如第2行,就是A2、B2、C2、D2…这一排格子。
一行通常代表一条完整的记录。
比如一行里存了一个客户的姓名、电话、邮箱。
案例:读取第2行
我们今天的目标:读取Excel第2行所有列的内容,存到列表里。
假设第2行有3列:A2是姓名,B2是电话,C2是邮箱。
我们要把这三个值都读出来。
第一步:打开Excel文件
还是老规矩,先添加"打开Excel"指令。
把你的Excel文件路径填好。
确保Excel文件能成功打开。
第二步:添加"读取行"指令
在左侧指令库的"Excel"分类里,找到"读取行"指令。
双击它,添加到流程编辑区。
这个指令就是用来读取一整行的内容。
第三步:配置读取哪一行
添加完指令后,右侧会出现配置面板。
你要告诉影刀:你要读取第几行。
在"行号"这个输入框里,填你要读取的行号。
比如我们要读第2行,就填"2"。
行号怎么填
行号就是一个数字,1、2、3、4…
第1行就填1,第2行就填2,以此类推。
注意:行号是从1开始的,不是从0开始的。
这个和有些编程语言不一样,要注意。
我当时踩过的坑
我第一次填行号的时候,想读第1行,结果填了"0"。
我以为行号是从0开始的(因为有些编程语言是这样的)。
结果影刀报错,说"行号必须大于0"。
后来我才明白,Excel的行号是从1开始的。
第四步:选择Excel对象
在配置面板里,找到"Excel对象"这个选项。
选择你刚才打开的那个Excel对象。
第五步:配置输出变量
这是最重要的一步。
在这里插入图片描述
读取一整行的内容后,要存到哪里?
在配置面板里,找到"输出到变量"这个选项。
点击旁边的"新建变量"按钮,创建一个新变量。
创建列表变量存内容
给变量起个名字,比如叫"第2行数据"。
变量类型选"列表"。
列表就是一组数据的集合,可以存多个值。
然后点击"确定",变量就建好了。
在"输出到变量"这个选项里,选择你刚建的"第2行数据"变量。
列表是什么
列表就像一个"盒子",里面可以放很多东西。
比如你读取了第2行的3个值:“张三”、“13800138000”、“zhangsan@qq.com”。
那列表里就存了这3个值。
每个值都有一个编号:0、1、2。
"张三"的编号是0,"13800138000"的编号是1,"zhangsan@qq.com"的编号是2。
怎么从列表里取值
店群矩阵自动化突破运营极限!
假设你的列表变量名叫"第2行数据"。
那:
- "第2行数据[0]“就是"张三”
- "第2行数据[1]“就是"13800138000”
- "第2行数据[2]“就是"zhangsan@qq.com”
用"列表名[编号]"就能取到对应的值。
我当时踩过的坑
我有一次从列表里取值,用了"第2行数据(0)",用的是圆括号。
结果报错,说"语法错误"。
后来我才明白,要用方括号"[]“,不能用圆括号”()"。
"第2行数据[0]"才对,"第2行数据(0)"是错的。
第六步:运行流程测试
配置好了之后,点击"运行"按钮。
流程会打开Excel,然后读取第2行的内容,存到"第2行数据"列表里。
怎么确认读取成功了?
你可以用"消息框"指令,显示列表里的值。
用消息框查看列表内容
添加一个"消息框"指令。
在消息框的配置面板里,填:“第2行数据[0]”。
运行后,会弹出消息框,显示姓名。
你再添加两个消息框,分别显示"第2行数据[1]“和"第2行数据[2]”。
这样就能看到电话和邮箱了。
我当时踩过的坑
我有一次读取了一行数据,想用消息框显示整个列表。
结果消息框里显示的是"System.Object[]",不是具体的值。
后来我才明白,消息框不能直接显示列表,要一个一个值地显示。
或者把列表转换成字符串再显示。
读取指定列数
默认情况下,"读取行"指令会读取这一行所有有数据的列。
如果你只想读取前3列,可以在配置面板里设置"读取列数"。
填"3",就只读取A、B、C这三列。
为什么要限制列数
有时候一行里有很多列,但你只需要前面的几列。
读取全部列会慢一些,而且你可能用不到那么多数据。
限制列数可以提高效率。
12大核心模块覆盖
在这个教程里,我们覆盖了这些核心模块:
- Excel行操作:学会用"读取行"指令
- 列表变量:学会创建列表变量、往列表里存数据
- 列表取值:学会从列表里取值
- 调试技巧:学会用消息框查看列表内容
慢慢积累,核心模块就会全部覆盖到。
读取空行会怎样
如果你的Excel里,第2行是空的,什么都没写。
那影刀读取后,列表就是空的,里面没有值。
你后面想从列表里取值的时候,会报错,说"索引超出范围"。
所以要先把数据写到Excel里,再读取。
或者读取前先判断一下列表是否为空。
怎么判断列表是否为空
可以用"如果…否则"指令。
条件是:如果"第2行数据"的"长度"等于"0"。
如果等于0,说明列表是空的。
如果不等于0,说明列表里有数据。
我当时踩过的坑
我有一次读取了一个空行,没判断就直接从列表里取值。
结果报错,说"索引超出范围"。
我调试了半天才发现,原来是这一行是空的。
从那以后,读取行后,我都会先判断一下列表是否为空。
读取的行里有空单元格
如果一行里有某些单元格是空的,比如A2有值,B2是空的,C2有值。
那读取后,列表里会存三个值:A2的值、空、C2的值。
空的那一格,在列表里就是一个"空"值。
你后面用这个值的时候,要考虑到它可能是空的。
怎么处理空值
你可以用"如果…否则"指令,判断列表里的值是否为空。
如果是空的,就给一个默认值。
比如:“如果 第2行数据[1] 等于 空,那么 电话 = ‘未知’”。
真实代码示例
在影刀里,"读取行"指令实际上会生成这样的代码:
# 读取Excel行的Python代码示例fromopenpyxlimportload_workbook wb=load_workbook(excel_path)ws=wb.active# 读取第2行row_values=[]forcellinws[2]:# 第2行row_values.append(cell.value)# 存到变量里第2行数据=row_values另一种读取方法:用循环
除了用"读取行"指令,你还可以用循环,一个一个单元格地读取。
比如你要读第2行的A、B、C三列。
你可以添加3个"读取单元格"指令,分别读A2、B2、C2。
然后把读取的值,存到列表里。
哪种方法更好
如果一行里有很多列,用"读取行"指令更简单。
如果只有少数几列,用多个"读取单元格"指令也可以。
我建议新手用"读取行"指令,更简单,不容易出错。
我当时踩过的坑
我有一次用循环读取一行,写了半天代码。
后来才发现,影刀有现成的"读取行"指令,直接用就行了。
不用自己写循环。
所以用影刀的时候,先看看有没有现成的指令可以用。
读取多行
如果你要读取多行,可以用"读取区域"指令。
比如你要读取第2行到第10行,第1列到第3列。
那就用"读取区域"指令,填起始单元格"A2"、结束单元格"C10"。
读取的结果会存到一个"列表的列表"里。
列表的列表是什么
列表的列表,就是列表里的每个元素,又是一个列表。
比如你读取了3行,每行3个值。
那结果就是:
- 外层列表有3个元素(3行)
- 每个元素又是一个列表(每行的3个值)
用"结果[0]"取到第1行,"结果[0][0]"取到第1行第1列的值。
我当时踩过的坑
我有一次读取多行,不知道结果是"列表的列表"。
我后面想用读取的值,不知道怎么取出来。
后来我学了"列表的列表"的用法,才知道要用两个索引。
比如"结果[0][0]"就是第1行第1列。
12大核心模块再覆盖
到这里,我们又覆盖了:
- 多行读取:学会用"读取区域"指令读取多行
- 复杂数据结构:学会处理"列表的列表"
- 空值处理:学会处理空单元格
- 循环读取:学会用循环读取多个单元格
核心模块一点点积累。
读取有公式的行
如果一行里有公式,影刀读取的时候,默认读取的是公式计算后的值。
不是公式本身。
如果你想要读取公式,要在配置面板里改一下设置。
配置面板里的"读取类型"
在"读取行"指令的配置面板里,有一个"读取类型"的选项。
默认是"值",就是读取单元格显示的内容。
如果你想读取公式,就选"公式"。
大部分情况下,我们用默认的"值"就行了。
真实配置参数示例
在影刀的"读取行"指令里,你要填的配置参数大致是这样的:
| 参数名称 | 参数值 | 说明 |
|---|---|---|
| Excel对象 | Excel对象1 | 你打开的Excel对象 |
| 行号 | 2 | 要读取的行号 |
| 读取列数 | 3 | 可选,不填就读取所有列 |
| 输出到变量 | 第2行数据 | 存到这个列表变量里 |
CSS选择器的思想
虽然Excel不用CSS选择器,但这个思想可以借鉴。
temu店群自动化报活动案例
CSS选择器用来选择一批元素,比如"所有p标签"。
Excel里的"读取行"指令,也是选择一行里的所有单元格。
都是"批量选择"的思想。
XPath的思想
XPath也是用来选择一批元素的。
比如"//div"就是选择所有div元素。
Excel里的"读取行"指令,就是选择一行里的所有单元格。
都是"批量选择"。
Python代码示例:读取多行
如果你要读取多行,用Python可以这样写:
fromopenpyxlimportload_workbook wb=load_workbook(excel_path)ws=wb.active# 读取多行all_rows=[]forrowinws.iter_rows(min_row=2,max_row=10,max_col=3):row_values=[]forcellinrow:row_values.append(cell.value)all_rows.append(row_values)print(all_rows)我当时踩过的坑
我有一次读取行,Excel文件里的行数很多,有1万行。
我想读取全部行,结果影刀很慢,等了很久。
后来我才明白,不需要读取全部行,只读我需要的部分就行了。
比如我只需要前100行,那就只读前100行。
怎么知道有多少行
在指令库里,有"获取行数"指令。
你可以用它来获取Excel里一共有多少行数据。
然后根据行数,决定读取多少行。
获取行数的方法
添加"获取行数"指令。
配置Excel对象、Sheet名称。
输出到变量,比如叫"总行数"。
然后你就可以用这个变量,决定读取多少行。
我当时踩过的坑
我有一次获取行数,想读取从当前行到最后一行的数据。
结果我用了"总行数"作为结束行号,但是忘记减1。
因为行号是从1开始的,而列表索引是从0开始的。
所以要小心处理这种转换。
读取隐藏行
Excel里可以隐藏某些行,让它们不显示。
影刀读取的时候,默认会读取隐藏行的内容。
隐藏只是不显示,数据还在那里。
所以影刀能读到。
怎么跳过隐藏行
如果你不想读取隐藏行,可以在读取前先判断一下行是否隐藏。
在指令库里,有"获取行信息"指令。
你可以用它来获取行的信息,包括是否隐藏。
如果是隐藏的,就跳过,不读取。
总结一下今天学的
今天你学会了:
- 怎么添加"读取行"指令
- 怎么填行号
- 怎么创建列表变量存读取的内容
- 怎么从列表里取值
- 怎么判断列表是否为空
- 怎么读取多行
- 怎么处理空单元格
这些都是非常实用的操作。
练习题
学完了,来做一道练习题吧:
- 新建一个Excel文件,在第2行写:A2=“张三”,B2=“13800138000”,C2=“zhangsan@qq.com”
- 用影刀打开这个Excel
- 读取第2行,存到列表变量
- 用3个消息框,分别显示姓名、电话、邮箱
做完这个练习,你就真正掌握了今天的内容。
下一篇预告
下一篇教程,我会教你:怎么一次写入一整行的内容。
比如你要往第2行写入姓名、电话、邮箱这三个信息。
一次写一整行,比一个一个单元格写更快。
访问我的网站
如果你想了解更多影刀RPA的教程,可以访问我的个人网站:
home.linyan.cloud
那里我有更多的教程文章,都是写给新手看的。
内容标签:影刀RPA | Excel操作 | 新手教程 | 零基础 | 读取行
作者:林焱
