python3使用openpyxl完成excel数据读和写
工具 python3操作excel数据,对于excel 2007及以上版本,一般使用openpyxl
来进行操作;windows下,只需要控制台执行
即可,若是使用pipenv
进行类库管理的,控制台下进入工程所在目录(Pipfile
所在路径),执行
即可。对于pipenv
在之前的一篇博客中有提及:
python项目依赖管理工具
安装完成之后,执行命令python
进入python交互环境,引包:
不报错则安装成功
常用操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 引包 import openpyxl # excel文件路径 file = "G:\workstation\py_workstation\DataDriverTest\DdtData\testData.xlsx" # 打开excel wb = openpyxl.load_workbook(file) # 获取指定sheet页,名称:“search_data” sheet = wb["search_data"] # 获取所有sheet的名称 sheets = wb.sheetnames # 获取行数 nrow = sheet.max_row # 获取列数 ncol = sheet.max_column # 获取单元格值 cell_1 = sheet.cell(row=2, column=2).value # 单元格赋值 cell_2 = sheet.cell(row=2, column=2, value="YIDA") # 保存excel wb.save(file)
读写excel 进行ddt时,有的时候测试数据,甚至测试用例是在excel中,如下表,标示出了测试数据,预期结果。
number testdata expectdata 1 Jordan DRFSA 2 Garnett Kevin 3 Oneal Shaquille 4 Nowitzki rsdffd 5 Duncan Tim
首先是尝试使用python3 把数据写入excel
写数据 直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @author: kyle @time: 2018/2/9 13:25 """ import openpyxl file = "G:/workstation/py_workstation/DataDriverTest/DdtData/test.xlsx" wb = openpyxl.load_workbook(file) sheet = wb.active sheet.title = "search_data" value = [ ["number", "testdata", "expectdata"], ["1", "Jordan", "DRFSA"], ["2", "Garnett", "Kevin"] ] for i in range(0, 3): for j in range(0, len(value[i])): sheet.cell(row=i+1, column=j+1, value=str(value[i][j])) wb.save(file)
读数据 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @author: kyle @time: 2018/2/9 14:15 """ import openpyxl # 打开excel wb = openpyxl.load_workbook("G:/workstation/py_workstation/DataDriverTest/DdtData/testData.xlsx") # 获取指定sheet页 sheet = wb["search_data"] # 获取列表中最大行数和最大列数 nrows = sheet.max_row ncol = sheet.max_column testdata = [] # 获取2到6行 for i in list(range(2,nrows+1)): tmplist = [] tmplist.append(sheet.cell(row=i, column=2).value) #2,2 tmplist.append(sheet.cell(row=i, column=3).value) #2,3 testdata.append(tmplist) print(testdata)
完成!!!
后记 估计是快过年,快放假了,都没什么心思敲了;真的是弄了好久才读出数据。。。python3操作excel是真的跟python2很不一样,网上的教程很多都不能用,最明显的就是: python2可以遍历工作表区域每一行,跳过第一行,直接写成
1 for row in sheet.rows[1:]:
但是python3实现不了。。 不过自己能折腾出来,感觉还是有点小小的成就感的~
附环境版本:
1 2 3 4 python 3.6 openpyxl 2.5.0 win 10 office 2013