一、一些小栗子

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

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