python实现导出excel表(前端+后端)
之前在做项目管理系统的时候需要实现将数据导出到excel表的功能,搜索之后发现了python的xlwt模块可以很好的实现这项功能。
首先是导入xlwt模块:
import xlwt
from io import BytesIO
将处理好的数据写入excel并且传给前端
# 获取当前时间
nowtime = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
# 创建一个workbook,设置编码格式为utf8
workbook = xlwt.Workbook(encoding='utf-8')
# 创建一个 worksheet
worksheet = workbook.add_sheet('Worksheet')
# 将处理好的数据写入excel,其中i为行,j为列
for i in range(len(msg_list)):
for j in range(len(msg_list[i])):
worksheet.write(i, j, msg_list[i][j])
# 创建操作二进制数据的对象
output = BytesIO()
# 将excel数据写入到内存中
workbook.save(output)
# 设置文件读取的偏移量,0表示从头读起
output.seek(0)
# 设置HTTP的报头为二进制流
self.set_header("Content-Type", "application/octet-stream")
# 设置文件名
self.set_header("Content-Disposition", "attachment; filename=export-%s.xls" % nowtime)
return self.write(output.getvalue())
在前端我发现如果是通过a标签的href来请求对应的API接口,可以直接下载到excel文件,但是如果希望在发送请求时携带一些数据,则需要发送ajax请求,代码如下:
$("#export-from").submit(function(e){
e.preventDefault();
var data = {};
$(this).serializeArray().map(function(x){
data[x.name] = x.value;
});
if (data["start_time"] && data["end_time"]){
var url= ("api/export/results?start_time="+data["start_time"]+"&end_time="+data["end_time"]);
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
// 返回blob类型,该类型用来存储二进制数据
xhr.responseType = "blob";
xhr.onload = function () {
// 请求完成,执行回调函数
if (this.status === 200) {
// 状态码为200
var blob = this.response;
var reader = new FileReader();
// 转换为base64
reader.readAsDataURL(blob);
reader.onload = function (e) {
// 转换完成,创建一个a标签用于下载
var a = document.createElement('a');
a.download = 'results.xls';
a.href = e.target.result;
// 修复firefox中无法触发click
$("body").append(a);
a.click();
$(a).remove();
}
}
};
// 发送ajax请求
xhr.send()
}
});
python实现导出excel表(前端+后端)的更多相关文章
- 前端导出excel表
前端导出excel表 方式一: 前端js实现 : https://www.cnblogs.com/zhangym118/p/6235801.html 方式二: java后端实现: https://bl ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- 【ITOO 1】将List数据导出Excel表
需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...
- ASP.NET导出excel表方法汇总
asp.net里导出excel表方法汇总 1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...
- DateGridew导出Excel表+常见错误提示
在敲机房收费系统的时候,显示数据的时候需要将DateGridew 中的数据导出进Excel表.DateGridew导出Excel表是比较常见的,当然导出Excel表有很多种方法,下面是个人认为比较容易 ...
- 传参导出Excel表乱码问题解决方法
业务场景 先描述一下业务场景,要实现的功能是通过搜索框填写参数,然后点击按钮搜索数据,将搜索框的查询参数获取,附加在链接后面,调导Excel表接口,然后实现导出Excel功能.其实做导Excel表功能 ...
- C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation
C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...
- vue+element UI如何导出excel表
导出excel表应按如下规则 首先要先安装如下依赖 npm install --save xlsx npm install --save file-saver 接下在在你的代码中去引用这两个 impo ...
- 微擎 人人商城 导出excel表分析
在 数据处理上 ,有很多时候需要导出excel表 来当报表, 等 , php 人人商城导出报表过程简单分析 在导出时候发现 ca('statistics.order.export'); 出于好奇 ...
随机推荐
- 关于PCA降维中遇到的python问题小结
由于论文需要,开始逐渐的学习CNN关于文本抽取的问题,由于语言功底不好,所以在学习中难免会有很多函数不会用的情况..... ̄へ ̄ 主要是我自己的原因,但是我更多的把语言当成是一个工具,需要的时候查找就 ...
- android 开发-(Contextual Menu)上下文菜单的实现
在android3.0以后,安卓设备不在提供物理的菜单按键,同时,android应用提供了另外的菜单实现机制,来替代之前的菜单创建方式.安卓设备中,平常可以使用长按住某个内容弹出菜单选项.这就是我们需 ...
- 微信退款和支付宝退款接口调用(java版)
项目中需要使用到微信和支付宝的退款功能,在这两天研究了一下这两个平台的退款,有很多坑,在开发中需要留意 1.微信退款接口 相对来说我感觉微信的退款接口还是比较好调用的,直接发送httppost请求即可 ...
- Unity3d中使用assetbundle
1.导出assetbundle: ①单个资源导出成assetbundle: ②多个资源导出成一个assetbundle: 2.读取assetbundle: ①加载到内存: ②解压为具体资源. 1.导出 ...
- springboot集成freemarker 配置application.properties详解
#配置freemarker详解 #spring.freemarker.allow-request-override=false # Set whether HttpServletRequest att ...
- css盒子模型 css3盒子相关样式
1.内边距(内边距在content外,边框内) 内边距属性: padding 设置所有边距 padding-bottom 底边距 padding-left ...
- ajax实现异步请求的过程
var xhr; xhr = new XMLHttpRequest(); //创建一个异步对象 xhr.open("Get", "test.a ...
- git学习(一)
提: 远程的主机名(远程仓库服务器名): origin 本地的主分支: master(本地master分支) 远程的主分支: maste(远程仓库的master分支) gi ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:5.技术简介之Hibernate
目录 序言 配置 hibernate.cfg.xml配置文件 加载hibernate.cfg.html配置文件并获取Session 对象的注解配置 增删改查 具体的增删改查代码 数据库操作的封装 连接 ...
- linux 命令——34 du(转)
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...