easyexcel怎么设置表头宽度_EasyExcel的不确定表头(根据数据生成表头)的excel导出和二级表头以及设置表头的宽度自适应...
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导出和二级表头以及设置表头的宽度自适应...相关推荐
- excel导出多重表头utils_Java中注解学习系列教程-4 使用自定义注解实现excel导出...
本文是<Java中注解学习系列教程>第四篇文章也是小案例文章. 自定义注解小案例是:使用自定义注解实现excel导出. Excel导出分析: 有表头.数据值.一般第一行是表头,从第二行 ...
- easyexcel 检查表头是否匹配_EasyExcel的不确定表头(根据数据生成表头)的excel导出和二级表头以及设置表头的宽度自适应...
1.效果如图 2.Controller @GetMapping("/exportExcel")public void exportExcel(@RequestParam(value ...
- 动态表头excel导出(java)
动态表头excel导出 1. 导入依赖并设置实体 首先配置poi版本相关的maven属性 <properties><poi.version>4.1.2</poi.vers ...
- POI 导出横版A4word,并设置excel宽度(固定不变形)
1.maven依赖 <!-- 导出EXCEL --><dependency><groupId>org.apache.poi</groupId><a ...
- 阿里EasyExcel对Excel复杂模版填充实现并设置单元格格式
easyExcel模版示例地址: 接下来代码展示 1.添加easyExcel依赖 <dependency><groupId>com.alibaba</groupId> ...
- 打印设置自定义表尾_打印excel工作表时,如何把表头和表尾一起打印到每一页上?-excle怎样设置表尾打印...
打印excel表格,怎么设置使每页都有表头和表尾 一.表头设置 1.点击excle工具栏的"页面布局"选项,选择"打印"按钮,进行页面设置: 2.点击" ...
- Excel@C#.Net之单元格设置相关
为什么80%的码农都做不了架构师?>>> range.NumberFormatLocal = "@"; //设置单元格格式为文本 range = ( ...
- easyExcel实现Excel导出功能
一.简介 作者对easyExcel的描述:Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程 ...
- excel表格打印每页都有表头_一些关于Excel表格打印的技巧,工作中常用的都整理在这了...
[温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 怎么让表格打印在一页纸上?怎么只打印选中的数据?如何让每页纸上都打印标题? 这些问题小伙伴们Excel中都碰到过吧?你是如 ...
- 使用easy excel导出复杂表头的excel
使用easy-excel导出复杂表头的excel 今天想写一个双层表头的excel导出,一开始使用的是poi来画发现太麻烦, 于是就想到了使用easy-excel的模板填充来实现,将导出写成了一个简单 ...
最新文章
- 数据标注、模型调参debug...通通自动化!华为云AI开发集大成之作ModelArts 2.0发布...
- vim之好用插件-ctrlp.vim
- HDU - 4135 Co-prime(容斥原理)
- 不禁网页的浏览器_网页游戏兴衰史:「农场」没有菜,「渣渣辉」不贪玩
- junit rule_Tomcat上下文JUnit @Rule
- 【SLAM笔记】如何使用Eigen进行矩阵运算
- 怎样成为时间管理的高手
- C++PrimerPlus 第六章 分支语句和逻辑运算符 - 6.1 if语句
- .Net 文件名后缀的各种文件用处解释
- java咖啡是研磨的吗_研磨咖啡,这三个点一定要注意
- 科技人才开发效率的空间杜宾模型分析
- Inno Setup选择语言并写入配置文件、翻译提示信息
- [Java]观察者模式和中介者模式改造机场
- 技术人员需要了解的手机验证码登录风险
- win7怎么把计算机放到桌面6,win7系统70个小窍门一览表
- 正面管教之PHP_“PHP父母帮助父母解决问题”活动
- 回顾2016年存储市场发展 解析产品涨价为何如此逆天
- EXCEL 懒人,节约时间,摸鱼小技巧-1
- Android eclipse 程序调试
- 【机器学习】机器学习算法模式:区别监督学习、无监督学习、半监督学习、强化学习
热门文章
- 控制系统伯德图、带宽及动态响应的关联性
- shader函数整理
- 计算机一级单元格填充,电脑Excel表格怎么对不连续的单元格进行批量填充
- 同程容器云平台网络方案演进
- [linux shell]比较运算符小坑(unary operator excepted 期望的一元运算符错误)
- Computer Networking——network layer QA
- android开发中TabHost使用方法
- Efficient Low-rank Multimodal Fusion with Modality-Specific Factors 论文
- Latex + IEEEtran模板 + 样例 + 数学符号表
- 外网无法访问nginx服务器默认端口问题解决