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…

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

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

多表联合查询

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

http 请求头和响应头

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

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

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

MVVM模式于MVP模式

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

BrowserSync开发利器

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

algorithm -- 选择排序

选择排序是《导论》第一章课后习题,仿照插入排序,再次运用循环不变式来证明下算法的正确性,C 源码: // 交换函数 void swap( int& a, int& b ) {a a^b;b a^b;a a^b; } void selectSort( int *arr, int count ) {if( a…

ueeditor无法上传图片_百度ue文本编辑器开发中无法上传图片

第一次发文,好紧张呀,不知道会不会没人看。之前用ue遇到了一些坑,没人看就当自己记录了笔记。第一次用,总是会遇到问题,可以先查看下百度ue的演示http://ueditor.baidu.com/website/onlinedemo.html和API http://fex.b…

SQL 语句优化--IN语句优化案例

为什么80%的码农都做不了架构师?>>> 今天客户系统升级,通过DMVs性能分析查了一下,升级后发现一个语句执行时间比较长,执行语句要好几秒钟,调出语句如下: select distinct field003 from ufi2j0…

Activity跳转

本例中MainActivity为:FirstActivity.java FirstActivity如下: package com.wyl.intentmultiactivitytest;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Vie…

Java课程设计---项目数据库设计(含实体类)

1、数据库分析设计 将数据库命名为:db_student 分析系统中各角色之间的关系 2、表设计 (1)新建表tb_student(学生表) (2)新建表tb_admin(管理员表) (3&#x…

java)_Java NIO系列教程(一) Java NIO 概述

原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer…

Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

2019独角兽企业重金招聘Python工程师标准>>> Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/dat…

java 静态代码块_JAVA静态代码块

今天遇到下面的代码,感觉很奇怪,特意记录下:代码如下:public class Test {private static List objs new ArrayList();static {objs.add(new Test(Test.S_NAME,Test.NAME,Test.COUNT));objs.add(new Test(Test.S_NAME,Test.NAME,…

context详解

1、Context概念: Context,相信不管是第一天开发Android,还是开发Android的各种老鸟,对于Context的使用一定不陌生~~你在加载资源、启动一个新的Activity、获取系统服务、获取内部文件(夹)路径、创建View操作…

WebApi路由

路由分为两种模式:模板路由和特性路由。 模板路由: 模板路由是ASP.NET Web API默认提供的路由。模板路由使用前需要定义路由模板。如下面默认的路由模板: 默认路由的URL格式是api/{controller}/{id}。api代表在资源前面要带上api目录&#xf…

java设计模式 组合_JAVA 设计模式 组合模式

用途组合模式 (Component)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有唯一性。组合模式是一种结构型模式。结构图-组合模式结构图Component: 组合中的对象声明接口,在适当的情况下,实现所有类共…

项目总结SpringMVC相关

流程文字概述1、用户发送请求至前端控制器DispatcherServlet2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet调用Ha…

SpringBoot登录登出切面开发

阅读本文约“2.5分钟” 本文开发环境是SpringBoot2.X版本。 对于系统而言(这里多指管理系统或部分具备登录登出功能的系统),登录登出是一个类权限验证的过程,现在一般是以token进行校验,即用户输入登录信息&#xff0c…