首页 > 其他分享 >后端导出excel 表格 前端下载

后端导出excel 表格 前端下载

时间:2023-09-06 20:36:20浏览次数:35  
标签:表格 URL excel 导出 xhr blob new type

问题描述:

后端导出excel表格为二进制 前端调取接口并下载 

方案: 前端将返回数据  设置响应数据类型为blob

封装函数:
/**
   * 后端导出excel方法
   * @param postDate 接口传参
   * @param interfaceUrl 接口地址
   * @param excelName excel文件名
   */
import {message} from 'ant-design-vue'
export function exportExcel(postDate, interfaceUrl, excelName,type='post') {
  return new Promise((resolve, reject) => {
    let BASE_URL = process.env.VUE_APP_API_BASE_URL;
    const data = JSON.stringify(postDate);
    const url = BASE_URL + interfaceUrl;
    var xhr = new XMLHttpRequest();
    xhr.open(type, url, true);
    xhr.responseType = "blob"; // 设置响应数据类型为blob, 不设置会出现下载的文件比源文件更大
    xhr.setRequestHeader("Authorization", window.localStorage.getItem("token"));
    xhr.setRequestHeader("Content-type", "application/json;charset=UTF-8");
    xhr.setRequestHeader("Accept", "application/json, text/plain, */*");
    xhr.send(data);
    xhr.onload = function () {
      //判断返回的是json 还是二进制流
      if (this.response.type == "application/json") {
        let reader = new FileReader();
        reader.readAsText(this.response, "utf-8");
        reader.onload = (e) => {
          let readerres = reader.result;
          let parseObj = {};
          parseObj = JSON.parse(readerres);
          message.error(parseObj.errorMsg);
          resolve()
        };
      } else {
        var blob = new Blob([this.response], { type: this.responseType }); // ArrayBuffer , mime类型
        var a = document.createElement("a");
        var url = window.URL.createObjectURL(blob);
        a.href = url;
        a.download = `${excelName}.xls`;
        a.click();
        resolve()
      }
    };
  })
}

  调用:

exportExcel(请求参数, 请求地址, 下载文件名).then(res => {
        console.log(res); })

  

标签:表格,URL,excel,导出,xhr,blob,new,type
From: https://www.cnblogs.com/qinyuanchun/p/17683296.html

相关文章

  • python-docx:在保持秩序的同时循环访问段落、表格和图像
    defiter_block_items(parent):"""Generateareferencetoeachparagraphandtablechildwithin*parent*,indocumentorder.EachreturnedvalueisaninstanceofeitherTableorParagraph.*parent*wouldmostcommonlybeareferencetoam......
  • ajax下载二进制文件(导出Excel)
    varurl='http://127.0.0.1'; varxhr=newXMLHttpRequest(); xhr.open('GET',url,true);//也可以使用POST方式,根据接口 xhr.responseType="blob";//返回类型blob //定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑 xhr.o......
  • vxe-table 坑:可编辑表格表头不显示编辑图标
    问题"vxe-table":"^3.5.9",官方文档默认显示编辑图标。但实际上没有显示。给vex-table的edit-config添加showIcon:true,也不生效。设置icon也不生效。替代方案给vxe-column设置插槽<template#default="{row}"></template>,内部显示内容添加icon。新的问题插......
  • Node.js 使用 officecrypto-tool 读取加密的 Excel 和 Word 文档, 支持 xlsx 和 docx
    Node.js使用officecrypto-tool读取加密的Excel(xls,xlsx)和Word(docx)文档,还支持xlsx和docx文件的加密(具体使用看文档)。暂时不支持doc文件的解密传送门:officecrypto-tool读取加密的Excel示例一:xlsx-populate//只支持xlsx,xlsx-populate自带了解密功能......
  • [转]如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV
    原文地址:如何在MySQL/MariaDB中导入导出数据,导入导出数据库文件、Excel、CSV-掘金在日常的数据库维护工作中,经常需要对数据库进行导入导出操作,备份、分析、迁移数据都需要用到导入导出功能,在本教程中将详细讲解所有常见的MySQL和MariaDB中导入导出数据的方法(注意:MyS......
  • 用navicat工具excel导入数据到Oracle数据库,数字类型的总是多加.0的问题怎么处理
    在使用Navicat工具将Excel数据导入Oracle数据库时,数字类型的总是多加一个.0的问题可能与数据类型映射有关。您可以尝试以下解决方法:检查Excel列的数据格式:确保Excel列中的数据是按照数字格式存储,而不是文本或其他格式。如果列的单元格格式为文本,则导入时Oracle可能将......
  • Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档
    Node.js使用officecrypto-tool读取加密的Excel(xls,xlsx)和Word(docx)文档,还支持xlsx和docx文件的加密(具体使用看文档)。暂时不支持doc文件的解密传送门:officecrypto-tool读取加密的Excel示例一:xlsx-populate//只支持xlsx,xlsx-populate自带了解密功能,/......
  • element table 表格控件实现单选功能
      <el-table:data="tableData"borderstriperef="tableData"@row-click="singleElection"><el-table-columnlabel=""width="65"><templateslot-scope="......
  • 打开Excel文件
    要通过Python的os模块来打开Excel文件,你可以使用os.system()来运行Excel可执行文件,并将要打开的文件路径作为参数传递给Excel。通常,Excel可执行文件的路径是excel.exe,但在某些系统上可能会有所不同。以下是一个示例代码:importos#Excel可执行文件的路径(根据你的系统可能有所不同......
  • python用tkinter写一个文件对比的小工具,将两个excel文件进行对比,将两个列表差异保存到
    先写文件对比的逻辑代码,包括读取文件,对比文件,将对比出来的差异写入另一个excel文件1.读取文件,我这里是选取自己需要的不同的列,选定了指定的sheet列表,读者可根据需求更改defreadexcel(file):#打开Excel文件workbook=openpyxl.load_workbook(file)#选择指定......