测试管理平台需要增加导出用例成Excel的功能,有两种方式

一种是:Django获取数据先生成本地文件,读取本地文件后再传递给前端

还一种是:Django获取数据,生成文件流,文件流传给前端

第一种资料比较多,但是要每次下载都要在本地生成文件,太过繁琐,这边选择第二种方式

步骤:

先处理Django后端

这边使用的是openpyxl

wb = Worbook()
ws = wb.active
.....
/*
ws是个worksheet对象,我的目的是将其变成二进制数据
通过BytesIO()来处理
from io import BytesIO*/
output = BytesIO()
wb.save(output) #这句是将worksheet保存到二进制字节中去
output.seek(0) #output读取所以数据
response = FileResponse(output) #定义FileResponse,里面传字节流进去
/*
最后返回的是response文件流,我的文件名想单独字段传递给前端,咋办
通过加response的headers来处理
还有文件名中文乱码咋搞,通过escape_uri_path来处理
*/
tname = "你好哟"
tname = escape_uri_path(tname)
fileName = tname + time.strftime("%y%m%d%H%M%S") + '.xlsx'
response['name'] = fileName
response['Access-Control-Expose-Headers'] = 'name' #这个name是上一句的key
response['Content-Type'] = 'applecation/octet-stream'#这边不加Content-Disposition也可以
return response

前端需要处理两个,一个是请求参数这么设置,还一个是相应和文件名咋处理

请求参数ajax需要设置responseType: 'blob'

this.$axios({method: "post",url: "/test/export/",data: this.exportData,responseType: 'blob'}).then(function(res){
/*
其实就是通过创建a标签来处理打开href链接来下载,最后在移除a标签就行
*/let url = window.URL.createObjectURL(res.data)//res.data就是接口返回的文件对象let a = document.createElement('a')a.href = urla.download = decodeURI(res.headers.name)//res.headers.nam就可以获取自定义的名称,再解码document.body.appendChild(a)a.click()window.URL.revokeObjectURL(url)document.body.removeChild(a)})

django下载或者导出文件相关推荐

  1. django下载excel,使用django-excel插件

    django下载Excel,使用django-excel插件 由于目前的资料多是使用pandas或xlwt库实现的.其实没有那么的麻烦,因为django有相对应的插件django-excel. 该插件 ...

  2. 【Django下载文件-Kml文件下载】

    Django下载文件系列 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 开发应该了解的Web文件下载 第二章 Django下载文件-三种方法 第三章 Django下载文件- ...

  3. django下载 中文名 文件

    Django下载中文名文件: the_file_name = "中文名.abc" response = HttpResponse(stream) response['Content ...

  4. Python压缩解压zip,Django下载zip文件

    Python压缩解压zip 压缩 import zipfile def convert_zip(zip_path, save_path):'''# zip_path 要压缩文件的路径# save_pa ...

  5. python django下载_简单了解django文件下载方式

    这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 推荐使用FileResponse,从源码中可以 ...

  6. 3、Django下载与简介

    第1节:MVC与MTV模型 1.1 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一 ...

  7. django 下载安装xadmin(django3.x + python3.6+xadmin2.x)

    文章目录 前言 一.xadmin是什么? 二.使用步骤 1.下载资料 2.在settings里配置extra_apps, 设置为可搜索的路径 3.注册到app,注意'crispy_forms'中是下划 ...

  8. Django下载文件中文乱码 FileResponse 浏览器正确识别文件名和文件大小的简单方法

    起因 工作需要维护一个工单系统,下载文件时如果文件名有中文会导致乱码,并且下载时不显示文件的完整大小,没有进度条 修改 原先接口是这样写的 # view入口 class DownFile(BaseVi ...

  9. python django下载 功能如何实现_Python中django文件传输下载功能的实现

    Python中django文件传输下载功能的实现,基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django ...

  10. vue下载、导出文件返回blob时后台抛出异常时弹出提示

    主要是利用response.type来判断返回数据的格式,直接上代码 api.exportXls(this.dataForm).then(response => {const fileReade ...

最新文章

  1. JDBC 学习(一)
  2. hive 添加UDF(user define function) hive的insert语句
  3. 【开卷故意】记录一次高并发下的死锁解决思考过程
  4. java并发编程之美-阅读记录7
  5. 51 nod 1522 上下序列——序列dp
  6. jenkins自动部署--定时轮询svn代码更新并自动发布至测试环境
  7. CentOs6.5 更新python2.7,以及tab自动补全
  8. cocos2dx在不同安卓机型下scrollview裁剪失败
  9. 关于用户自定义控件与引用该控件的页面之间的javascript脚本冲突
  10. 使用yum命令时Error: Cannot find a valid baseurl for repo: base
  11. 优先队列 priority_queue 用法 (struct,非cmp)
  12. 迅捷音频转换器怎么使用?
  13. java算法训练 调和数列问题
  14. ttl转rs232发送十六进制_TTL和RS232之间的详细对比
  15. 苹果手机微信声音小怎么调大声_苹果手机xr对方听不到我说话,通话质量差的问题...
  16. 蜂鸟数据Trochil:论述制定策略的两种主要方法:市场假设和瑞士法郎案例研究-构建更好的策略1
  17. 好用的远程登录服务器工具
  18. 高德地图自定义点标记大小_高德地图 自定义点标记 图标大小
  19. nova7可以升级成鸿蒙20系统,华为nova7升级到EMUI11,8大功能提升,带来更新体验...
  20. Cannot get property '......' on extra properties extension as it does not exist

热门文章

  1. 启动失败java.lang_关于jeesite启动失败的问题java.lang.UnsupportedClassVersionError
  2. nest 设置密码_如何设置Nest Cam
  3. c语言 error c2562,C语言之关键字(二) void,const
  4. 最新版本的000-919题库
  5. 三菱Q系列PLC QJ71C24-R2模块的串口232通信
  6. 常用的网络传输协议:UDP和TCP
  7. 【FPGA入门一】一个简单的LED流水灯
  8. 判断是否为回文字符串
  9. 影子系统、沙盒、虚拟机的区别
  10. 串口(Uart)的基础知识