zoukankan      html  css  js  c++  java
  • 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": ""}
              )
      
  • 相关阅读:
    【SQL】语句/函数汇总
    【SVN】提交报错:×××文件is not under version control
    【AnjularJS系列1】样式相关的指令
    【Javescript】DOM(文档对象模型)
    【HTML】框架集(Framesets)
    【HTML】<!DOCTYPE html>作用
    vue2.0移动端自定义性别选择提示框
    微信小程序踩坑记
    网页里如何使用js禁用F12事件
    网页里如何使用js屏蔽鼠标右击事件
  • 原文地址:https://www.cnblogs.com/xujunkai/p/12589294.html
Copyright © 2011-2022 走看看