django后台返回excel表

1. 方法一(不推荐)

  • 思路:先根据条件从数据库查找data,再把data生成excel表,再把excel表返回(FileResponse)
  • 步骤:

    • 1.data:利用django.forms.model_to_dict 把数据转化成dict,注意,ImageField无法转化

      from django.forms import model_to_dict
      user_infos = UserInfo.objects.filter(**kwargs)
      data = list(map(lambda x: model_to_dict(x, exclude=["avatr"]), user_infos))
    • 2.excel:使用xlsxwriter库根据data生成excel表

      xlsxwriter的使用见下面
      
    • 3.FileResponse:使用 django.http.FileResponse 返回

      from django.http import FIleResponse
      with open("./excel/userinfos.xlsx", "rb") as f:res = FileResponse(f)res["Content-Type"] = "application/octet-stream"res["Content-Disposition"] = 'filename="userinfs.xlsx"'return res
  • 缺点:每次针对不同的请求要生成不同的excel文件

2. 方法二(推荐)

  • 思路:先查出数据data,再在内存中写一个excel文件,再返回出去,这样就省了一步
  • 步骤

    1. data:和上面一样
    2. excel+HttpResponse:在内存中写excel

      from django.http import HttpResponse
      from io import BytesIO
      import xlsxwriterx_io = BytesIO()
      work_book = xlsxwriter.WorkBook(x_io)
      work_sheet = work_book.add_sheet("excel-1")
      ...
      ...
      ...
      work_book.close()
      res = HttpResponse()
      res["Content-Type"] = "application/octet-stream"
      res["Content-Disposition"] = 'filename="userinfos.xlsx"'
      res.write(x_io.getvalue())return res
  • 其他:与上面的比较就是不用再去写一个excel文件了,也不用过后再删除了。

3. xlsxwriter 的使用方法

pip install xlsxwriterimport xlswriter
# 注意这里与上面用BytesIO的区别
work_book = xlsxwriter.workbook.WorkBook("./excel/user_data.xlsx")
work_sheet = work_book.add_sheet("excel-1")data = [{"a":1, "b": 2}, {"a":22, "b":11}, {"a":54, "b":99}...]
keys = dict(data[0].keys())
keys.sort()
row, col = 0, 0
# 写头
for k in keys:# 意思是:在row行,col列,写了一个kwork_sheet.write(row, col, k)col += 1
# 写内容
row, col = 1, 0
for temp in data:for k in keys:work_sheet.write(row, col, temp[k])col += 1row += 1col = 0
# work_book.close()
# 这样就写了一个名为 user_data.xlsx 的文件了

django后台返回excel表相关推荐

  1. 当后台返回Excel文件流,前端怎么下载

    首先根据后台给的导出接口地址:/back/supervision/exportXls 前端: api >index.js文件中接口 export function superExportXls( ...

  2. vhm在服务器上创建虚拟机,一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

  3. ajax提交用流的方式,ajax 请求 后台返回的文件流

    download(url) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以使用POST方式,根据接口 xhr. ...

  4. wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...

    一.老板的需求总是莫名奇妙 老板需求:一天老板说,嘿!放牛娃,将这些excel表合并到一个总表里,下班前交给我 老板话刚讲完,我心里就想,这还不简单么,excel不就是有合并表的功能么!!简单的要死! ...

  5. python一键合并上千个Excel表(对不起!!因为这事,我和同事吵了一架)

    如果你觉得对你有用,留下一个赞再走,不过分吧!!谢谢!! 文章目录 一.老板的需求总是莫名奇妙 二.别人不帮你,你帮你自己 三.上干货,看不懂,我买飞机票给你 四.上代码:(每一步都有注释,完全不用担 ...

  6. ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...

    py文件: from django.utils.http import urlquote from rest_framework.views import APIView from django.sh ...

  7. POI动态导出Excel,后台返回文件流,前端responseType格式下载

    针对各个表的数据导出,实现的代码往往相似,出于这个目的,开启自己代码简略之旅.本文是针对.xls的excel文件. 1.思路描述 ①.确定各个模板的.xls文件格式 ②.定义模板的存在的参数,如第一行 ...

  8. 关于使用Java后台导入excel文件,读取数据后,更新数据库,并返回数据给到前端的相关问题总结

    在之前的项目中,使用到了Java后台读取excel文件数据的功能点,本想着该功能点已经做过了,这一类的应该都大差不离,不过在刚结束的一个项目中,现实给我深深的上了一课,特此编写此片博客,以作记录,并给 ...

  9. jsp后台批量导入excel表格数据到mysql中_运用java解析excel表,拿到表中的数据并批量插入数据库...

    首先,本文是运用jxl进行excel表的解析,所以我们需要先下载一个jxl.jar的jar包: 并且需要一个与excel表对应的实体类,用于接收excel的数据: 然后就是代码部分,我们先编写一个函数 ...

最新文章

  1. 亚马逊马超:如何使用DGL进行大规模图神经网络训练?
  2. html5 canvas获取坐标系,HTML5 Canvas坐标变换
  3. LOL手游诺手对线技巧,上分率提高60%,战神玩家推荐玩法
  4. 零基础学习 Python 之文件
  5. vue-cli webpack配置分析 - chenBright - SegmentFault 思否
  6. 千里眼摄像头支持对象存储吗_3.5ms超高速写入、支持125℃工作的EEPROM“BR24H-5AC系列”...
  7. Jquery 插件集合
  8. bom实现方块移动_html5实现简单的拼图小游戏
  9. 甲方都爱的C4D设计,有了这组灵感,0基础也能get​!
  10. Filter过滤敏感词汇
  11. 2020博客之星结束了,感谢这些小伙伴们为我投票|博客之星TOP20的几位大佬
  12. 信用社考试计算机试题及答案,2016黑龙江省农村信用社考试题库-计算机试题及答案六...
  13. iOS总结-Runtime篇之用途及面试题的总结一黑魔法Method Swizzling
  14. 【环境配置】ceres solver安装
  15. 需要细读的好文章(搜集)
  16. telegraf介绍
  17. 电脑怎么实现长截图、滚动截图?亲测三款好用软件,附图文教程
  18. oracle ebs 单位类别 单位 单位转换,ORACLE_EBS_系统主数据管理(一).doc
  19. 用四种不同的方法实现 tab栏切换
  20. (二)Pgcluu监控

热门文章

  1. nginx降权运行和php环境部署
  2. 恶梦护士 asa_智能手机键盘是隐私的噩梦
  3. 教官保护手法基础要点
  4. 微信小程序上拉加载更多
  5. python高中教材版本_浙江省新高中信息技术教材,将围绕Python进行并增加编程相关知识点...
  6. ENSP安装华为防火墙模拟器(附USG模拟设备安装包)
  7. 微信小程序背景图设置不生效的问题
  8. 我要去京东了~(总结我的大学生活+Python经验感悟分享)
  9. flask-wtf优雅实现下拉多选框
  10. 编译原理—计算三地址码、布尔语句翻译