1、效果如图

2、Controller

@GetMapping("/exportExcel")public void exportExcel(@RequestParam(value = "menu") String menu,

@RequestParam(value= "dwflglId") intdwflglId,

@RequestParam(value= "qjCode") String qjCode,

HttpServletResponse response)throwsIOException {//内容集合

List jthz =getJthz(dwflglId, qjCode);//表头集合

List header =getHeaderOfHz(dwflglId, qjCode);

response.setHeader("Content-Disposition", "attachment; filename=Zjlryshz.xlsx");//响应类型,编码

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

String bigTitle= "资金流入预算表";

EasyExcel.write(response.getOutputStream()).head(getExcelHeader(header, bigTitle)).registerWriteHandler(new Custemhandler()).sheet("资金流入预算导出模板").doWrite(getExportData(jthz));

}

通过getExcelHeader(header, bigTitle)得到表头集合

private List> getExcelHeader(Listheader, String bigTitle) {

List> head = new ArrayList<>();

List head0 = new ArrayList<>();

head0.add(bigTitle);

head0.add("资金项目");

head.add(head0);

head0= new ArrayList<>();

head0.add(bigTitle);

head0.add("行次");

head.add(head0);for(var h : header) {

head0= new ArrayList<>();

head0.add(bigTitle);

head0.add(h.getName());

head.add(head0);

}returnhead;

}

通过调用registerWriteHandler来设置表格样式,我这里设置只是设置表头的自适应宽度,创建一个类来继承AbstractColumnWidthStyleStrategy抽象类

packagecn.xxxx.xxxx.xxx.utils;importcom.alibaba.excel.metadata.CellData;importcom.alibaba.excel.metadata.Head;importcom.alibaba.excel.write.metadata.holder.WriteSheetHolder;importcom.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;importorg.apache.poi.ss.usermodel.Cell;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.util.List;public class Custemhandler extendsAbstractColumnWidthStyleStrategy {private static final int MAX_COLUMN_WIDTH = 255;//the maximum column width in Excel is 255 characters

publicCustemhandler() {

}

@Overrideprotected void setColumnWidth(WriteSheetHolder writeSheetHolder, ListcellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {if (isHead && cell.getRowIndex() != 0) {int columnWidth =cell.getStringCellValue().getBytes().length;if (columnWidth >MAX_COLUMN_WIDTH) {

columnWidth=MAX_COLUMN_WIDTH;

}else{

columnWidth= columnWidth + 3;

}

writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth* 256);

}

}private final static Logger logger = LoggerFactory.getLogger(Custemhandler.class);

}

最后在doWrite()里面放要导出的数据即可

private List> getExportData(Listjthz) {

List> sumList = new ArrayList<>();for(var row : jthz) {

List list = new ArrayList<>();

list.add(row.getZjxm());

list.add(String.valueOf(row.getZbY()));for(var xm : row.getZjlrysXms()) {if (xm.getId() == null) {

list.add("");

}else{if (xm.getZjlrysb().getXsValue() == null || xm.getZjlrysb().getXsValue().compareTo(new BigDecimal("0")) == 0) {

list.add("");

}else{

list.add(xm.getZjlrysb().getXsValue().toString());

}

}

}

sumList.add(list);

}returnsumList;

}

无论表头还是内容,传给easyexcel的都是List>这种形式的集合,可以说是二维的吧,外面的List相当于row,里面的List相当于col

参考链接:

