接口测试数据驱动之操作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')

备注:这个例子,需要运行的机器有对应的字体。
View Code

(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')
View Code

(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')
View Code

(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')
View Code

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')

 

posted @ 2019-09-10 23:45  小L小  阅读(415)  评论(0)    收藏  举报