首页 > 其他分享 >封装导出Excel文件

封装导出Excel文件

时间:2023-04-11 15:44:42浏览次数:40  
标签:文件 elink filePrefix 导出 fileSuffix Excel 封装

utils/exportexcel.js

import { parseTime } from '@/utils/format';
import { Message } from 'element-ui';
/**
 * 导出Excel文件
 * @param {*} data 文件数据流
 * @param {String} filePrefix 文件前缀名
 * @param {String} fileSuffix 文件后缀名
 */
export function exportExcel(data, filePrefix, fileSuffix) {
  // 判断文件前缀名是否存在,不存在默认'EXPORTEXCEL'
  filePrefix = filePrefix ?? 'EXPORTEXCEL';
  // 判断文件后缀名是否存在,不存在默认'.xls'
  fileSuffix = fileSuffix ?? '.xls';

  // 处理文件数据流
  const contentByExportExcel = data;
  const blobByExportExcel = new Blob([contentByExportExcel], { type: 'application/vnd.ms-excel;charset=utf-8' });

  // 组装文件名称
  const filenameByExportExcel = `${filePrefix}_${parseTime(
    new Date(),
    '{y}-{m}-{d}'
  )}_${new Date().getTime()}${fileSuffix}`;

  // 执行文件下载操作
  if ('download' in document.createElement('a')) {
    const elink = document.createElement('a');
    elink.download = filenameByExportExcel;
    elink.style.display = 'none';
    elink.href = URL.createObjectURL(blobByExportExcel);
    document.body.appendChild(elink);
    elink.click();
    URL.revokeObjectURL(elink.href);
    document.body.removeChild(elink);
    Message({
      message: '导出Excel成功!',
      type: 'success',
      showClose: true,
      center: true
    });
  } else {
    navigator.msSaveBlob(blobByExportExcel, filenameByExportExcel);
    Message({
      message: '导出Excel成功!',
      type: 'success',
      showClose: true,
      center: true
    });
  }
}

引入:

import { exportExcel } from '@/utils/exportexcel';

使用:

// 排除不需要的属性
let { pageNum, pageSize, ...otherObj } = { ...this.queryParams };
// 发送导出请求
exportAttendanceReport({ ...otherObj })
    .then((response) => {
        exportExcel(response, '统计表格', '.xlsx');
    })
    .catch(() => {
        this.$message.error('导出异常!');
    }); 

  

 需要注意的点,数据的响应类型(responseType: 'blob'),数据大概如下:

 

标签:文件,elink,filePrefix,导出,fileSuffix,Excel,封装
From: https://www.cnblogs.com/zaijin-yang/p/17306464.html

相关文章

  • 在EXCEL和WPS表格里实现邮件合并功能
    在EXCEL和WPS表格里实现邮件合并功能2020/3/2122:06:09 0人评论 10635次OFFICE邮件合并:在Office中,先建立两个文档:一个WORD包括所有文件共有内容的主文档(比如未填写的信封等)和一个包括变化信息的数据源EXCEL(填写的收件人、发件人、邮编等),然后使用邮件合并功能在主文档中插入......
  • 封装,继承,多态
    封装该露的露,该藏的藏我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够......
  • 封装统一请求状态返回Result
    1、测试数据publicclassTest{publicstaticvoidmain(String[]args){System.out.println("Response.success(ErrorEnum.SUCCESS)="+Response.success(ErrorEnum.SUCCESS));System.out.println("Response.success(ErrorEnum.FA......
  • vue 预览PDF、Docx、EXCEL文件
      <template><divclass="contentArea"><divclass="fileContainer"ref="fileDiv"v-if="$route.query.fileName.indexOf('docx')!==-1"></div><divclass="f......
  • 在浏览器和node中使用 GitHub的js-xlsx库进行Excel文件处理(一)
    1.简介js-xlsx库是目前Github上star数量最多的处理Excel的库,功能强大,提供了各种对表格的操作,但是这个项目文档有些乱,提供的demo也只具备最基本的功能。Demo地址:http://oss.sheetjs.com/js-xlsxGithub上源码地址:http://git.io/xlsx支持解析的格式有:Excel2007+XML......
  • python3写csv中文文件,可以直接excel打开
    写出python3代码:将如下数据转为windowsexcel文件。 importcsvdata=[[1010205,'2022/11/23','R染(Inception)攻击','T89','在远程系统的启动文件登录后可以自动执行恶意脚本或可执行文件。','例:copyrogramData\Microsoft\W\Programs\StartUp',4,85,......
  • excel切片器多表/多图联动
    1、以相同的数据源建立不同维度的透视表(这一步最关键,数据源必须相同,否则无法进行多表链接)  2、选择期中一个数据透视表插入切片器  3、切片器空白处右键选择报表链接  4、在需要联动的透视表打勾即可以透视表为基础制作图标,即可实现多图联动 ......
  • Pandas模块实现向Excel写入数据
    Pandas模块实现向Excel写入数据importpandasaspddfData={#用字典设置DataFrame所需数据'序号':data[0],'项目':data[1],'数据':data[2]}#创建DataFramedf=pd.DataFrame(dfData)#存表,去除原始索引列(0,1,2...)df.to_excel(fi......
  • Maven 资源导出问题
    <!--在build中配置resources,来防止我们资源导出失败的问题--><build><resources><resource><directory>src/main/resources</directory><excludes><exclude>*......
  • xlsxwriter模块实现向Excel表写数据
    xlsxwriter模块实现向Excel表写数据导入第三方库importxlsxwriterasxw写数据#创建工作簿workbook=xw.Workbook(filename)#创建子表worksheet1=workbook.add_worksheet("sheet1")#激活表worksheet1.activate()#设置表头title=['序号','项目','数据&#......