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

# 写11

B.基础教程

新建工作簿&增加sheet: 新建一个工作簿,然后往里添加sheet

f = xlwt.Workbook()  # 创建工作簿 sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)#一个excel表格中可以添加多个sheet123123

往sheet中写入内容: sheet.write函数可以传三个参数

第i(参数1)第j(参数2)列存入内容(参数3)

。1212

合并单元格并写入内容:

sheet1.write_merge(x, x + m, y, y + n, '内容', style)# 这条y语句表示将[x:x+m]行[y:y+n]列的矩阵合并成一个单元格。存放第五个参数的内容,同理,style参数可以不传参1212

最后使用f.save(‘demo’)

就可以把f保存到excel了

C.实战

我们可以先新建一个工作簿,然后往里添加两个sheet,然后查看效果

#coding=utf-8import 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')1234567812345678

效果如下,发现表格xlwt_tutorial中有两个sheet。

05cbc8a095a4ce4ff3cdda8c96df1f91.png

我们开始往sheet中写入内容,不传入style参数

先只使用write函数

#coding=utf-8import xlwt f = xlwt.Workbook()  # 创建工作簿sheet1 = f.add_sheet(u'葡小萄', cell_overwrite_ok=True) sheet2 = f.add_sheet(u'小葡萄', cell_overwrite_ok=True) row = 0temp = [u'姓名',u'年龄',u'学校',u'专业'] for pos,v in enumerate(temp):     sheet1.write(row,pos,v) row += 1sheet1.write(row,0,u'葡萄') sheet1.write(row,1,18) sheet1.write(row,2,u'北京电影学院') row += 1sheet1.write(row,0,u'椰子') sheet1.write(row,1,20) sheet1.write(row,2,u'帝国国王科技大学') f.save('xlwt_tutorial')123456789101112131415161718192021123456789101112131415161718192021

效果如下,我们建立了一个3行4列的表格。(write函数行和列值都是从0开始的)

015f7b6d5706ef504961abc8085914d6.png

下面我们使用write_merge函数来合并单元格并写入

在f.save之前添加一行代码

sheet1.write_merge(1,2,3,3,u'汉语言文学')11

效果如下,将第2-3行第4列合并

7223b48445c0140ceae5910eba4611aa.png

2.pythonxd读excel —xlrd常用功能

A.准备工作

安装xlrd :在终端中输入pip install xlrd或者easy_install xlrd

引入xlrd包 :

import xlrd  # 读11

B.基础教程&实战

打开一个Excel,然后输出所有sheet的名字

#coding=utf-8import xlrdimport uniout f = xlrd.open_workbook(r'xlwt_tutorial')print f.sheet_names()12345671234567

输出:[u’葡小萄’, u’小葡萄’]

得到表格里的所有的sheet

for i in range(len(f.sheet_names())):      sheet1 = workbook.sheet_by_index(i)1212

得到sheet中的内容

f = xlrd.open_workbook(r'xlwt_tutorial') sheet1 = f.sheet_by_index(0)  #打开第一个sheetsheet2 = f.sheet_by_name(u'小葡萄')  #打开名字为小葡萄的sheet#输出sheet的名称,行数,列数print sheet1.name,sheet1.nrows,sheet1.ncolsprint sheet2.name,sheet2.nrows,sheet2.ncols12345671234567

输出为:

葡小萄 3 4

小葡萄 0 0

.

print sheet1.row_values(1)  #获取第二行内容print sheet1.col_values(2)  #获取第三列内容1212

输出为:

[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 error12345671234567

输出为:

葡萄

2

3.xlutils 常用功能

A.准备工作

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

引入xlutils包 :

import xlutils  11

B.xlutils中copy功能

我们可能会遇到一个问题,想对一个存储好的Excel进行编辑。

但是xlrd是只读模式,不能进行编写。

而xlwt是只写模式,不能读入Excel文件进行编辑。

我们可以采用xlrd打开一个文档,后采用xlutils中copy功能把文档拷贝,然后进行编辑即可。

import xlrdfrom xlutils.copy import copy f = xlrd.open_workbook(r'xlwt_tutorial') wb = copy(f) # 将f拷贝到wbsheet1 = wb.get_sheet(0) # 打开sheetprint sheet1.name sheet1.write(3,0,'change') wb.save('xlwt_tutorial')12345678910111234567891011

输出为:

葡小萄

输出的表格已经改变。

0b55b6848ae7de34c27ba5bd02da47d9.png

PS: 可以看到第二行第四列和第三行第四列合并格已经在COPY的时候被毁掉了。

4.xlwt写Excel时公式的应用

我们写用xlwt写一个表格

#coding=utf-8import 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('得分统计')1234567891011121314151617181920212212345678910111213141516171819202122

打开表格为:

6970d9b1bc6164c870e5158ccf98ba7f.png

我们现在想做的是统计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))1234512345

