这篇文章主要介绍了python实现报表主动化详解,涉及python读,写excel—xlwt常用功能,xlutils 常用功能,xlwt写Excel时公式的应用等相关内容,具有肯定参考价值,必要的朋友可以相识下。
本篇文章将介绍:
xlwt 常用功能
xlrd 常用功能
xlutils 常用功能
xlwt写Excel时公式的应用
xlwt写入特定目次(路径设置)
xlwt Python语言中,写入Excel文件的扩展工具。可以实现指定表单、指定单位格的写入。支持excel03版到excel2013版。利用时请确保已经安装python环境
xlrd Python语言中,读取Excel的扩展工具。可以实现指定表单、指定单位格的读取。利用时请确保已经安装python环境。
NOTICE:
xlwt对Excel只能进行只写操作
xrrd对Excel只能进行只读操作
此外,另有xlutils.copy可以实现Excel的复制再编辑。
1.python写excel — xlwt常用功能
A.准备工作
安装xlwt :在终端中输入pip install xlwt大概easy_install xlwt
引入xlwt包 :
B.底子教程
新建工作簿&增加sheet: 新建一个工作簿,然后往里添加sheet
- f = xlwt.Workbook() # 创建工作簿sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)#一个excel表格中可以添加多个sheet
复制代码 往sheet中写入内容: sheet.write函数可以传三个参数
第i(参数1)第j(参数2)列存入内容(参数3)
- sheet1.write(i, j, '第i行第j列存放此内容', style)# 这条语句实现的功能就是往第i行第j列存第三个参数的内容,第四个参数是样式(如字体,背景),可以不传第四个参数。
复制代码 合并单位格并写入内容:
- sheet1.write_merge(x, x + m, y, y + n, '内容', style)# 这条y语句表示将[x:x+m]行[y:y+n]列的矩阵合并成一个单元格。存放第五个参数的内容,同理,style参数可以不传参
复制代码 最后利用f.save(‘demo')
就可以把f保存到excel了
C.实战
我们可以先新建一个工作簿,然后往里添加两个sheet,然后检察效果
- #coding=utf-8import xlwt f = xlwt.Workbook() # 创建工作簿sheet1 = f.add_sheet(u'葡小萄', cell_overwrite_ok=True)sheet2 = f.add_sheet(u'小葡萄', cell_overwrite_ok=True) f.save('xlwt_tutorial')
复制代码 效果如下,发现表格xlwt_tutorial中有两个sheet。
我们开始往sheet中写入内容,不传入style参数
先只利用write函数
- #coding=utf-8
- import xlwt
- f = xlwt.Workbook() # 创建工作簿
- sheet1 = f.add_sheet(u'葡小萄', cell_overwrite_ok=True)
- sheet2 = f.add_sheet(u'小葡萄', cell_overwrite_ok=True)
- row = 0
- temp = [u'姓名',u'年龄',u'学校',u'专业']
- for pos,v in enumerate(temp):
- sheet1.write(row,pos,v)
- row += 1
- sheet1.write(row,0,u'葡萄')
- sheet1.write(row,1,18)
- sheet1.write(row,2,u'北京电影学院')
- row += 1
- sheet1.write(row,0,u'椰子')
- sheet1.write(row,1,20)
- sheet1.write(row,2,u'帝国国王科技大学')
- f.save('xlwt_tutorial')
复制代码 效果如下,我们建立了一个3行4列的表格。(write函数行和列值都是从0开始的)
下面我们利用write_merge函数来合并单位格并写入
在f.save之前添加一行代码
- sheet1.write_merge(1,2,3,3,u'汉语言文学')
复制代码 效果如下,将第2-3行第4列合并
2.pythonxd读excel —xlrd常用功能
A.准备工作
安装xlrd :在终端中输入pip install xlrd大概easy_install xlrd
引入xlrd包 :
B.底子教程&实战
打开一个Excel,然后输出全部sheet的名字
- #coding=utf-8 import xlrdimport uniout f = xlrd.open_workbook(r'xlwt_tutorial')print f.sheet_names()
复制代码 输出:[u'葡小萄', u'小葡萄']
得到表格里的全部的sheet
- for i in range(len(f.sheet_names())): sheet1 = workbook.sheet_by_index(i)
复制代码 得到sheet中的内容
- f = xlrd.open_workbook(r'xlwt_tutorial')
- sheet1 = f.sheet_by_index(0) #打开第一个sheet
- sheet2 = f.sheet_by_name(u'小葡萄') #打开名字为小葡萄的sheet
- #输出sheet的名称,行数,列数
- print sheet1.name,sheet1.nrows,sheet1.ncols
- print sheet2.name,sheet2.nrows,sheet2.ncols
复制代码 输出为:
葡小萄 3 4
小葡萄 0 0
- print sheet1.row_values(1) #获取第二行内容print sheet1.col_values(2) #获取第三列内容
复制代码 输出为:
[u'葡萄', 18.0, u'北京电影学院', u'汉语言文学']
[u'学校', u'北京电影学院', u'帝国国王科技大学']
输出为:
葡萄
2
3.xlutils 常用功能
A.准备工作
安装xlutils :在终端中输入pip install xlutils大概easy_install xlutils
引入xlutils包 :
B.xlutils中copy功能
我们大概会遇到一个问题,想对一个存储好的Excel进行编辑。
但是xlrd是只读模式,不能进行编写。
而xlwt是只写模式,不能读入Excel文件进行编辑。
我们可以接纳xlrd打开一个文档,后接纳xlutils中copy功能把文档拷贝,然后进行编辑即可。
- import xlrd
- from xlutils.copy import copy
-
- f = xlrd.open_workbook(r'xlwt_tutorial')
- wb = copy(f) # 将f拷贝到wb
-
- sheet1 = wb.get_sheet(0) # 打开sheet
- print sheet1.name
- sheet1.write(3,0,'change')
-
- wb.save('xlwt_tutorial')
复制代码 输出为:
葡小萄
输出的表格已经改变。
PS: 可以看到第二行第四列和第三行第四列合并格已经在COPY的时间被毁掉了。
4.xlwt写Excel时公式的应用
我们写用xlwt写一个表格
- #coding=utf-8
- import xlwt
- f = xlwt.Workbook() # 创建工作簿
- sheet1 = f.add_sheet(u'得分统计', cell_overwrite_ok=True)
- mdict = {"monkey":{"writing":80,"reading":60,"speaking":70,"listening":60},
- "grape":{"writing":100,"reading":80,"speaking":70,"listening":60}}
- sheet1.write(0,0,u'得分统计')
- sheet1.write(1,0,u'书法得分')
- sheet1.write(2,0,u'阅读得分')
- sheet1.write(3,0,u'演讲得分')
- sheet1.write(4,0,u'听力得分')
- temp = ['writing','reading','speaking','listening']
- for pos,name in enumerate(mdict):
- sheet1.write(0,pos+1,name)
- for p,v in enumerate(temp):
- sheet1.write(p+1,pos+1,mdict[name][v])
- f.save('得分统计')
复制代码 打开表格为:
我们现在想做的是统计grape的总分和monkey的总分:
在f.save之前加入代码:
- sheet1.write(5,0,u'总分统计')
- for i in range(len(mdict)):
- forstr = chr(65+i+1)+'2+'+chr(65+i+1)+'3+'+chr(65+i+1)+'4+'+chr(65+i+1)+'5'
- print forstr
- sheet1.write(5,i+1,xlwt.Formula(forstr))
复制代码 输出为:
B2+B3+B4+B5
C2+C3+C4+C5
打开表格为:
5.xlwt写入特定目次(路径设置)
由于代码分层的缘故,使代码整体框架精致。
我们必要把文件写入到特定目次下。
但是由于xlwt中没有直接写入到特定目次的函数。
因此利用shutil.move函数来把文件MOV到特定目次下:
- #coding=utf-8import xlwtimport osimport shutilpath = '../sheet/'isExists = os.path.exists(path) # 判断目次是否存在if not isExists: # 假如目次不存在,新建目次 os.makedirs(path)f = xlwt.Workbook() # 创建工作簿sheet1 = f.add_sheet(u'得分统计', cell_overwrite_ok=True)mdict = {"monkey":{"writing":80,"reading":60,"speaking":70,"listening":60},"grape":{"writing":100,"reading":80,"speaking":70,"listening":60}}sheet1.write(0,0,u'得分统计')sheet1.write(1,0,u'书法得分')sheet1.write(2,0,u'阅读得分')sheet1.write(3,0,u'演讲得分')sheet1.write(4,0,u'听力得分')temp = ['writing','reading','speaking','listening']for pos,name in enumerate(mdict): sheet1.write(0,pos+1,name) for p,v in enumerate(temp): sheet1.write(p+1,pos+1,mdict[name][v])sheet1.write(5,0,u'总分统计')
- for i in range(len(mdict)):
- forstr = chr(65+i+1)+'2+'+chr(65+i+1)+'3+'+chr(65+i+1)+'4+'+chr(65+i+1)+'5'
- print forstr
- sheet1.write(5,i+1,xlwt.Formula(forstr))f.save('得分统计')shutil.move(u'得分统计', path)
复制代码 效果图:
最后: 为了回馈铁杆粉丝们,我给各人整理了完备的软件测试视频学习教程,朋友们假如必要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完备的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰巨的旅程,希望也能帮助到你!
软件测试口试文档
我们学习必然是为了找到高薪的工作,下面这些口试题是来自阿里、腾讯、字节等一线互联网大厂最新的口试资料,并且有字节大佬给出了权势巨子的解答,刷完这一套口试资料信赖各人都能找到满足的工作。
口试文档获取方式:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |