python实现报表自动化应该怎么做

python实现报表自动化应该怎么做?如果能够实现报表自动化,那我们将节约不少的时间,更高效的完成工作内容。那么,如何利用python实现报表自动化呢?本文将介绍xlwt、xlrd、xlutils的常用功能,xlwt写Excel时公式的应用以及xlwt写入特定目录来手把手带大家实现报表自动化。

目前成都创新互联已为成百上千家的企业提供了网站建设、域名、网络空间、网站托管运营、企业网站设计、临夏州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

python实现报表自动化应该怎么做

 

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实现报表自动化应该怎么做
本文地址:http://scyanting.com/article/jodicg.html