输出为:

B2+B3+B4+B5

C2+C3+C4+C5

打开表格为:

22f52c3acfc2716f6fac55bbd0a6e597.png

5.xlwt写入特定目录(路径设置)

由于代码分层的缘故,使代码整体框架优美。

我们需要把文件写入到特定目录下。

但是由于xlwt中没有直接写入到特定目录的函数。

因此使用shutil.move函数来把文件MOV到特定目录下:

#coding=utf-8import xlwtimport osimport 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)1234567891011121314151617181920212223242526272829303132333435363712345678910111213141516171819202122232425262728293031323334353637

效果图:

34c505c87ba12ed750f072eba24c81af.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

去除inline-block元素间间距的N种方法

这篇文章发布于 2012年04月24日,星期二,22:38,归类于 css相关。 阅读 147771 次, 今日 52 次 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p2357 一、现象描述 真正意义上的in…

Docker深入浅出2

Docker系统架构 Docker使用客户端-服务端(c/s)架构模式,使用远程api来管理和创建Docker容器。 docker容器通过Docker镜像来创建。 容器与镜像的关系类似于面向对象编程中的对象与类的关系 Docker面向对象容器对象镜像类加速器配置&#xff1a…

mysql安装包下载密码_MySQL解压包的安装与下载的图文教程

这篇文章主要为大家详细介绍了mysql解压包的安装基础教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下由于换了新电脑,所以的环境都要到新电脑去配置。突然发现mysql的配置忘了,然后百度又重新来一遍。特地写一篇文章记录一…

php 扒取网页数据

