动态表头excel导出(java)
动态表头excel导出
1. 导入依赖并设置实体
首先配置poi版本相关的maven属性
<properties><poi.version>4.1.2</poi.version> </properties>
配置文件中使用Apache poi,Alibaba-easyexcel相关的依赖。
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version><exclusions><exclusion><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency>
动态读取的表单实体类内容
@Builder @Data @TableName("t_form_template") public class FormTemplate {@TableId(type = IdType.AUTO)private Long id;//表头名称private String formTitle;//表名private String formName;//是否可为空private Boolean isBlank;//规定的数据类型private String dataType;//规定的字段的长度private String dataNum;private String valueType;//字段默认值private String defaultText;private String defaultPrompt;//字段的排序private String formSort;private String remarks;@ApiModelProperty(value = "创建时间")@TableField(fill = FieldFill.INSERT)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;@TableField(exist=false)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime createTimeBegin;@TableField(exist=false)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime createTimeEnd;@ApiModelProperty(value = "更新时间")@TableField(fill = FieldFill.INSERT_UPDATE)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime updateTime;}
2. 建立Excel数据表格
//创建工作薄HSSFWorkbook workbook = new HSSFWorkbook();//创建用户工作表HSSFSheet sheet = workbook.createSheet("报名用户");//创建行HSSFRow rows = sheet.createRow(0);
3. 绑定动态数据
- 将动态生成的表头headList根据数据库读取的form_title表头字段进行绑定,将headList根据数据库数据生成文件流对象。
//动态添加的所有表头行构成一个集合headListList<List<String>> headList = new ArrayList<List<String>>();List<Map> mapList = formTemplateService.selectFormTitleBySignupId(signupId);// 第 n 行 的表头int j=0;for (Map map:mapList) {//创建列rows.createCell(j).setCellValue((String) map.get("form_title"));j++;}j=1;// 第 n 行的数据for (Map<String,Object> maps : mapLists) {HSSFRow rowss = sheet.createRow(j);int i=0;for (Map map:mapList) {//创建列rowss.createCell(i).setCellValue((String)maps.get(map.get("form_title")));i++;}j++;}
4. 设置写入的字节流对象的相关参数
- 控制文件流操作写入workBook工作簿。
- 规定输出字节流编码格式,设置内容属性
//字节输出流ByteArrayOutputStream outputStream = new ByteArrayOutputStream();try {workbook.write(outputStream);} catch (IOException e) {e.printStackTrace();} finally {outputStream.close();}//http请求头HttpHeaders httpHeaders = new HttpHeaders();String name = meeting.getName()+".xls";String fileName = new String(name.getBytes("UTF-8"), "iso-8859-1");//设置内容属性httpHeaders.setContentDispositionFormData("attachment", fileName);httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);ResponseEntity<byte[]> filebyte = new ResponseEntity<byte[]>(outputStream.toByteArray(), httpHeaders, HttpStatus.CREATED);try {outputStream.close();} catch (IOException e) {e.printStackTrace();} finally {outputStream.close();}
动态表头excel导出(java)相关推荐
- 动态表头excel导入(java)
动态表头excel导入 1. 导入依赖并设置实体 首先配置poi版本相关的maven属性 <properties><poi.version>4.1.2</poi.vers ...
- EasyExcel解析动态表头及导出
前言 excel文件导入及导出,是日常开发中经常遇到的需求.本次笔者以EasyExcel为例,针对在项目中遇到的动态表头解析及导出的场景,详细介绍具体的代码实现过程. 参考地址 https://git ...
- 根据children动态复杂表头excel导出_Java高级特性-注解:注解实现Excel导出功能
注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套"注解驱动编程". 这听起来高大上,但毕竟是框架的事,我们也能用好注解吗? 的确,我们很少有机会自己写注 ...
- easyexcel 动态列_easyexcel动态表头列导出SequenceDiagram 阅读源码事半功倍
EasyExcel简介 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢 ...
- excel导出java.lang.ArrayIndexOutOfBoundsException:-32768
基于Excel导出竟然报越界错误: 报错行竟然是: 处理办法:
- java 复杂表头excel导出合并单元格
easyexcel-wraper easyexcel-wraper是什么? 一个方便读取excel内容,且可以使用注解进行内容验证的包装工具 用到alibaba 2.1.4版本 定义导出excel复杂 ...
- PHP 基于XLSXWriter的多级表头Excel导出
最近公司业务有一些需要导出多级表头的业务需求,百度之后,没有很好的应用demo,然后接触了XLSXWriter,就想着一劳永逸,写个工具类,示例只有三级,但是不止于三级 应用举例 比如说我们需要这样一 ...
- excel导出java.lang.ArrayIndexOutOfBoundsException: 0 POI导出excel报错数组下标越界0
好久没写博客了,最近是有点懒了... 最近项目遇到个问题,用poi导出excel,本地和测试服务器都没问题,线上所有的导出都不能用,排查过JKD版本和配置文件都没问题,百思不得其解,最终问了朋友考虑到 ...
- excel导出java不完整_有关Java POI导出excel表格中,单元格合并之后显示不全的解决方法。...
我在table变换excel之后发现合并的单元格不能显示全部边框,在网上找了半天解决方案,终于解决了.具体解决代码如下; /** * 设置合并单元格的边框样式 * * @param sheet 当前表 ...
最新文章
- python控制窗口缩放
- Quartz框架基于Calendar的排除规则
- 《MySQL——索引笔记》
- 拥抱云原生,Fluid结合JindoFS :阿里云OSS加速利器
- J2ME的移动支付系统的客户端的实现
- leetcode @python 124. Binary Tree Maximum Path Sum
- 如果使用Node.js不存在该如何创建目录?
- php在浏览器输入路径,关于在sublime text 3 中配置一键浏览器打开php文件,并且是在localhost 本地服务器路径下...
- 分布式文件系统HDFS 学习指南
- java 获取windows窗口句柄_得到Java程序的WIN32窗口句柄(转)
- 新浪微博系统 Xweibo v1.1.1beta 免费版Xweibo-Xweibo 软件系统简介(PHP+MYSQL)
- IntelliJ IDEA配置Groovy教程
- Spring Cloud Gateway⑤令牌桶算法
- 【toLua++】toLua++编译生成tolua++.exe史上完整版
- 打开游戏时提示计算机缺失文件,计算机提示缺少DLL文件
- mongoDB地理位置查询
- 双绞线视频传输技术分析
- IIC OLED笔记
- io复用相对于多进程、多线程的优势
- python输出word内容_使用python-docx生成Word文档
热门文章
- 用js制作一个新年倒计时
- 算法-详解堆排序算法
- U盘作为启动盘的重装系统教程
- java教师和学生类的继承代码_Java用继承和实现完成学生,教师和家长三个类
- amazon_如何将Amazon Echo或Echo Dot恢复出厂设置
- EXP-00091:Exporting questinable statistics.
- 用python连接xmapp数据库
- 连接mysql的url是什么_JDBC的URL是什么
- 明日之后多贝雪山服务器在安卓系统叫什么,明日之后多贝雪山地图 多贝雪山地图介绍...
- el-checkbox状态值修改而样式不修改的原因