在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
如果能够实现报表自动化,那我们将节约不少的时间,更高效的完成工作内容。那么,如何利用python实现报表自动化呢?本文将介绍xlwt 、xlrd、xlutils的常用功能,xlwt写Excel时公式的应用以及xlwt写入特定目录来手把手带大家实现报表自动化。
1、python写excel
(1)准备工作安装xlwt :在终端中输入pip install xlwt或者easy_install xlwt引入xlwt包 :
import xlwt # 写
(2)基础教程新建工作簿&增加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了
(3)实战我们可以先新建一个工作簿,然后往里添加两个sheet,然后查看效果
#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)
save('xlwt_tutorial')
我们开始往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
(1)准备工作安装xlrd :在终端中输入pip install xlrd或者easy_install xlrd引入xlrd包 :
import xlrd # 读
(2)基础教程&实战打开一个Excel,然后输出所有sheet的名字
#coding=utf-8
import xlrd
import 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’北京大学’]
# 获取单元格内容
print sheet1.cell(1,0).value
# 获取单元格内容的数据类型
print sheet1.cell(1,1).ctype
#ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
输出为:张三2
3、xlutils 常用功能
(1)准备工作安装xlutils :在终端中输入pip install xlutils或者easy_install xlutils引入xlutils包 :
import xlutils
(2)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')
输出为:表一输出的表格已经改变。
(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-8
import xlwt
import os
import shutil
path = '../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)
以上就是利用python实现报表自动化的具体步骤,大家都掌握了吗?如果你还没入门Python,不理解如何利用python实现报表自动化。不妨现在就上博学谷学习零基础入门Python的免费课程,相信这样一来,就能掌握更多的职场必备技能。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
学Python需要安装什么软件?Python软件工具大全
工欲善其事必先利其器。初学者在学Python的时候,往往会因为没有好用的软件工具,走了很多弯路。因此一些好用的软件工具,可以极大地提高开发效率,那么学Python需要安装什么软件呢?本文为大家整理了几款常用的Python软件工具。
5964
2019-08-20 09:54:41
参加Python培训需要多少钱?
相对于自学,参加培训班必然需要支付一定的学习费用。那就目前Python培训市场而言,参加培训需要多少钱呢?
5435
2020-05-15 18:19:45
Flask框架学习之环境配置
Flask框架作为轻量级Web应用框架,最大的特征是轻便灵活,第三方库的选择面广,容易上手,试错成本低。为了帮助大家学习并掌握Flask框架,本文将会带着大家一步步的完成Flask安装的环境配置工作,让我们马上开始吧~
4338
2020-08-07 19:31:41
Python基础进阶需要掌握哪些知识点?
Python将是每个程序员的标配,有编程基础再掌握Python语言对于日后的升职加薪更有利。Python语言简洁利于理解,语法上相对容易能够让开发者更专注于业务逻辑的实现。学完Python可以从事web开发,爬虫开发、云计算,自动化运维,人工智能、桌面软件等多方面工作,目前市场需求很多发展机会很多。
4053
2020-08-24 16:59:28
Python开发难学吗?适合初学者吗?
Python开发难学吗?Python入门阶段零基础学员打好基础是非常重要的。在非常高的抽象计算中,高级的Python程序设计非常难学,高级程序语言不等于简单,但对于初学者和完成普通任务Python语言是非常简单易用的。
3653
2021-02-04 11:01:50
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息
