python控制浏览器导出数据_Django导出数据为Excel,调用浏览器下载

1. 环境

Django (2.1.10) + Python3.6 + xlwt (1.3.0)

操作系统使用的为:Windows 7

2. 接口代码

defnow_export(request):

data_list= CIP.objects.all() #获取数据的查询集

if notdata_list:return HttpResponse(json.dumps({"state": "1", "msg": "查无数据,导出失败"}), content_type="application/json")

ws= Workbook(encoding='utf-8') #设置Excel为UTF-8的编码格式

w = ws.add_sheet(u"正在清洗的CIP报表") #设置sheet名称

w.write(0, 0, "id")

w.write(0,1, u"清洗线路")

w.write(0,2, u"操作者")

w.write(0,3, u"清洗目标")

w.write(0,4, u"清洗类型")

w.write(0,5, u"CIP状态")

w.write(0,6, u"开始时间")#把需要导出的数据写到文件中

excel_row = 1

for obj indata_list:

w.write(excel_row, 0, excel_row)

w.write(excel_row,1, obj.CIPNo)

w.write(excel_row,2, obj.oper)

w.write(excel_row,3, obj.ccid)

w.write(excel_row,4, obj.mode)

w.write(excel_row,5, "CIP程序启动")

w.write(excel_row,6, datetime.strftime(obj.start_time, '%Y-%m-%d %H:%M:%S'))

excel_row+= 1sio=BytesIO() # 写出到IO

ws.save(sio)

sio.seek(0) # 重新定位到开始

response= HttpResponse(sio.getvalue(), content_type='application/vnd.ms-excel') #设置文件格式为Excel

#attachment(意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将filename的值预填为下载后的文件名)

response['Content-Disposition'] = 'attachment; filename=test.xls'response.write(sio.getvalue())return response

提示:若出现 TypeError: string argument expected, got 'bytes'  错误。问题出现在使用StringIO的write方法上,用BytesIO替代StringIO即可解决问题,笔者这里已经替换过了

3. 前端请求

注意:但需要注意的是,如果想要用这种方式下载文件,不能使用AJAX的方式,而是应该新建一个标签,模拟点击下载。原因为处于安全性考虑,JavaScript无法与磁盘进行交互,因此AJAX得到的内容将被保留在内存中,而不是磁盘上。

3.1 请求方式为GET时:

此时直接在A标签的href属性中指定路由即可

导出报表

3.2 请求方式为POST时:

这种请求 需写一个form表单,把请求所需数据写在表单中,在A标签中指定表单的提交方法即可。(对于a标签实现post请求感兴趣的可以自行百度其他方法)

导出报表

开始日期:

id="startdate" class="input-text Wdate" name="startdate">

结束日期:

id="enddate" class="input-text Wdate" name="enddate">

线路:

all

目标:

all

搜索

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

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

相关文章

☆用Python实现ACM各大输入输出格式

arr input(""); #输入一个一维数组,每个数之间使空格隔开 num [int(n) for n in arr.split()]; #将输入每个数以空格键隔开做成数组 print(num[0]num[1]); #打印数组 # encoding: utf-8Python的输入是野生字符串,所以要自己转类…

wp config.php mysql_WordPress手动配置wp-config.php文件

前不久在WordPress技术群里看到有人在安装网站程序的时候出现了系统不能自动配置wp-config.php文件的问题,那么这个时候就需要我们手动进行配置了。问题描述:如果自动创建未能成功,不用担心,您要做的只是将数据库信息填入配置文件…

sqlserver mysql分页_SQLServer数据库分页查询语句

本文主要向大家介绍了SQLServer数据库分页查询语句,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。SQL Server分页查询是我们经常会用到的功能,下面就为你介绍分页查询的相关语句,希望对您学习SQL Server分页…

Python求一个整数位数的方法

a int(input()); print(len(str(a))) print(a) 输入: 123 输出: 3 123

thinkphp使用echarts_Thinkphp 与Echarts-php 使用

