前后端分离实现导出excel,后端使用easyexcel将数据写入excel表格,然后将其写入到响应流中,关于easyexcel的快速使用可参考文章:JAVA使用easyexcel导出excel

后端主要代码如下:

public <T extends BaseRowModel> void exportExcel(HttpServletResponse response, List<T> excelModel,String fileName) {try (OutputStream out = response.getOutputStream()) {ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);if (!excelModel.isEmpty()) {Sheet sheet = new Sheet(1, 0, excelModel.get(0).getClass());fileName = URLEncoder.encode(fileName, "UTF-8");sheet.setSheetName(fileName);response.setCharacterEncoding("UTF-8");response.addHeader("Content-Disposition", "attachment;filename=" + fileName);writer.write(excelModel, sheet);}writer.finish();} catch (Exception e) {throw new ApplicationException("导出excel错误", e);}}

上述代码中使用泛型使得导出excel代码更为通用。

前端逻辑代码使用typescript完成,代码示例如下:

function getFile(url: string, data: any, fileName: string): Promise<any> {return new Promise((success, fail) =>  {handleRequest(get(url,{params: data,responseType: 'arraybuffer'},)).then((res) => {const blob: Blob = new Blob([res.data]);const downloadElement = document.createElement('a');const href = window.URL.createObjectURL(blob);downloadElement.href = href;downloadElement.download = fileName;document.body.appendChild(downloadElement);downloadElement.click();document.body.removeChild(downloadElement);window.URL.revokeObjectURL(href);success('导出成功');}).catch((e) => {fail(e);});});
}

前端最关键的就是要设置responseType的值为blob或者arraybuffer,否则就会导致下载下来的excel表格无法打开.

解决导出excel表格无法打开的问题相关推荐

  1. 解决导出Excel表格,浏览器不下载

    起因: 最近项目在做将数据导出至Excel功能,遇到了数据导出时默认保存,不走浏览器下载的问题 解决方案: 拼出Excel文件保存的路径,使用Window.Open();方法走一遍下载 最终效果: 下 ...

  2. easypoi导出EXCEL表格,WPS能打开,OFFICE打不开问题

    根据项目需求,需要导出excel表格,选择使用easypoi插件,可是导出的表格,选择wps能打开,office打开报错.于是就被测试提了一个问题单,(呜呜呜...)现在把解决方案分享下. 引入相关依 ...

  3. 解决导入导出Excel表格文字乱码问题

    解决导入导出Excel表格文字乱码问题 参考文章: (1)解决导入导出Excel表格文字乱码问题 (2)https://www.cnblogs.com/minjh/p/12299920.html 备忘 ...

  4. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......

    PHP如何将查询出来的数据导出成excel表格(最好做... $objPHPExcel->getActiveSheet()->getDefaultColumnDimension(A)-&g ...

  5. Java导出Excel表格出现文件损坏异常解决方案

    Java导出Excel表格出现文件损坏异常解决方案 问题出现 问题出现 本人遇到这个问题,由于是第一次见,感觉无从下手.但是导出功能很常见,做的也很多,只有这个出现了文件损坏,那很可能是代码写的有问题 ...

  6. java io导出excel表格_Java IO 导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

  7. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  8. 使用python将数据导出excel表格

      python可用于数据分析,有时候获得了数据需要导出以作其他作用.本文就介绍python导出excel表格的方法.   导出excel表格,python提供了两个库:xlwt,xlrd.本文只讨论 ...

  9. koa2 导出excel表格设置样式_一调整Excel表格的行列宽度,图片又得重新调整?点这个设置就行...

    不知道大家有没有遇到过这样的情况?就是当我们在调整表格的行列宽度的时候,表格里面的图片就会发生变化,像下图这样. 然后我们就需要把图片一个个调整成跟表格行列宽度一致,这样简直太麻烦了有木有! 一.图片 ...

最新文章

  1. windows下php配置redis
  2. LINUX下GDB反汇编和调试
  3. mysql+影响的行数+获取_我们如何获得受MySQL查询影响的总行数?
  4. 支付窗开发实战-张代浩-专题视频课程
  5. C++ 各种数据类型转换总结(不断更新中.....)
  6. Less(v3.9.0)使用详解—变量
  7. Java多线程实现-线程池
  8. StarUml:Exception EOleSysError in module StarUML.ex
  9. linux电子表格工具,Linux系统办公一条龙之电子表格Calc
  10. 电脑检测工具eve_检测电脑硬件的软件(系统硬件检测工具)
  11. solr7.4.0入门,分词,实时增量同步
  12. 按键精灵制作自用游戏脚本所需的简单操作
  13. 在Excel Power Query中提取数据
  14. 如何使用 Echarts 和 SVG文件写大屏可视化地图 ?
  15. win10网络连接不上问题解决方法
  16. oracle 聚合函数 条件,Oracle PLSQL之HAVING后面的条件可由聚合函数构成,也可由GROUP BY后的字段构成...
  17. AJPFX:什么是外汇交易
  18. FFmpeg —— 对mp4视频按时间剪切,生成新的mp4(附源码)
  19. 【通信原理 入坑之路】—— 理解 4G,5G中的天王山:OFDM【学习笔记4】
  20. Android 深入系统完全讲解(15)

热门文章

  1. 2019年西工大附中分校民办小升初电脑随机派位录取结果
  2. python中assert是什么意思_你常常看到 Python 代码中的 assert 是个啥?
  3. 山西师范大学数学与计算机学院宿舍,数计学院宿舍文化节之PPT展示大赛决赛圆满结束...
  4. 最新小笑授权系统源码V6.5+开心免授权版
  5. 跑跑卡丁车组队竞速赛得分制度问题
  6. 力扣T51数组中的逆序对--困难
  7. xposed模块编写教程_Xposed插件开发入门详解
  8. 在PB中存图片入数据库及显示图片
  9. 手机图片分辨率怎么调整?如何将图片修改300DPI?
  10. win10下java的下载、安装和配置环境教程,超级详细