扒取方法 public function index(){$url http://www.dytt8.net/;// $url Public/txt/movies.txt;$content file_get_contents($url);$content iconv("gb2312", "utf-8//IGNORE",$content);$reg "|<div class\"co_content2\">(.*…

多维DP UVA 11552 Fewest Flop

题目传送门 1 /*2 题意&#xff1a;将子符串分成k组&#xff0c;每组的字符顺序任意&#xff0c;问改变后的字符串最少有多少块3 三维DP&#xff1a;可以知道&#xff0c;每一组的最少块是确定的&#xff0c;问题就在于组与组之间可能会合并块&#xff0c;总块数会-1。…

多表联合查询

关联数据库字典表的多表联合查询 inner join…on 自动连接 需要用到表的所有信息时&#xff0c;可以用以下两种方法 1) left join…on… 左连接 &#xff08;以左为准&#xff0c;右边没有NULL代替&#xff09; 2) right join…on… 右连接&#xff08;以右为准&#xff…

python elasticsearch update_使用python的elasticsearch部分更新

我有以下格式的elasticsearch文档。我需要部分更新“x”字段并在其中添加python dict。{"_index": "gdata34","_type": "gdat","_id": "328091-72341-118","_version": 1,"_score": 1,"…

32位与64位注册表

如果32位系统OFP的注册表路径是 HKEY_LOCAL_MACHINE\SOFTWARE\Bohemia Interactive\ 那么在64系统里就应该是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Bohemia Interactive\ 多了一级Wow6432Node转载于:https://www.cnblogs.com/zhang-pengcheng/p/4712135.html

http 请求头和响应头

客户端发送请求过程带着的数据&#xff1a; 1.请求地址 2.请求方式 3.请求头 request headers 4.请求参数 https://www.juhe.cn/ 130.... 1a2b....pei 服务端响应给客户端的信息&#xff1a; 1.响应内容 2.响应报文/响应头部 response headers a 响应头 b 响应体 3.http状…

[算法]-排序算法之希尔排序

希尔排序算法思想 希尔排序的实质就是分组插入排序&#xff0c;该方法又称缩小增量排序.基本思想是&#xff1a;先将整个待排元素序列分割成若干个子序列&#xff08;由相隔某个“增量”的元素组成的&#xff09;分别进行直接插入排序&#xff0c;然后依次缩减增量再进行排序&a…

python tkinter button颜色变不了_tkinter多按钮颜色变化

我使用tkinter创建一个8x8按钮矩阵&#xff0c;当按下单个按钮时&#xff0c;它会添加到最终列表中(例如finalList((0,0)&#xff0c;(5,7)&#xff0c;(6,6)&#xff0c;…)&#xff0c;允许我快速创建8x8(x&#xff0c;y)坐标图像。我已经创建了一个带有按钮的窗口&#xff0…

应用spss可靠性分析软件

问卷调查的可靠性分析 一、概念&#xff1a; 信度是指依据測验工具所得到的结果的一致性或稳定性&#xff0c;反映被測特征真实程度的指标。一般而言&#xff0c;两次或两个測验的结果愈是一致。则误差愈小&#xff0c;所得的信度愈高&#xff0c;它具有下面特性&#xff1a;1、…

springmvc中的单例问题

1&#xff0c;springmvc实际上是基于一个叫做DispatcherServlet的servlet的。servlet按照以往的学习经验&#xff0c;他是单事例多线程的。 Servlet生命周期 1.装载Servlet。这项操作一般是动态执行的。然而&#xff0c;Server通常会提供一个管理的选项&#xff0c;用于在Serve…

设计模式 -- 亨元模式(FlyWeight Pattern)

用来尽可能减少内存使用量&#xff0c;适用于存在大量重复对象的场景&#xff0c;达到对象共享&#xff0c;避免创建过多对象的效果&#xff0c;提升性能&#xff0c;避免内存溢出。 定义&#xff1a; 使用共享对象有效支持大量细粒度对象。 适用场景&#xff1a; 系统中存在大…

python3.6使用mysql_Python之——Python3.6连接MySQL

只安装了Python是不能连接数据库的&#xff0c;还要安装Python连接MySQL的相关类库&#xff0c;Python2.7连接MySQL的类库很多&#xff0c;MySQL官方最新支持的Python为Python3.4.&#xff0c;如下图所示&#xff1a;那么&#xff0c;在Python3.6上如何实现连接MySQL的功能呢&a…

android解析json

android2.3提供的json解析类 android的json解析部分都在包org.json下&#xff0c;主要有以下几个类&#xff1a; JSONObject&#xff1a;可以看作是一个json对象 JSONStringer&#xff1a;json文本构建类 JSONArray&#xff1a;可以看作是json的数组 JSONTokener&#xff1a;js…

MVVM模式于MVP模式

MVC、MVP、MVVM这些模式是为了解决开发过程中的实际问题而提出来的&#xff0c;目前作为主流的几种架构模式而被广泛使用。 一.MVP模式(Model-View-Presenter):传统的开发是MVP模式(例如jquery) MVP是把MVC中的Controller换成了Presenter&#xff08;呈现&#xff09;&#xff…

HUNAN 11560 Yangyang loves AC(二分+贪心)

http://acm.hunnu.edu.cn/online/?actionproblem&typeshow&id11560&courseid0 题意&#xff1a;总共有n天,每天yangyang都需要一个快乐值,有m个队友,每个队友都会给阳阳一个快乐值(为2的幂),并且只能给一次,如果某一天队友给的快乐值达到yangyang需要的快乐值那么…

BrowserSync开发利器

2019独角兽企业重金招聘Python工程师标准>>> 大大节省开发时间。安装使用简单。使用步骤&#xff1a; 1、nodejs环境 安装 2、在项目中使用npm安装到本项目 3、对要监听的文件执行响应命令 官网更详细&#xff1a;http://www.browsersync.cn/#install 原理&#xf…

python字符串解析_Python-字符串解析-正则-re

正则表达式特殊字符序列&#xff0c;匹配检索和替换文本普通字符 特殊字符 数量&#xff0c;普通字符用来定边界更改字符思路字符串函数 > 正则 > for循环元字符  匹配一个字符# 元字符大写&#xff0c;一般都是取小写的反1. 0~9 整数          \d    …