动态表头excel导出

1. 导入依赖并设置实体

  1. 首先配置poi版本相关的maven属性

    <properties><poi.version>4.1.2</poi.version>
    </properties>
    
  2. 配置文件中使用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>
    
  3. 动态读取的表单实体类内容

    @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. 绑定动态数据

  1. 将动态生成的表头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. 设置写入的字节流对象的相关参数

  1. 控制文件流操作写入workBook工作簿。
  2. 规定输出字节流编码格式,设置内容属性
 //字节输出流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)相关推荐

  1. 动态表头excel导入(java)

    动态表头excel导入 1. 导入依赖并设置实体 首先配置poi版本相关的maven属性 <properties><poi.version>4.1.2</poi.vers ...

  2. EasyExcel解析动态表头及导出

    前言 excel文件导入及导出,是日常开发中经常遇到的需求.本次笔者以EasyExcel为例,针对在项目中遇到的动态表头解析及导出的场景,详细介绍具体的代码实现过程. 参考地址 https://git ...

  3. 根据children动态复杂表头excel导出_Java高级特性-注解:注解实现Excel导出功能

    注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套"注解驱动编程". 这听起来高大上,但毕竟是框架的事,我们也能用好注解吗? 的确,我们很少有机会自己写注 ...

  4. easyexcel 动态列_easyexcel动态表头列导出SequenceDiagram 阅读源码事半功倍

    EasyExcel简介 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢 ...

  5. excel导出java.lang.ArrayIndexOutOfBoundsException:-32768

    基于Excel导出竟然报越界错误: 报错行竟然是: 处理办法:

  6. java 复杂表头excel导出合并单元格

    easyexcel-wraper easyexcel-wraper是什么? 一个方便读取excel内容,且可以使用注解进行内容验证的包装工具 用到alibaba 2.1.4版本 定义导出excel复杂 ...

  7. PHP 基于XLSXWriter的多级表头Excel导出

    最近公司业务有一些需要导出多级表头的业务需求,百度之后,没有很好的应用demo,然后接触了XLSXWriter,就想着一劳永逸,写个工具类,示例只有三级,但是不止于三级 应用举例 比如说我们需要这样一 ...

  8. excel导出java.lang.ArrayIndexOutOfBoundsException: 0 POI导出excel报错数组下标越界0

    好久没写博客了,最近是有点懒了... 最近项目遇到个问题,用poi导出excel,本地和测试服务器都没问题,线上所有的导出都不能用,排查过JKD版本和配置文件都没问题,百思不得其解,最终问了朋友考虑到 ...

  9. excel导出java不完整_有关Java POI导出excel表格中,单元格合并之后显示不全的解决方法。...

    我在table变换excel之后发现合并的单元格不能显示全部边框,在网上找了半天解决方案,终于解决了.具体解决代码如下; /** * 设置合并单元格的边框样式 * * @param sheet 当前表 ...

最新文章

  1. python控制窗口缩放
  2. Quartz框架基于Calendar的排除规则
  3. 《MySQL——索引笔记》
  4. 拥抱云原生,Fluid结合JindoFS :阿里云OSS加速利器
  5. J2ME的移动支付系统的客户端的实现
  6. leetcode @python 124. Binary Tree Maximum Path Sum
  7. 如果使用Node.js不存在该如何创建目录?
  8. php在浏览器输入路径,关于在sublime text 3 中配置一键浏览器打开php文件,并且是在localhost 本地服务器路径下...
  9. 分布式文件系统HDFS 学习指南
  10. java 获取windows窗口句柄_得到Java程序的WIN32窗口句柄(转)
  11. 新浪微博系统 Xweibo v1.1.1beta 免费版Xweibo-Xweibo 软件系统简介(PHP+MYSQL)
  12. IntelliJ IDEA配置Groovy教程
  13. Spring Cloud Gateway⑤令牌桶算法
  14. 【toLua++】toLua++编译生成tolua++.exe史上完整版
  15. 打开游戏时提示计算机缺失文件,计算机提示缺少DLL文件
  16. mongoDB地理位置查询
  17. 双绞线视频传输技术分析
  18. IIC OLED笔记
  19. io复用相对于多进程、多线程的优势
  20. python输出word内容_使用python-docx生成Word文档

热门文章

  1. 用js制作一个新年倒计时
  2. 算法-详解堆排序算法
  3. U盘作为启动盘的重装系统教程
  4. java教师和学生类的继承代码_Java用继承和实现完成学生,教师和家长三个类
  5. amazon_如何将Amazon Echo或Echo Dot恢复出厂设置
  6. EXP-00091:Exporting questinable statistics.
  7. 用python连接xmapp数据库
  8. 连接mysql的url是什么_JDBC的URL是什么
  9. 明日之后多贝雪山服务器在安卓系统叫什么,明日之后多贝雪山地图 多贝雪山地图介绍...
  10. el-checkbox状态值修改而样式不修改的原因