一、一些小栗子
github不太会用,先拿博客记录一下。
结构:
Utils 文件夹下
ReadExcelCase.py
# -*- coding:utf-8 -*-
import xlrd
# 从excel文件中读取测试用例
class ReadExcelCase(object):
def ReadExcelCase(self,ExcelName,sheetNme):
cls = []
ExcelName = xlrd.open_workbook('../DataPool/{}'.format(ExcelName))
sheet = ExcelName.sheet_by_name(sheetNme)
nrows = sheet.nrows
for i in range(nrows):
if sheet.row_values(i)[0] != u'case_name':
#不读取case_name的那一行
cls.append(sheet.row_values(i))
return cls
ReadExcelData.py
import xlrd
class ReadExcelData(object):
def returnExcelData(self,ExcelName,sheetNme,x,y):
ExcelName=xlrd.open_workbook('../DataPool/{}'.format(ExcelName))
Excelsheet=ExcelName.sheet_by_name(sheetNme)
TestData=Excelsheet.cell(x,y).value
return TestData
接下来是方法的调用:
test1
# -*- coding:utf-8 -*-
#作者:陈帅
#实现功能:读取Excel 形成list
from Utils.ReadExcelCase import ReadExcelCase
localrank_xls =ReadExcelCase().ReadExcelCase("heartBeat.xlsx","student")
print(localrank_xls)
print('第一行第一列元素:{}'.format(localrank_xls[0][0]))
localrank_xls=",".join('%s' %id for id in localrank_xls)
print(localrank_xls)
test2
# -*- coding:utf-8 -*-
#作者:陈帅
#实现功能:利用@paramunittest.parametrized读取Excel 形成list
import unittest
import paramunittest
from Utils.ReadExcelCase import ReadExcelCase
localrank_xls =ReadExcelCase().ReadExcelCase("heart.xlsx","live")
@paramunittest.parametrized(*localrank_xls)
class test2(paramunittest.ParametrizedTestCase):
def setParameters(self, case_name, protocol, method):
#一定要一一对应
self.case_name=case_name
self.prococol=int(protocol)
self.method=int(method)
def testcheck(self):
self.assertEqual(self.prococol,self.method)
if __name__ == "__main__":
unittest.main(verbosity=2)
test3
# -*- coding:utf-8 -*-
#作者:陈帅
#实现功能:以坐标的形式读取Excel
from Utils.ReadExcelData import ReadExcelData
print('第二行第一列:{}'.format(ReadExcelData().returnExcelData('heart.xlsx','live',1,0))
最后是数据Excel
heart.xls
heartBeat.xls
############################################我是分界线##############################################
这里仔细讲一下python 与excel
二、常用方法
1、导入模块:import xlrd
2、打开文件:x1 = xlrd.open_workbook("data.xlsx")
3、获取sheet:
- 获取所有sheet名字:x1.sheet_names()
- 获取sheet数量:x1.nsheets
- 获取所有sheet对象:x1.sheets()
- 通过sheet名查找:x1.sheet_by_name("test”)
- 通过索引查找:x1.sheet_by_index(3)
4、获取sheet的汇总数据:
- 获取sheet名:sheet1.name
- 获取总行数:sheet1.nrows
- 获取总列数:sheet1.ncols
5、单元格批量读取:
a)行操作:
- sheet1.row_values(0) # 获取第一行所有内容,合并单元格,首行显示值,其它为空。
- sheet1.row(0) # 获取单元格值类型和内容
- sheet1.row_types(0) # 获取单元格数据类型
b) 表操作
- sheet1.row_values(0, 6, 10) # 取第1行,第6~10列(不含第10表)
- sheet1.col_values(0, 0, 5) # 取第1列,第0~5行(不含第5行)
- sheet1.row_slice(2, 0, 2) # 获取单元格值类型和内容
- sheet1.row_types(1, 0, 2) # 获取单元格数据类型
6、特定单元格读取:
a) 获取单元格值:
- sheet1.cell_value(1, 2)
- sheet1.cell(1, 2).value
- sheet1.row(1)[2].value
b) 获取单元格类型:
- sheet1.cell(1, 2).ctype
- sheet1.cell_type(1, 2)
- sheet1.row(1)[2].ctype
注释:ctype类型
ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
XL_CELL_EMPTY: 'empty', XL_CELL_TEXT: 'text', XL_CELL_NUMBER: 'number', XL_CELL_DATE: 'xldate', XL_CELL_BOOLEAN: 'bool', XL_CELL_ERROR: 'error', XL_CELL_BLANK: 'blank',
7、(0,0)转换A1:
- xlrd.cellname(0, 0) # (0,0)转换成A1
- xlrd.cellnameabs(0, 0) # (0,0)转换成$A$1
- xlrd.colname(30) # 把列由数字转换为字母表示
原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9273721.html
三、问题处理
3.1 问题1:python读取excel,数字都是浮点型,日期格式是数字
解决办法:https://www.cnblogs.com/xxiong1031/p/7069006.html