python开发报表系统详细操作流程_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表格详解
如有不足之处,欢迎留言指出。
python开发报表系统详细操作流程_python实现报表自动化详解相关推荐
- python开源报表系统详细操作流程_手把手教你实现自动化报表系统
今天给大家安利一套自动化报表的实现过程. 说到报表,大家脑海里一定浮现了各种高大上的财务报表,不管他们如何实现的,本文却要教你实现自己的报表系统.对于土豪公司来说,这些都是小case,因为商业的工具平 ...
- 用python处理excel的基本语法_Python对Excel操作详解
Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl tco ...
- python列表的内置方法_Python内置方法详解
1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名.可以查看所有的字符串的内置方法,如: 1> count: ...
- python多进程队列中的队列_python 多进程队列数据处理详解
我就废话不多说了,直接上代码吧! # -*- coding:utf8 -*- import paho.mqtt.client as mqtt from multiprocessing import P ...
- python变量类型是动态的_python内存动态分配过程详解
一.前言 大多数编译型语言,变量在使用前必须先声明,其中C语言更加苛刻:变量声明必须位于代码块最开始,且在任何其他语句之前.其他语言,想C++和java,允许"随时随地"声明变量, ...
- python爬虫代码实例源码_python爬虫及案例详解(附代码)
安装三大库 1.requests 2.BeautifulSoup 3.lxml 有的网站做了相应的反爬虫,不能用普通方法爬取网站数据. 这里我用python爬取了几个网站的数据,分别存入csv文件,m ...
- python开发的系统有哪些_Python web开发=几个模板系统的性能对比
Python web 开发:几个模板系统的性能对比 对比目标, jinja2 , cheetah , mako , webpy , bottle , tornado , django 的性能. 方法, ...
- python中自带的模块_python中的模块详解
概念 python中的模块是什么?简而言之,在python中,一个文件(以".py"为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件.模块可以被项 ...
- python中socket模块常用吗_python中socket模块详解
socket模块简介 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常被叫做"套接字",用于描述IP地址和端口,是一个通信 ...
最新文章
- friend keyword 对于模板 并不只不过友元!!!
- conv2d 公式_TF-卷积函数 tf.nn.conv2d 介绍
- PaddleDetection支持的数据格式
- 漂亮的html页面源码_爬虫数据分析之html
- 小白学HarmonyOS,HarmonyOS 2.0正式发布 分布式能力获得全面升级
- 无论商业模式怎么变,其最核心的东西,永远不变
- kali 创建php可执行文件_利用树莓派在kali环境下搭建Web环境(Apache+Php7.3+Mysql)...
- python tkinter button_Python3 Tkinter-Button
- 键盘迷情--Treo650 VS P50 【ZZ】
- Kaggle——TMDB电影票房预测
- channel代码示例
- loadlibrary failed with error 126:找不到指定模块 解决方法
- 高精度加法 problem A+B
- PowerBI应用案例:杜邦分析图动态观察财务指标
- Quartz 任务调度全攻略
- 美颜sdk动态贴纸技术、代码分析
- 女神联盟2服务器停止注册,女神联盟2新区,平台几天开一次新区
- 深度优先搜索(DFS) + DFS的应用:字符串的排列问题
- mysql注入时的注释处理
- eyoucms如何判断第一条和最后一条数据
热门文章
- Unity 六边形地图系列(二十七) :循环地图
- 利亚德虚拟演播技术分析
- Bash 脚本中的错误处理
- 什么电脑能带动matlab,大三女生想换电脑:轻便(易携带)性能(需要office Matlab AE等软件)好看 求推荐?经济类研究生有没有必要换windows笔记本...
- 计算机辅助制造标准,计算机辅助设计制造专业专业标准框架.doc
- 轻松实现Shopify产品导入到WooCommerce商店:Import Shopify to WooCommerce(S2W)插件下载
- JFrame实现对打小游戏 初略写的没有封装
- Golang 微服务教程
- 用户态和核心态的区别
- gnet: 一个轻量级且高性能的 Go 网络框架