Robot Framework如何遍历Excel工作表所有行 运行输出空值如何解决
问题原因
- FOR循环语法错误:你当前编写的
FOR ${i} IN 20只会执行1次循环,变量${i}的取值固定为20,并非遍历1到20的所有行。 - Excel操作参数理解错误:
Open Excel Document的doc_id参数是给当前打开的Excel文件分配的唯一标识,用于多文件操作时区分实例,不是指定要读取的工作表名称。你当前未切换到Sheet2工作表,默认读取的是Excel文件的第一个工作表。 - 空单元格返回规则:ExcelLibrary读取无内容的空单元格时,返回值为
None,你仅读取第20行第一列的单元格,若该位置本身为空/读取的工作表错误对应位置为空,就会出现你当前的输出结果。 - 依赖适配问题:若使用高版本xlrd库,默认不支持xlsx格式的Excel读取,也会出现读值为空的情况。
修复后的完整代码
*** Settings *** Library SeleniumLibrary Library ExcelLibrary Library Collections *** Variables *** ${path_excel} C:\\User\\Test.xlsx *** Test Cases *** Test1 Test the ExcelData *** Keywords *** Test the ExcelData ${my_data_as_list}= Create List # 打开Excel文件,分配自定义标识excel1 Open Excel Document filename=${path_excel} doc_id=excel1 # 获取Sheet2工作表的有效行数 ${row_count}= Get Row Count sheet_name=Sheet2 # 遍历所有有效行,Excel行号从1开始计数 FOR ${i} IN RANGE 1 ${row_count + 1} ${my_data}= Read Excel Cell sheet_name=Sheet2 row_num=${i} col_num=1 Log to Console ${my_data} Append To List ${my_data_as_list} ${my_data} END Log to Console ${my_data_as_list} # 关闭Excel文件释放资源 Close Excel Document doc_id=excel1
修复说明
- 循环改用
IN RANGE语法实现范围遍历,同时先获取目标工作表的实际有效行数,避免硬编码行数导致读空或者漏读。 - 读取单元格时明确指定
sheet_name参数,确保读取的是目标Sheet2工作表。 - 新增
Close Excel Document关键字,避免Excel文件占用导致后续操作异常。 - 若运行后仍存在读值为空的问题,执行
pip install xlrd==1.2.0安装适配版本的依赖库,高版本xlrd已取消对xlsx格式的支持。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

