zoukankan      html  css  js  c++  java
  • RF(读写 excel)

    1、安装 ExcelLibrary 库:pip install robotframework-ExcelLibrary 

    # execfile(join(dirname(__file__), 'ExcelLibrary', 'version.py'))  
    
    # 改成如下代码
    exec(open(join(dirname(__file__), 'ExcelLibrary', 'version.py')).read())
        • 文件 ExcelLibrary.py
          • 将所有的 print xxx 语句修改为 print(xxx)
        • 文件 __init__.py
    # from ExcelLibrary import ExcelLibrary      
    # from version import VERSION  
    
    # 改为如下代码    
    from .ExcelLibrary import ExcelLibrary      
    from .version import VERSION
        • 文件 ExcelLibrary.py
    # from version import VERSION
    
    # 改为如下代码
    from .version import VERSION
    • 我们无法通过 pip 安装,只能手动安装了,下载压缩包解压,根据上面所述去进行修改,使用 python setup.py install, 然后可以使用 pip list 继续查看
    • 载 RIDE 工具套件中导入 ExcelLibrary 库,报红
      • 查看 tools --> view ride log 日志
      • 缺少依赖库
        • pip install xlrd
        • pip install xlwt
        • pip install xlutils
        • pip install natsort

     2、常用关键字

    • Open Excel  打开 Excel
    •  Get Column Count  获取列的总列数
    Open Excel    D:\work_doc\student.xls    
    ${col}    Get Column Count    Sheet1
    log    ${col}    
    
    #结果如下
    20200408 22:04:59.212 :  INFO : 3
    • Get Column Values  获取每列的数据,返回的是数组列表
    Open Excel    D:\work_doc\student.xls        
    ${col}    Get Column Values    Sheet1    0
    log    ${col}        
    
    #结果如下
    20200408 22:07:10.321 :  INFO : [('A1', 'name'), ('A2', '张三'), ('A3', '李四'), ('A4', '王五')]
    • Get Number Of Sheets  获取所有 Sheet 页数量
    Open Excel    D:\work_doc\student.xls
    ${col}    Get Number Of Sheets
    log    ${col}
    
    #结果如下
    20200408 22:08:46.694 :  INFO : 3
    • Get Row Count  获取行的总行数
    Open Excel    D:\work_doc\student.xls    
    ${col}    Get Row Count    Sheet1
    log    ${col}    
    
    #结果如下
    20200408 22:09:40.136 :  INFO : 4
    •  Get Row Values  获取每行的数据,返回的是数组列表
    Open Excel    D:\work_doc\student.xls        
    ${col}    Get Row Values    Sheet1    0
    log    ${col}        
    
    #结果如下
    20200408 22:10:23.033 :  INFO : [('A1', 'name'), ('B1', 'age'), ('C1', 'sex')]
    • Get Sheet Names  获取 Sheet 页的名称,返回列表
    Open Excel    D:\work_doc\student.xls
    ${col}    Get Sheet Names
    log    ${col}
    
    #结果如下
    20200408 22:11:10.860 :  INFO : ['Sheet1', 'Sheet2', 'Sheet3']
    • Get Sheet Values  获取指定 Sheet 页的数据,返回的是数组列表
    Open Excel    D:\work_doc\student.xls    
    ${col}    Get Sheet Values    Sheet1
    log    ${col}    
    
    #结果如下
    20200408 22:11:58.174 :  INFO : [('A1', 'name'), ('A2', '张三'), ('A3', '李四'), ('A4', '王五'), ('B1', 'age'), ('B2', 18.0), ('B3', 20.0), ('B4', 21.0), ('C1', 'sex'), ('C2', ''), ('C3', ''), ('C4', '保密')]
    • Get Workbook Values  获取所有 Sheet 页的数据
    Open Excel    D:\work_doc\student.xls
    ${col}    Get Workbook Values
    log    ${col}
    
    #结果如下
    20200408 22:13:03.345 :  INFO : [['Sheet1', ('A1', 'name'), ('A2', '张三'), ('A3', '李四'), ('A4', '王五'), ('B1', 'age'), ('B2', 18.0), ('B3', 20.0), ('B4', 21.0), ('C1', 'sex'), ('C2', ''), ('C3', ''), ('C4', '保密')], ['Sheet2'], ['Sheet3']]
    • Read Cell Data By Coordinates  读取单元格数据,通过下标(sheetname | column | row)
    Open Excel    D:\work_doc\student.xls            
    ${col}    Read Cell Data By Coordinates    Sheet1    2    1
    log    ${col}            
    
    #结果如下
    20200408 22:14:39.192 :  INFO : 男
    •  Read Cell Data By Name  读取单元格数据,通过坐标(sheetname | C4)
    Open Excel    D:\work_doc\student.xls        
    ${col}    Read Cell Data By Name    Sheet1    C4
    log    ${col}        
    
    #结果如下
    20200408 22:16:49.325 :  INFO : 保密
    • Add New Sheet  增加新的 Sheet 页
    • Save Excel  保存 Excel 文件
      • 默认保存到项目工程目录下
    Open Excel    D:\work_doc\student.xls
    Add New Sheet    NewSheet
    Save Excel    stu.xls    #默认保存到项目工程目录下
    Open Excel    D:\work_doc\student.xls
    Add New Sheet    NewSheet
    Save Excel    D:\work_doc\student2.xls    #自定义保存到哪里
    • Put Date To Cell  给单元格写入日期
    Open Excel    D://work_doc//student.xls
    Put Date To Cell    Sheet1    3    2    9.4.2020
    Save Excel        D://work_doc//stu.xls            
    • Put Number To Cell  给单元格写入数字
    Open Excel    D://work_doc//student.xls            
    Put Number To Cell    Sheet1    3    3    18
    Save Excel        D://work_doc//stu.xls            
    • Put String To Cell  给单元格写入字符串
    Open Excel    D://work_doc//student.xls            
    Put String To Cell    Sheet1    3    1    zhangsan
    Save Excel        D://work_doc//stu.xls            
      • 在写入内容时常见报错如下:
        • IndexError: list index out of range  索引越界
        • AttributeError: 'NoneType' object has no attribute 'save'  说None没有save这个方法
        • 原因:原来代码里首先调用了 get_sheet.cell 方法,这个方法在该单元格内没有内容时会报越界错误(第 1 个问题的来源),然后又判断了这个单元格内的格式,若不是 XX 格式,则不会运行 self.tb=copy(self.wb),不运行这句话,则 self.tb 为默认的 None 值, self.tb.save 时就会报错(所以第 2 个问题就出来了)
        • 解决方案:把限制的代码都去掉,把如下代码注释掉,且取消缩进

    • Open Excel Current Directory  在项目所在当前路径下打开 Excel
    • Save Excel Current Directory  在项目所在当前路径下保存Excel
    Open Excel Current Directory    student.xls            
    Put String To Cell    Sheet1    3    1    zhangsan
    Save Excel Current Directory    stu.xls            

    3、ExcelLibrary 库使用注意事项

    • 只支持 xls 格式的 Excel 文档  
    • Excel 表格中的数值,代码读取后会显示为浮点型  
      • 如 123,读取后显示为 123.00,造成传参不一致  
      • 解决方案:使用 Evaluate 调用 Python 进行强制转型  
    # 问题如下
    
    Open Excel    d://student.xls            
    ${age}    Read Cell Data By Coordinates    Sheet1    1    1
    log    ${age}            
    
    # 结果如下
    20200409 21:35:10.391 :  INFO : ${age} = 18.0
    20200409 21:35:10.391 :  INFO : 18.0    # 浮点型
    # 通过 Evaluate 强转解决方案如下
    
    Open Excel    d://student.xls            
    ${age}    Read Cell Data By Coordinates    Sheet1    1    1
    ${age1}    Evaluate    int(${age})
    log    ${age1}        
    
    # 运行结果如下
    20200409 21:36:50.495 :  INFO : ${age} = 18.0
    20200409 21:36:50.496 :  INFO : ${age1} = 18
    20200409 21:36:50.497 :  INFO : 18    # 转为 int 型
  • 相关阅读:
    BlackBerry Localiztion Websites
    BlackBerry device debug
    (收藏)Android VoIP
    How to access the folder of Android
    listView高度控制 底部tabhost标签 用android:layout_below="@+id/tab_all"
    自定义TabHost,TabWidget样式 .
    点击TextView 弹出复制选项
    如何实现验证两次输入的密码是否一致
    Android 获取SDCard上图片和视频的缩略图
    去掉activity(tabhost )顶部的gradient 黑线 横线 阴影
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/11697239.html
Copyright © 2011-2022 走看看