• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 如何利用python实现报表自动化?

发布时间:2020-03-23 10:41:23 浏览 4848 来源:博学谷 作者:照照

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

     

    python实现报表自动化

     

    1、pythonexcel

     

    (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')

     

    这样我们就建立了一个34列的表格。(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)xlutilscopy功能我们可能会遇到一个问题,想对一个存储好的Excel进行编辑***。但是xlrd是只读模式,不能进行编写。而xlwt是只写模式,不能读入Excel文件进行编辑。我们可以采用xlrd打开一个文档,后采用xlutilscopy功能把文档拷贝*,然后进行编辑即可。

     

    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)xlwtExcel时公式的应用我们写用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?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码