Python-Excel处理
这是一个关于测试报告(Excel)的总结与绘制直方图的脚本。脚本的功能是实现对测试报告中多个工作页(sheet)提取P/Fp/F的单元格(cell),并分别统计数量,再据此绘制直方图。
一、模块的安装
我们需要用到以下几个模块:
1.pip:该工具包提供了对Python包的查找、下载、安装、卸载功能。
2.xlrd:读取excel
3.xlwt:写入excel
4.matplotlib:Python的2D绘图库
pip官网:https://pypi.org/project/pip/
为了下载pip.py先安装wget:
yum -y install wget
下载pip安装文件并安装:
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
安装驱动(ddt)、xlrd和xlwt:
pip install ddt
pip install xlrd
pip install xlwt
安装matplotlib:
sudo apt-get install python3-matplotlib
二、读取Excel——xlrd
首先,我们需要理解Excel文件的三层级对象:workbook、sheet、cell。
即:
workbook = xlrd.*
sheet = workbook.*
cell = sheet.cell*
1.xlrd基础接口用法
xlrd各接口用法:
(1) 打开文件
workbook = xlrd.open_workbook('123.xlsx')
(2) 获取文件中包含的所有工作表名称
sheets = workbook.sheet_names()
(3) 选定工作表
sheet = workbook.sheets()[0] #通过索引获取
sheet = workbook.sheet_by_index(0) #通过顺序获取
sheet = workbook.sheet_by_name('sheet1') #通过表名获取
(4) 获取行数和列数
nrows = sheet.nrows
ncols = sheet.ncols
(5) 打印“表名”“行数”“列数”
print(sheet.name,sheet.nrows,sheet.ncols)
(6) 获取全表数据
for i in range(1,nrows+1): #对于行,从第一行读取到总行数
for j in range(1,ncols+1): #对于列,从第一列读取到总列数
data = sheet.cell(i-1,j-1).value
Tips1:
for i in range(1,n)
i 的取值为1,2,3……n-1。
当然也可以写成:
for i in range(0,nrows):
for j in range(0,ncols):
data = sheet.cell(i,j).value
但我个人更倾向于第一种,因为第一种写法的意义更明确。
Tips2:对于工作表的第一行第一列
data = sheet.cell(0,0).value
Tips3:value表示“值”,是否加value决定输出格式。
data = sheet.cell(1,2).value
输出如下:
--------------------------------------------------------------------------
data = sheet.cell(1,2)
输出如下:
2.循环读取sheet
代码如下:
workbook = xlrd.open_workbook(fname)
sheets = workbook.sheet_names() #获取所有工作表名称并形成数组
nsheets = len(sheets) #得出数组长度
for z in range(1,nsheets+1):
sheet = workbook.sheet_by_index(z-1)