Fork me on GitHub

vue下载xls文件 (后端django)

vue下载xls文件 (后端django)

  • 前端vue

    async exportOrder () {
          if (this.batchEditOrderStatus.length === 0) {
            this.$message.warning('您当前什么都没有选')
            return
          }
          // {responseType: 'blob'} 的设置很重要否则无法下载
          axios.post('export_order/', {'data': this.batchEditOrderStatus}, {responseType: 'blob'}).then((res) => {
            // 创建标签a
            const link = document.createElement('a')
            let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
            link.style.display = 'none'
            link.href = URL.createObjectURL(blob)
            let num = ''
            // 生成随机数
            for (let i = 0; i < 10; i++) {
              num += Math.ceil(Math.random() * 10)
            }
            link.setAttribute('download', '航海者有限公司订单信息_' + num + '.xlsx')
            document.body.appendChild(link)
            link.click()
            // 删除标签
            document.body.removeChild(link)
          })
        }
    
  • django

    def send_csv(request):
        if request.method == "POST":
            result_str = request.body.decode("utf-8")
            result_dict = json.loads(result_str)
            order_list = result_dict.get("data")
            try:
                # csv 函数为自定义,生成excel的格式
                ws = csv(order_list)
                sio = BytesIO()
                ws.save(sio)
                sio.seek(0)
                str_time = fmt_time()
                # 定义返回数据类型
                response = HttpResponse(sio.getvalue(), content_type="application/vnd.ms-excel", )
                # 定义文件名。
                response["Content-Disposition"] = "attachment; filename=%s" % (
                    urlquote(DEFAULT_FILENAME % (str_time,)),
                )
                response.write(sio.getvalue())
                return response
            except Exception as e:
                return JsonResponse(
                    {"code":1002, "msg":"生成xls失败", "data":""}
                )
        else:
            return JsonResponse(
                {"code": 1008, "msg": "请求方式有问题", "data": ""}
            )
    
posted @   是阿凯啊  阅读(1275)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示