这里推荐大家使用composer 依赖管理工具 导入Echarts-php库{"name": "hisune/echarts-php","version": "1.0.10","version_normalized": "1.0.10.0","source": {"type": "git",&qu…

*【ZOJ - 3604】Tunnel Network (Cayley定理,purfer数列,无根树定理,构造,结论,或dp)

题干: Country Far-Far-Away is a big country with N cities. But it is now under a civil war. The rebel uses the ancient tunnel network which connects all N cities with N-1 inter-city tunnels for transportation. The government army want to destro…

创建文件夹 java_java怎么建文件夹

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。下面我们来看一下java中创建文件夹的方法:示例:package com.zz;import java.io.File;import java.i…

【Gym - 101986F】Pizza Delivery(Dijkstra最短路,建图方式,反向建图,Tarjan求桥,图论模板)

题干: 题目大意: 一个有向图,编号1~n的n个点,m条边,规定1为起点,2为终点,问对于每一条边,反转它的方向,最短路会不会发生改变,如果变短了,输出HA…

学java好还是web前端好_到底是学习Java好,还是Web前端好?

要想之后的发展空间比较大的话,我个人的建议还是要往全栈Web前端开发优势:人才缺口大,发展前景好,需求量大前景指数:★★★★★web前端开发前景大好!其中的HTML5技术更是日趋成熟,HTML5是移动互…

【CF#505B】Mr. Kitayuta's Colorful Graph (并查集或Floyd或BFS)

题干: Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The vertices of the graph are numbered from 1 to n. Each edge, namely edge i, has a color ci, connecting vertex ai and bi. Mr. Kitayuta wants you to p…

java data jpa_Spring Data JPA(一)简介

Spring Data JPA介绍可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL(Java Persistence Query Language)查询语言,属于Spring整个生态体系的一部分。随着Spring Boot和Spring Cloud在市场上的流行&#xff0…

【CodeForces - 438D】The Child and Sequence(线段树区间取模操作)

题干: At the childrens day, the child came to Pickss house, and messed his house up. Picks was angry at him. A lot of important things were lost, in particular the favorite sequence of Picks. Fortunately, Picks remembers how to repair the sequ…

java 自定义xml_6.1 如何在spring中自定义xml标签

dubbo自定义了很多xml标签,例如,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。一 编写模型类1 packagecom.hulk.testdubbo.model;23 public classHero {4 privateString name;5 private intage;67 publicString ge…

【POJ - 3723】Conscription (最大生成树,最小生成树MST变形)

题干: Windy has a country, and he wants to build an army to protect his country. He has picked up N girls and M boys and wants to collect them to be his soldiers. To collect a soldier without any privilege, he must pay 10000 RMB. There are some…

java 监听本地端口_Java-在本地端口上侦听RTP数据包

因此,我目前正在开发一个客户端应用程序,该应用程序在端口5004上侦听RTP数据包.由于可能有多个服务器发送RTP数据包,因此我无法使用套接字连接到特定的远程主机.相反,我尝试了以下方法来侦听本地端口:Socket socket new Socket("127.0.0.1", 5004);Socke…

【FZU - 2254】英语考试(最小生成树,思维,建图)

题干: 在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习。 这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m。 YellowSatr准备采用联想记忆法来背诵这n个单词: 1、如果Ye…

java 模块设计模式_Java9模块化学习笔记二之模块设计模式

模块设计的原则:1、防止出现编译时循环依赖(主要是编译器不支持),但运行时是允许循环依赖的,比如GUI应用2、明确模块的边界几种模块设计:API模块,聚合模块(比如java.base)可选依赖两种方式:1、可选的编译时依赖(类似于maven的provided scope)…

【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)

题干: Clarke is a patient with multiple personality disorder. One day he turned into a learner of graph theory. He learned some algorithms of minimum spanning tree. Then he had a good idea, he wanted to find the maximum spanning tree with bit …

java爬虫获取div内容_Java爬虫-简单解析网页内容

获取百度新闻中所有的中国新闻的标题时间来源1 获取网页2 public static String getContent(String str) throwsClientProtocolException, IOException {3 CloseableHttpClient closeableHttpClientHttpClients.createDefault(); //创建实例4 HttpGet httpGetnewHttpGet(str);5…

【HDU - 4635】Strongly connected(缩点,新图性质,建图,Tarjan求强连通分量)

题干: Give a simple directed graph with N nodes and M edges. Please tell me the maximum number of the edges you can add that the graph is still a simple directed graph. Also, after you add these edges, this graph must NOT be strongly connected.…