目录

  • 说明

说明

场景说明:对数据库或者其他数据源读取获取到数据,需要写入到excel完成下载功能,其中一个sheet是固定模板,只需要填充值,另一个sheet是动态的表头和数据需要填充。模板如下图,模板提前放在项目里,免得有问题。



在这个案例前还写过一个批量excel打包成zip包下载的,这里的案例和代码注释说明比较清晰,重复的在这里不再多说,建议先看完上一个案例实现再来看这个实现,避免踩坑出不来,跳转链接:EasyExcel 实现 批量生成多sheet多Excel打包zip下载

不多说 直接上代码:

@GetMapping("/upload-xls")public void uploadXls() {//初始化excel的数据体List<Map<String, String>> maps = new LinkedList<>();for (int i = 6; i < 13; i++) {HashMap<String, String> map = new HashMap<>();map.put("name", "小" + i);map.put("age", "" + i);maps.add(map);}ExcelWriter excelWriter;try {// 文件名(这里URLEncoder.encode可以防止中文乱码)String fileName = URLEncoder.encode("四(二)班-数据导出", "UTF-8");// 设置返回文件信息response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");} catch (Exception e) {log.info(e.getMessage(), e);}//获取模板文件,模板文件需放在 resource下String templateExcelFileName = "upload.xlsx";InputStream templateExcelInputStream = this.getClass().getClassLoader().getResourceAsStream(templateExcelFileName);if (null == templateExcelInputStream) {log.error("模板文件不存在!");}ByteArrayOutputStream outputStream = null;ByteArrayOutputStream bos = cloneInputStream(templateExcelInputStream);//动态sheet1 Excel表头List<String> heads = Arrays.asList("name", "age");List<List<String>> excelHeaders = heads.stream().map(Collections::singletonList).collect(Collectors.toList());//动态sheet1 Excel数据List<List<String>> excelDatas = excelDatas(heads, maps);try {InputStream copyInputStream = new ByteArrayInputStream(bos.toByteArray());outputStream = new ByteArrayOutputStream();excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(copyInputStream).excelType(ExcelTypeEnum.XLSX).build();WriteSheet writeSheet = EasyExcel.writerSheet(0, "学校信息").build();Map<String, Object> map = new HashMap<String, Object>();map.put("schoolName", "新民小学");map.put("className", "四(二)班");map.put("count", maps.size());map.put("uploadDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));excelWriter.fill(map, writeSheet);//动态填充表头和内容WriteSheet attrSheet = EasyExcel.writerSheet(1, "班级学生信息").build();attrSheet.setHead(excelHeaders);excelWriter.write(excelDatas, attrSheet);excelWriter.finish();outputStream.flush();outputStream.close();copyInputStream.close();} catch (Exception e) {log.error(e.getMessage(), e);} finally {if (null != outputStream) {try {outputStream.flush();outputStream.close();} catch (IOException e) {log.error("导出 excel 时关闭 outputStream 出现异常", e);}}}}



就先说到这 \color{#008B8B}{ 就先说到这} 就先说到这
在下 A p o l l o \color{#008B8B}{在下Apollo} 在下Apollo
一个爱分享 J a v a 、生活的小人物, \color{#008B8B}{一个爱分享Java、生活的小人物,} 一个爱分享Java、生活的小人物,
咱们来日方长,有缘江湖再见,告辞! \color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!} 咱们来日方长,有缘江湖再见,告辞!

EasyExcel 实现写入多个sheet数据进excel模板并下载相关推荐

  1. python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...

  2. 使用easyExcel灵活设置样式并导出数据到Excel

    文章目录 前言 一.easyExcel的优势 二.开始修改 1.访问方式改为post,接收页面参数 2.模仿官方实例,实现下载 3.自定义样式 三.样式修改 源码 1.自定义样式,进行表头和内容的样式 ...

  3. SAP ABAP 数据填充进EXCEL模板或代码生成EXCEL并维护数据下载到本地

    文章目录 需求 一.针对有EXCEL模板只填充数据的情况 二.没有模板需要凭空生成Excel的情况 如果需要把大量数据整理后转化为excel传向OA 三.检查Excel是否正确安装 四.如果系统中没有 ...

  4. python数据导出excel模板中的脚本_Python实现将数据库一键导出为Excel表格的实例...

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  5. Perl脚本实现tiptop数据导出EXCEL模板

    在tiptop上利用Perl 脚本,实现按自定义格式导出Excel模板数据,支持多页签 实现方式,先将Perl脚本放到服务器,赋予正确权限,程序先将数据按指定格式写入TXT文档,最后,利用Perl脚本 ...

  6. JavaScript——将json数组填充进excel表并下载保存

    今天遇到的一个问题就是,获取到猫眼电影票房总榜的数据后,怎么把他们填充进excel中? 本文参考了另一篇博客,地址如下: https://blog.csdn.net/qq_34623560/artic ...

  7. Java动态插入数据到html模板并下载为html解决方案

    Java动态插入数据到html模板并导出html解决方案 需求 前端页面数据点击下载为一个html,还必须可以打开关闭表格,有颜色样式之类可复制的,所以canvas画成一个pdf导出显然是不行了: 目 ...

  8. java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出

    项目结构 pom.xml net.sf.jxls jxls-core 1.0.6compile 学生信息表模板: ExcelUtiles package cn.bdqn.utils;import ne ...

  9. 使用poi导出大量数据到excel遇到的问题

    最近在工作遇到利用poi导出大量数据到excel并提供下载的运用场景,并遇到了一个问题,当数据量过大时(几十万),后台在进行数据写入excel中的过程会非常耗时,导致迟迟没有响应前台,结果数据还没导完 ...

最新文章

  1. php 开发百度聚合,php利用百度javascript API实现导航
  2. 在Windows7 下 mingw32 开发环境中采用 glut3.7 学习 OpenGL
  3. 11种常见SQLMAP使用方法详解
  4. 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  5. Windows Defender还原误删文件
  6. linux 文件服务,Linux操作系统之文件服务(ftp、nfs)
  7. OpenCV进口重建Import Reconstruction
  8. android 判断http编码格式,安卓入门笔记之HttpURLConnection的使用
  9. 多线程糗事百科案例(python2)
  10. 解决tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.
  11. 部分高级正则特性 使用
  12. [转载] 使用 Python 实现鼠标键盘自动化
  13. 【LeetCode】【字符串】题号:*657. 机器人能否返回原点
  14. net.java.html.BrwsrCtx
  15. txt替换回车键符号怎么打_电脑小于等于符号≤怎么打
  16. 使用Adobephotoshop制作LOGO
  17. Android 补间动画TranslateAnimation 位移效果
  18. soundbar未来发展_Soundbar专题:一条走天下,属于客厅影院的未来
  19. AS找回被删除的文件
  20. 新建word出现页眉下划线如何解决?

热门文章

  1. Http的使用——GET
  2. Canvas实践教程 1
  3. Forest 3.6.2中多种材质的混合使用与自定义编辑
  4. Python零基础入门书籍阅读有感
  5. 详细教程:公众号文章的评论留言功能怎么开通?
  6. 2016四川职称计算机时间安排,2016年四川职称计算机考试报名通知
  7. c语言指针生成numpy数组,利用ctypes获取numpy数组的指针方法
  8. [ 算法 ] 细说最短路
  9. JAVA使用Tabula解析PDF表格
  10. 使用mysql_upgrade命令_mysql_upgrade命令