接口测试数据驱动之操作excel文件
18.4.1 xlrd 库安装
Xlrd 库跟其他第三方库一样,都是通过 pip install xlrd 命令来安装。
18.4.2 在 Python3 下打开excel文件,获取一个Book()对象
例如:读取 result.xls 的数据。

程序实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 result_file =xlrd.open_workbook("./result.xls")
18.4.3 获取 sheets 数目

代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("./result.xls") print(file.nsheets)
18.4.4 获取 sheets 列表
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("./result.xls") print(file.sheets())
18.4.5 获取 sheets name 列表
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("./result.xls") print(file.sheet_names())
18.4.6 获取文件中的 Sheet
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("./result.xls") print(file.sheets()) sheet1 = file.sheets()[0] #sheets返回一个sheet列表 sheet2 = file.sheet_by_index(0) #通过索引顺序获取 sheet3 = file.sheet_by_name('保单查询结果清单') #通过名称获取
18.4.7 获取行数,列数
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("result.xls") # 获取当前文件的表 shxrange = range(file.nsheets) try: sh = file.sheet_by_name("保单查询结果清单") except: print("no sheet in %s named '保单查询结果清单'",format("result.xls")) # 获取行数 nrows =sh.nrows # 获取列数 ncols = sh.ncols #打印表格的行数和列数 print("nrows{0},ncols{1}".format(nrows,ncols))
18.4.8 获取某行,某行值列表,某列,某列值列表
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("result.xls") # 获取当前文件的表 shxrange = range(file.nsheets) try: sh = file.sheet_by_name("保单查询结果清单") print(sh) except: print("no sheet in %s named '保单查询结果清单'",format("result.xls")) #获取第一行 print(sh.row(1)) #获取第一行值列表 print(sh.row_values(1)) #获取第一列 print(sh.col(1)) #获取第一列值列表 print(sh.col_values(1))
18.4.9 获取单元格的值
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("result.xls") # 获取当前文件的表 shxrange = range(file.nsheets) try: sh = file.sheet_by_name("保单查询结果清单") print(sh) except: print("no sheet in %s named '保单查询结果清单'",format("result.xls")) #获取单元格的值 cell = sh.cell(1,1) print(cell) cell_value1 = sh.cell_value(1,1) print(cell_value1) cell_value2 = sh.cell(1,1).value print(cell_value2)
注意:用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。
18.4.10 读取 Excel 应用案例
案例1:获取result.xls文件下的保单查询结果清单表数据
代码实现:
#导入 xlrd 库 import xlrd # 打开 Excel 读取文件,open_workbook()为打开 Excel文件的方法,参数为:文件名 file =xlrd.open_workbook("result.xls") # 获取当前文件的表 shxrange = range(file.nsheets) try: sh = file.sheet_by_name("保单查询结果清单") except: print("no sheet in %s named '保单查询结果清单'",format("result.xls")) # 获取行数 nrows =sh.nrows # 获取列数 ncols = sh.ncols #打印表格的行数和列数 print("nrows{0},ncols{1}".format(nrows,ncols)) #获取第二行第一列数据(第一行是标题) cell_value = sh.cell_value(1,0) print(cell_value) # 新建一个空的列表 row_list =[] for i in range(0,nrows): row_data =sh.row_values(i) row_list.append(row_data) # 输出数据 print(row_list)
运行结果:

将xls里的数据转换成字典格式的数据
代码实现
from openpyxl import load_workbook #加载文件 wb = load_workbook('./data.xlsx') # print('输出文件所有的工作表名:',wb.sheetnames) ws = wb['Sheet1'] #将文档中的数据转换成数组字典 data_list=[] dict =dict() for i in range(2,ws.max_row+1): for j in range(1,ws.max_column+1): key = ws.cell(1,j).value value = ws.cell(i,j).value dict[key]=value data_list.append(dict)
18.4.11 xlwt 库安装
Xlrd 库只读,如果想新建一个test.xls文件,就需要安装 xlwt 库,跟其他第三方库一样,都是通过 pip install xlwt 命令来安装。
18.4.12 创建一个Excel文件并创建一个Sheet
程序实现:
from xlwt import * book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') book.save('myExcel.xls')
Workbook 类可以有 encoding 和 style_compression 参数。
【encoding】:设置字符编码,
【style_compression】:表示是否压缩。
这样设置:w = Workbook(encoding='utf-8'),就可以在excel中输出中文了。默认是ascii。
18.4.13 向sheet写入内容
格式:sheet.write(r, c, label="", style=Style.default_style)
(1)简单写入。
程序实现:
from xlwt import * book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') # 在sheet1 中简单插入内容 sheet.write(0, 0, label = 'Row 0, Column 0 Value') # 保存内容 book.save('test1.xls')
(2)设置格式写入。
代码实现:
from xlwt import * import xlwt book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') # 设置格式 font = xlwt.Font() # 字体 font.name = 'Times New Roman' font.bold = True font.underline = True font.italic = True style = xlwt.XFStyle() # 创建一个格式 style.font = font # 设置格式字体 # 在sheet1 中插入格式化的内容 sheet.write(1, 0, label = 'Formatted value', style) # Apply the Style to the Cell # 保存内容 book.save('test2.xls') 备注:这个例子,需要运行的机器有对应的字体。
(3)写入日期。
程序实现:
om xlwt import * import xlwt import time book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') style = xlwt.XFStyle() #写入当前时间 time = time.strftime("%Y%m%d%H%M%S", time.localtime()) style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0 sheet.write(0, 0, time, style) # 保存内容 book.save('test3.xls')
(4)写入公式。
程序实现:
from xlwt import * import xlwt book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') #写入公式 sheet.write(0, 0, 5) # Outputs 5 sheet.write(0, 1, 2) # Outputs 2 sheet.write(1, 0, xlwt.Formula('A1*B1')) # 输出 "10" (A1[5] * A2[2]) sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # 输出 "7" (A1[5] + A2[2]) # 保存内容 book.save('test4.xls')
(5)写入链接。
程序实现:
from xlwt import * import xlwt book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') #写入链接 sheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) #输出 "Google"链接到http://www.google.com # 保存内容 book.save('test5.xls')
18.4.14 xlutils 库安装
如果想修改一个test.xls文件内容,就需要安装 xlutils 库,跟其他第三方库一样,也是通过 pip install xlutils 命令来安装。
18.4.15 修改Excel表内容
原理:复制一个 xlrd.Book 对象,生成一个 xlwt.Workbook 对象,可以对 xlwt.Workbook 进行修改。
例子:
第一步:先新建一个test1.xls文件,在里面写入4条数据。
程序实现:
from xlwt import * from xlrd import open_workbook from xlutils.copy import copy #新建一个 test1.xls 的文件,并在新建的文件里写入内容。 book = Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') sheet.write(0, 0, label = 'name') sheet.write(0, 1, label = 'age') sheet.write(1, 0, label = 'xiao') sheet.write(1, 1, label = '18') book.save('test1.xls')
第二步:修改test1.xls文件内容。
程序实现:
from xlwt import * from xlrd import open_workbook from xlutils.copy import copy #第二步:打开文件,修改文件内容 book = open_workbook('test1.xls') wb = copy(book) #wb即为xlwt.WorkBook对象 ws = wb.get_sheet(0) #通过get_sheet()获取的sheet有write()方法 ws.write(1, 0, '张三') ws.write(1, 1, '28') wb.save('test1.xls')

浙公网安备 33010602011771号