0
点赞
收藏
分享

微信扫一扫

python与Excel


一、一些小栗子

github不太会用,先拿博客记录一下。

结构:

python与Excel_javascript

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

python与Excel_数据_02

 

heartBeat.xls

python与Excel_数据_03

############################################我是分界线##############################################

这里仔细讲一下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)  # 把列由数字转换为字母表示


三、问题处理

3.1 问题1:​python读取excel,数字都是浮点型,日期格式是数字​

 

 

举报

相关推荐

0 条评论