EasyExcel 实现写入多个sheet数据进excel模板并下载
目录
- 说明
说明
场景说明:对数据库或者其他数据源读取获取到数据,需要写入到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模板并下载相关推荐
- python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...
- 使用easyExcel灵活设置样式并导出数据到Excel
文章目录 前言 一.easyExcel的优势 二.开始修改 1.访问方式改为post,接收页面参数 2.模仿官方实例,实现下载 3.自定义样式 三.样式修改 源码 1.自定义样式,进行表头和内容的样式 ...
- SAP ABAP 数据填充进EXCEL模板或代码生成EXCEL并维护数据下载到本地
文章目录 需求 一.针对有EXCEL模板只填充数据的情况 二.没有模板需要凭空生成Excel的情况 如果需要把大量数据整理后转化为excel传向OA 三.检查Excel是否正确安装 四.如果系统中没有 ...
- python数据导出excel模板中的脚本_Python实现将数据库一键导出为Excel表格的实例...
数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...
- Perl脚本实现tiptop数据导出EXCEL模板
在tiptop上利用Perl 脚本,实现按自定义格式导出Excel模板数据,支持多页签 实现方式,先将Perl脚本放到服务器,赋予正确权限,程序先将数据按指定格式写入TXT文档,最后,利用Perl脚本 ...
- JavaScript——将json数组填充进excel表并下载保存
今天遇到的一个问题就是,获取到猫眼电影票房总榜的数据后,怎么把他们填充进excel中? 本文参考了另一篇博客,地址如下: https://blog.csdn.net/qq_34623560/artic ...
- Java动态插入数据到html模板并下载为html解决方案
Java动态插入数据到html模板并导出html解决方案 需求 前端页面数据点击下载为一个html,还必须可以打开关闭表格,有颜色样式之类可复制的,所以canvas画成一个pdf导出显然是不行了: 目 ...
- java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出
项目结构 pom.xml net.sf.jxls jxls-core 1.0.6compile 学生信息表模板: ExcelUtiles package cn.bdqn.utils;import ne ...
- 使用poi导出大量数据到excel遇到的问题
最近在工作遇到利用poi导出大量数据到excel并提供下载的运用场景,并遇到了一个问题,当数据量过大时(几十万),后台在进行数据写入excel中的过程会非常耗时,导致迟迟没有响应前台,结果数据还没导完 ...
最新文章
- php 开发百度聚合,php利用百度javascript API实现导航
- 在Windows7 下 mingw32 开发环境中采用 glut3.7 学习 OpenGL
- 11种常见SQLMAP使用方法详解
- 各类型土地利用图例_划重点!国土空间总体规划——土地利用
- Windows Defender还原误删文件
- linux 文件服务,Linux操作系统之文件服务(ftp、nfs)
- OpenCV进口重建Import Reconstruction
- android 判断http编码格式,安卓入门笔记之HttpURLConnection的使用
- 多线程糗事百科案例(python2)
- 解决tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.
- 部分高级正则特性 使用
- [转载] 使用 Python 实现鼠标键盘自动化
- 【LeetCode】【字符串】题号:*657. 机器人能否返回原点
- net.java.html.BrwsrCtx
- txt替换回车键符号怎么打_电脑小于等于符号≤怎么打
- 使用Adobephotoshop制作LOGO
- Android 补间动画TranslateAnimation 位移效果
- soundbar未来发展_Soundbar专题:一条走天下,属于客厅影院的未来
- AS找回被删除的文件
- 新建word出现页眉下划线如何解决?