easyexcel怎么设置表头宽度_EasyExcel的不确定表头(根据数据生成表头)的excel导出和二级表头以及设置表头的宽度自适应...相关推荐

  1. excel导出多重表头utils_Java中注解学习系列教程-4 使用自定义注解实现excel导出...

    本文是<Java中注解学习系列教程>第四篇文章也是小案例文章. 自定义注解小案例是:使用自定义注解实现excel导出. Excel导出分析: ​ 有表头.数据值.一般第一行是表头,从第二行 ...

  2. easyexcel 检查表头是否匹配_EasyExcel的不确定表头(根据数据生成表头)的excel导出和二级表头以及设置表头的宽度自适应...

    1.效果如图 2.Controller @GetMapping("/exportExcel")public void exportExcel(@RequestParam(value ...

  3. 动态表头excel导出(java)

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

  4. POI 导出横版A4word,并设置excel宽度(固定不变形)

    1.maven依赖 <!-- 导出EXCEL --><dependency><groupId>org.apache.poi</groupId><a ...

  5. 阿里EasyExcel对Excel复杂模版填充实现并设置单元格格式

    easyExcel模版示例地址: 接下来代码展示 1.添加easyExcel依赖 <dependency><groupId>com.alibaba</groupId> ...

  6. 打印设置自定义表尾_打印excel工作表时,如何把表头和表尾一起打印到每一页上?-excle怎样设置表尾打印...

    打印excel表格,怎么设置使每页都有表头和表尾 一.表头设置 1.点击excle工具栏的"页面布局"选项,选择"打印"按钮,进行页面设置: 2.点击" ...

  7. Excel@C#.Net之单元格设置相关

    为什么80%的码农都做不了架构师?>>>    range.NumberFormatLocal = "@";     //设置单元格格式为文本 range = ( ...

  8. easyExcel实现Excel导出功能

    一.简介 作者对easyExcel的描述:Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程 ...

  9. excel表格打印每页都有表头_一些关于Excel表格打印的技巧,工作中常用的都整理在这了...

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 怎么让表格打印在一页纸上?怎么只打印选中的数据?如何让每页纸上都打印标题? 这些问题小伙伴们Excel中都碰到过吧?你是如 ...

  10. 使用easy excel导出复杂表头的excel

    使用easy-excel导出复杂表头的excel 今天想写一个双层表头的excel导出,一开始使用的是poi来画发现太麻烦, 于是就想到了使用easy-excel的模板填充来实现,将导出写成了一个简单 ...

最新文章

  1. JMS规范、ActiveMQ Broker和ActiveMQ传输协议
  2. 1400协议是什么和28181区别_舞阳钢铁生产30CrMnSiA国军标、国标、舞钢技术协议有什么区别...
  3. 无软件linux,无需安装即可运行或演示Linux的方法 (1)
  4. ie浏览器修复_腾讯安全:IE浏览器曝远程执行代码漏洞 腾讯安全强势推出漏洞修复工具...
  5. TopFreeTheme精选免费模板【20130701.特别版】
  6. python加速循环嵌套的方法_如何加速python嵌套循环?
  7. 树的知识点总结-数据结构
  8. Java 日期与时间
  9. mysql 代码结构_MySQL代码执行结构
  10. eclipse 打包 apk 文件
  11. c语言单循环赛制,循环赛日程安排问题(分治法)
  12. kx linux驱动下载,创新5.1声卡驱动kX Project Audio DriverV5.1免费版下载 - 下载吧
  13. 提升办公效率——工具篇
  14. 计算机cmp代表什么意思,CMP是什么
  15. 什么是jQuery,jQuery选择器
  16. 推翻微信的,会长什么样
  17. MP4文件格式详解——文件类型ftyp
  18. 美颜SDK如何进行Android和iOS双端开发?
  19. Python爬虫进阶必备 | 关于某查猫查询参数的加密逻辑分析
  20. android之基于Zxing二维码扫描

热门文章

  1. C++ 打印机状态查询之SNMP协议
  2. “大数据杀熟”背后的算法在为谁服务?
  3. postgresql注入笔记
  4. 图片云存储(腾讯云 七牛云)
  5. MongoDB从入门到高级的实战操作
  6. Markdown中数学相关
  7. java pdf 转图片
  8. Java+Servlet+Jsp(el, jstl)+MyBatis的CRUD练习小项目
  9. Typora任意更改样式
  10. 【见闻录系列】浅谈搜索系统与推荐系统的一点区别