springboot整合jett实现模板excel数据导出
一 jett的介绍
1.1 介绍
jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具。
1.2 使用方式
1.使用${}来标识我们需要填充的数据
2.使用<jt></jt>
遍历一个集合,我们对集合的每个元素取名为e
,每个元素的又可以使用${e.属性}
来进行获取。
1.后端代码
public void test(){List<Student> studentsList=new ArrayList<>();// List<Map> studentsList=new ArrayList<>();for(int k=0;k<5;k++){studentsList.add(new Student(k,"张三"+k,(k+1)*2));// resultMap.put("dataList",studentsList);}}
2.模板图
3.导出数据:
二 jett的案例操作
2.1 模板案例
2.2 代码实现
1.工程结构
2.代码
package com.ljf.jett.demo.controller;import com.ljf.jett.demo.model.Student;
import com.ljf.jett.demo.util.DateUtils;
import net.sf.jett.transform.ExcelTransformer;
import org.apache.poi.ss.usermodel.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.*;/*** @ClassName: SkMonthsReportController* @Description: TODO 导出测试类* @Author: liujianfu* @Date: 2022/11/08 10:22:23 * @Version: V1.0**/
@RestController
@CrossOrigin
@RequestMapping("/test")
public class SkMonthsReportController {@RequestMapping("/export")public void exportDataForExcel(HttpServletResponse response) {Map<String, Object> resultMap = new HashMap<String, Object>();resultMap.put("titleName","邵寨煤业公司选煤厂调度日报表");resultMap.put("reportDate", DateUtils.dateToStr(new Date(),"yyyy-MM-dd"));//中间列表//当班量Map<String,Object> currentDutyMap=new HashMap<>();currentDutyMap.put("rxCoal",7664);currentDutyMap.put("blockCoal",1576);currentDutyMap.put("wyCoal",0);currentDutyMap.put("wjCoal",3102);currentDutyMap.put("zongCoal",693);currentDutyMap.put("dryCoal",598);currentDutyMap.put("wetCoal",1);currentDutyMap.put("stone",0);currentDutyMap.put("mark","");resultMap.put("currentDutyMap",currentDutyMap);//回收率Map<String,Object> recycleMap=new HashMap<>();recycleMap.put("rxCoal",7664);recycleMap.put("blockCoal",1576);recycleMap.put("wyCoal",0);recycleMap.put("wjCoal",3102);recycleMap.put("zongCoal",693);recycleMap.put("dryCoal",598);recycleMap.put("wetCoal",1);recycleMap.put("stone",0);recycleMap.put("mark","精煤产率61.04");resultMap.put("recycleMap",recycleMap);//月类量Map<String,Object> monthMap=new HashMap<>();monthMap.put("rxCoal",7664);monthMap.put("blockCoal",1576);monthMap.put("wyCoal",0);monthMap.put("wjCoal",3102);monthMap.put("zongCoal",693);monthMap.put("dryCoal",598);monthMap.put("wetCoal",1);monthMap.put("stone",0);monthMap.put("mark","");resultMap.put("monthMap",monthMap);//年累量Map<String,Object> yearMap=new HashMap<>();yearMap.put("rxCoal",7664);yearMap.put("blockCoal",1576);yearMap.put("wyCoal",0);yearMap.put("wjCoal",3102);yearMap.put("zongCoal",693);yearMap.put("dryCoal",598);yearMap.put("wetCoal",1);yearMap.put("stone",0);yearMap.put("mark","");resultMap.put("yearMap",yearMap);//汇总栏resultMap.put("waitCoalTime",45.6);resultMap.put("productTime",34.2);resultMap.put("productCoalTime",1234.2);//阐述StringBuffer sb=new StringBuffer();sb.append("1.主洗各筛机筛板、轨座及固定筛检查更换。\r\n");sb.append("2.事故池更换508潜水泵。\r\n");sb.append("3.主洗车间二楼372粗中煤泥刮板机紧固链条。\r\n");sb.append("4.主洗车间三楼半307浅槽分选机紧固底板螺丝。\r\n");sb.append("5.产品仓上804块精煤皮带更换挡皮。\r\n");resultMap.put("checkItem",sb.toString());//仓库Map<String,Object> coalHouse=new HashMap<>();coalHouse.put("yhouse",1);coalHouse.put("j1house",2);coalHouse.put("j2house",3);coalHouse.put("y3house",4);coalHouse.put("z4house",4);coalHouse.put("b5house",5);coalHouse.put("checkTime",DateUtils.dateToStr(new Date(),"yyyy-MM-dd"));resultMap.put("coalHouse",coalHouse);//煤质监测//原煤质检Map<String,Object> yCoalMap=new HashMap<>();yCoalMap.put("water",10.8);yCoalMap.put("gray",29.27);yCoalMap.put("sulfur",0.39);yCoalMap.put("energy",4681);resultMap.put("yCoalMap",yCoalMap);//块晶煤质检Map<String,Object> blockCoalMap=new HashMap<>();blockCoalMap.put("water",10.8);blockCoalMap.put("gray",29.27);blockCoalMap.put("sulfur",0.39);blockCoalMap.put("energy",4681);resultMap.put("blockCoalMap",blockCoalMap);//未晶煤质检Map<String,Object> wCoalMap=new HashMap<>();wCoalMap.put("water",10.8);wCoalMap.put("gray",29.27);wCoalMap.put("sulfur",0.39);wCoalMap.put("energy",4681);resultMap.put("wCoalMap",wCoalMap);//中煤质检Map<String,Object> zongCoalMap=new HashMap<>();zongCoalMap.put("water",10.8);zongCoalMap.put("gray",29.27);zongCoalMap.put("sulfur",0.39);zongCoalMap.put("energy",4681);resultMap.put("zongCoalMap",zongCoalMap);//煤泥质检Map<String,Object> niCoalMap=new HashMap<>();niCoalMap.put("water",10.8);niCoalMap.put("gray",29.27);niCoalMap.put("sulfur",0.39);niCoalMap.put("energy",4681);resultMap.put("niCoalMap",niCoalMap);//陨石质检Map<String,Object> stoneCoalMap=new HashMap<>();stoneCoalMap.put("water",10.8);stoneCoalMap.put("gray",29.27);stoneCoalMap.put("sulfur",0.39);stoneCoalMap.put("energy",4681);resultMap.put("stoneCoalMap",stoneCoalMap);//生产统计//晚上Map<String,Object> nightMap=new HashMap<>();nightMap.put("washTotal",2944);nightMap.put("white",2);nightMap.put("yellow",7);nightMap.put("liquid",8);resultMap.put("nightMap",nightMap);//中午Map<String,Object> pmMap=new HashMap<>();pmMap.put("washTotal",2944);pmMap.put("white",2);pmMap.put("yellow",7);pmMap.put("liquid",8);resultMap.put("pmMap",pmMap);//早上Map<String,Object> amMap=new HashMap<>();amMap.put("washTotal",2944);amMap.put("white",2);amMap.put("yellow",7);amMap.put("liquid",8);resultMap.put("amMap",amMap);//消耗统计//晚上Map<String,Object> nightConsumeMap=new HashMap<>();nightConsumeMap.put("blockTotal",2944);nightConsumeMap.put("blockConsume",2);resultMap.put("nightConsumeMap",nightConsumeMap);//中午Map<String,Object> pmConsumeMap=new HashMap<>();pmConsumeMap.put("blockTotal",2944);pmConsumeMap.put("blockConsume",2);resultMap.put("pmConsumeMap",pmConsumeMap);//早上Map<String,Object> amConsumeMap=new HashMap<>();amConsumeMap.put("blockTotal",2944);amConsumeMap.put("blockConsume",2);resultMap.put("amConsumeMap",amConsumeMap);//最后阐述resultMap.put("endMark","介耗数据每天自行调整,按0.01-0.03范围波动调整");buildExcelReport( resultMap, response);}public void test(){List<Student> studentsList=new ArrayList<>();// List<Map> studentsList=new ArrayList<>();for(int k=0;k<5;k++){studentsList.add(new Student(k,"张三"+k,(k+1)*2));// resultMap.put("dataList",studentsList);}}/*** @author liujianfu* @description 封装excel* @date 2022/11/8 10:42* @param [resultMap]* @return void*/public void buildExcelReport(Map<String, Object> resultMap,HttpServletResponse response){String modelFile="d:/10-model.xlsx";try (InputStream is = new FileInputStream(new File(modelFile));) {Workbook workbook = new ExcelTransformer().transform(is, resultMap);buildExcelDocument("邵寨10月_"+System.currentTimeMillis()+".xlsx", workbook, response);} catch (Exception e) {e.printStackTrace();}}/*** @author liujianfu* @description 数据流的输出* @date 2022/11/8 10:42* @param [filename, workbook, response]* @return void*/protected static void buildExcelDocument(String filename, Workbook workbook, HttpServletResponse response)throws Exception {response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));OutputStream outputStream = response.getOutputStream();workbook.write(outputStream);outputStream.flush();outputStream.close();}
}
3.导出效果
代码地址:https://gitee.com/jurf-liu/jett-excel-demo.git
springboot整合jett实现模板excel数据导出相关推荐
- springboot整合poi(使用EXCEL模板导出导入)
springboot整合poi 依赖 <!-- poi依赖--><dependency><groupId>org.apache.poi</groupId> ...
- springboot整合poi-tl根据模板导出word
springboot整合poi-tl根据模板导出word poi-tl中文文档:http://deepoove.com/poi-tl/ 引入所需包 <dependency><grou ...
- SpringBoot中使用Easyexcel实现Excel导入导出功能(三)
导出的数据包含有图片 导出excel表格的数据包含有图片,这种场景比较少.通Easyexcel实现这样的需求,我认为最简便的方法就是使用前面提到的自定义转换器(com.alibaba.excel.co ...
- SpringBoot中使用Easyexcel实现Excel导入导出功能(一)
目录 前言 1.常规导入 2.读取到指定的列 3.读取全部的sheet页 4.日期.数字及其他自定义格式的转换 5.表头有多行的表格读取 6.表头数据的读取 7.单元格内的备注内容读取 前言 exce ...
- EasyExcel使用模板填充数据导出遇到的坑
EasyExcel使用模板填充数据导出遇到的坑 1.最近需求涉及excel的导出,所以选择用阿里的EasyExcel框架来使用是比较方便的,这个框架封装了许多方法来供我们使用,比传统POI简单许多 2 ...
- jxls对模板Excel进行导出
jslx对模板Excel进行导出 jxls是在国外比较受欢迎导出工具,就和国内的easypoi类似,这两者并不冲突,就看个人喜好.我在导出Excel文档时,个人比较喜欢使用jxls,废话不多说,那就直 ...
- 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)
本次随笔主要讲述着工作中是如何解决数据导出的,对于数据导出到excel在日常工作中大家还是比较常用的,那导出到word呢,改如何处理呢,简单的页面导出问题应该不大,但是如果是标准的公文导出呢,要保证其 ...
- springboot新手项目从零开始搭建,涉及excel数据导出和邮箱发送(上)
项目创建 idea点击New Project 创建一个新项目 左上角打开点击File打开设置 maven设置 这样 我们的项目就创建完毕了 点开左边的pom文档 将提供的依赖导入 我之前就存在一个冲突 ...
- SpringBoot整合Thymeleaf+EasyExcel实现excel文件的读取并展示,附加swagger2配置(超详细示范!)
目录 1.Springboot整合Thyemleaf+EasyExcel 步骤 1.1 pom文件引入依赖 1.2 yml文件配置 1.3 config配置类 1.3.1 Swagger2配置类 1. ...
最新文章
- 数据库主键设计之思考
- protobuf-2.5.0安装
- 演示: GTS流量×××和CAR流量监管的效果及相关实践计划
- 10 邮件槽_员工主动发离职邮件,提出申请又反悔,法院判决让人懵了!
- ( 设计高效算法 ) 年龄排序 Age Sort Uva 11462
- 150W光速秒充!realme真我GT Neo3正式发布 售价1999元起
- GIT 添加多个git账号
- 从零搭建自己的SpringBoot后台框架(六)
- 服务器系统资源不足瑞友天翼,瑞友天翼 错误提示解决方法
- matlab符号运算转置出现conj的解决办法
- PS(Photo Shop Cs6)批量调整图片大小
- PHP微信防止token过期,微信调用接口,防止Access_token过期的方法
- python-pandas-读取与写入文件
- shell一键安装lnmp
- SAP 技术原理搬砖 - ARAP重分类:为啥我和外币评估设计原理不一样?
- 【Pytorch】基于CNN手写汉字的识别
- Excel自动化办公(一) | 满足你对Excel数据的所有幻想,python-office一键生成模拟数据
- 【转载】美国战略与中国危机--戴旭
- 【Rust日报】2021-08-30 如何来看待 unwrap
- 爱奇艺 视频编码信息参考