如果能够实现报表自动化,那我们将节约不少的时间,更高效的完成工作内容。那么,如何利用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函数

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中的内容

#coding=utf-8
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的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

加群695185429即可免费获取。

如何利用python实现报表自动化?让你更高效的完成工作内容的更多相关文章

  1. 利用Python与selenium自动化模拟登陆12306官网!

    近年来,12306的反爬越来越来严重,从一年前的 获取tk参数后到现在增加了 JS.CSS等加密方式! 目前大部分人利用的登陆方式都是利用selenium ,此文也不例外. 环境:        Wi ...

  2. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  3. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  5. 利用python获取nginx服务的ip以及流量统计信息

    #!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log ...

  6. 利用python爬取58同城简历数据

    利用python爬取58同城简历数据 利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用pyth ...

  7. python+request接口自动化框架

    python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...

  8. Python实现浏览器自动化操作

    Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼     最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...

  9. [转载]Python实现浏览器自动化操作

    原文地址:Python实现浏览器自动化操作作者:rayment   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...

随机推荐

  1. Linux上通过docker方式安装mysql

    centos版本信息: docker版本信息 mysql版本:5.7 1.docker方式安装 首先拉取mysql镜像:docker pull mysql:5.7     查看本地的mysql镜像 执 ...

  2. 基本的访问控制列表ACL配置

    摘要: 访问控制列表ACL (Access Control L ist)是由permit或 deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址.目的地址.源端口.目的端口等信息  来 ...

  3. ML Lecture 0-2: Why we need to learn machine learning?

    在Github上也po了这个系列学习笔记(MachineLearningCourseNote),觉得写的不错的小伙伴欢迎来给项目点个赞哦~~ ML Lecture 0-2: Why we need t ...

  4. 自动驾驶研究回顾:CVPR 2019摘要

    我们相信开发自动驾驶技术是我们这个时代最大的工程挑战之一,行业和研究团体之间的合作将扮演重要角色.由于这个原因,我们一直在通过参加学术会议,以及最近推出的自动驾驶数据集和基于语义地图的3D对象检测的K ...

  5. Rasa Stack:创建支持上下文的人工智能助理和聊天机器人教程

    相关概念 Rasa Stack 是一组开放源码机器学习工具,供开发人员创建支持上下文的人工智能助理和聊天机器人: • Core = 聊天机器人框架包含基于机器学习的对话管理 • NLU = 用于自然语 ...

  6. Java程序员必读的9本书

    本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还 ...

  7. 树莓派 Raspberry PI之GPIO

    树莓派 Raspberry PI之GPIO 树莓派各版本硬件原理图:https://www.raspberrypi.org/documentation/hardware/raspberrypi/REA ...

  8. TensorFlow报错module 'tensorflow' has no attribute 'xxx'解决办法

    原因:TensorFlow2.0版本修改了许多函数名字 tf.sub()更改为tf.subtract() tf.mul()更改为tf.multiply() tf.types.float32更改为tf. ...

  9. Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )

    Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2  ( ORA-02296  RMAN-06004 ) 由于后期使用12c的数据库,需要对现有 ...

  10. 使用Markdown编辑总结

    Markdown是轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. Markdown可以导出HTML .Word.图像.PDF.Epub 等多种格式的文档. 后缀为.md或者.markdo ...