python实现报表自动化详解

本篇文章将介绍:

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包 :

import 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-8
import 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包 :

import xlrd # 读

B.基础教程&实战

打开一个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 常用功能

A.准备工作

安装xlutils :在终端中输入pip install xlutils或者easy_install xlutils
引入xlutils包 :

import 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-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实现报表自动化详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

MySQL数据库设计之利用Python操作Schema方法详解

Python文件的读写和异常代码示例

python中使用xlrd、xlwt操作excel表格详解

如有不足之处,欢迎留言指出。

(0)

相关推荐

  • Python实现导出数据生成excel报表的方法示例

    本文实例讲述了Python实现导出数据生成excel报表的方法.分享给大家供大家参考,具体如下: #_*_coding:utf-8_*_ import MySQLdb import xlwt from datetime import datetime def get_data(sql): # 创建数据库连接. conn = MySQLdb.connect(host='127.0.0.1',user='root'\ ,passwd='123456',db='test',port=3306,char

  • 用Python的Django框架编写从Google Adsense中获得报表的应用

    我完成了更新我们在 Neutron的实时收入统计.在我花了一周的时间完成并且更新了我们的PHP脚本之后,我最终认决定开始使用Python进行抓取,这是值得我去花费我的时间和精力的事情.我建立了一个 Django程序,它可以从不同的来源存储收入统计,我可以用这些去简历视图和用于统计工具的API. 所以在过去的几天里,我写了一个脚本,它可以登入到其他的网页并抓取数据,或者,如果这些网页有 API,可以直接访问 API.我发现了一些事情. 1.requests>httplib2(requests多于h

  • python实现报表自动化详解

    本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件的扩展工具.可以实现指定表单.指定单元格的写入.支持excel03版到excel2013版.使用时请确保已经安装python环境 xlrd Python语言中,读取Excel的扩展工具.可以实现指定表单.指定单元格的读取.使用时请确保已经安装python环境. NOTICE: xlwt对Excel只

  • 详解如何利用Python实现报表自动化

    目录 Excel的基本组成 一份自动化报表的流程 报表自动化实战 当日各项指标的同环比情况 当日各省份创建订单量情况 最近一段时间创建订单量趋势 将不同的结果进行合并 本篇文章将带你了解报表自动化的流程,并教你用Python实现工作中的一个报表自动化实战,篇幅较长,建议先收藏,文章具体的目录为: 1.Excel的基本组成 2.一份报表自动化的流程 3.报表自动化实战 - 当日各项指标同环比情况 - 当日各省份创建订单量情况 - 最近一段时间创建订单量趋势 4.将不同的结果进行合并 - 将不同结果

  • Python批量操作Excel文件详解

    目录 批量操作 OS模块介绍 OS模块基本操作 获取当前工作路径 获取一个文件夹下的所有文件名 对文件名进行重命名 创建一个文件夹 删除一个文件夹 删除一个文件 利用OS模块进行批量操作 批量读取一个文件下的多个文件 批量创建文件夹 批量重命名文件 其他批量操作 批量合并多个文件 将一份文件按照指定列拆分成多个文件 批量操作 OS模块介绍 OS的全称是Operation System,指操作系统.在Python里面OS模块中主要提供了与操作系统即电脑系统之间进行交互的一些功能.我们很多的自动化操

  • Python ellipsis 的用法详解

    背景 在 Python 的基本类型中单例模式的值有三个 None 类型的 None ,NotImplemented 类型的 NotImplemented, Ellipsis 类型的 ... . None 已经用的烂大街了,NotImplemented 也比较常用,唯独 ... 在江湖上只知它是三巨头之一,但不知其用法. Ellipsis Ellipsis 在 python 中代表"省略",用现在的流形语来表达就是"老铁,不要在意这些细节!".哪什么时候要告诉别人不要

  • python爬虫selenium模块详解

    selenium模块 selenium基本概念 selenium优势 便捷的获取网站中动态加载的数据 便捷实现模拟登陆 selenium使用流程: 1.环境安装:pip install selenium 2.下载一个浏览器的驱动程序(谷歌浏览器) 3.实例化一个浏览器对象 基本使用 代码 from selenium import webdriver from lxml import etree from time import sleep if __name__ == '__main__': b

  • 基于Python实现自动扫雷详解

    目录 准备 实现思路 窗体截取 雷块分割 雷块识别 扫雷算法实现 用Python+OpenCV实现了自动扫雷,突破世界记录,我们先来看一下效果吧. 中级 - 0.74秒 3BV/S=60.81 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第一.世界综合排名第二的郭蔚嘉的顶顶大名.扫雷作为一款在Windows9x时代就已经诞生的经典游戏,从过去到现在依然都有着它独特的魅力:快节奏高精准的鼠标操作要求.快速的反应能力.刷新纪录的快感,这

  • Python Playwright的使用详解

    目录 实战场景 实战操作 实战场景 本篇博客为大家介绍一款新的自动化测试工具,效果类似 selenium,但是这个模块年轻. 模块名称为 playwright-python,微软开源的,是针对 Python 语言的纯自动化工具,可以通过 API 调用浏览器,github 地址在本文末尾. 接下来将通过 3 篇博客为大家详细介绍该 playwright-python,彻彻底底了解它. 正式开始前依旧是模块安装: pip install playwright 该模块安装非常快,但完整体验还需要安装浏

  • Python自动化测试利器selenium详解

    目录 1 自动化测试 1.1 单元测试 1.2 接口测试 1.3 UI测试 1.3.1 UI自动化测试的优点 1.3.2 UI自动化测试的适用对象 1.4 自动化测试流程 2 selenium 3 selenium IDE 录制脚本 1 自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果.将人为驱动的测试行为转化为机器执行的过程. 自动化测试包括UI自动化,接口自动化,单元测试自动化.按照这个金字塔模型来进行自动化测试规划,可以产

  • MySQL数据库设计之利用Python操作Schema方法详解

    弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢

  • Python之str操作方法(详解)

    1. str.format():使用"{}"占位符格式化字符串(占位符中的索引号形式和键值对形式可以混合使用). >>> string = 'python{}, django{}, tornado{}'.format(2.7, 'web', 'tornado') # 有多少个{}占位符就有多少个值与其对应,按照顺序"填"进字符串中 >>> string 'python2.7, djangoweb, tornadotornado'

随机推荐