easyexcel 自适应(行宽, 行高)
注解类
@ColumnWidth(value = 20) 宽度 value:宽度大小 @ContentRowHeight(int):设置 row 高度,不包含表头标记在 类上@HeadRowHeight(int):设置表头高度(与 @ContentRowHeight 相反)标记在类上@ColumnWidth(int):设置列宽标记在属性上
代码类
- 自适应宽度
public class CustomCellWriteWeightConfig extends AbstractColumnWidthStyleStrategy {private Map<Integer, Map<Integer, Integer>> CACHE = new HashMap<>();@Overrideprotected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer integer, Boolean isHead) {boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);if (needSetWidth) {Map<Integer, Integer> maxColumnWidthMap = CACHE.get(writeSheetHolder.getSheetNo());if (maxColumnWidthMap == null) {maxColumnWidthMap = new HashMap<>();CACHE.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);}Integer columnWidth = this.dataLength(cellDataList, cell, isHead);if (columnWidth >= 0) {if (columnWidth > 254) {columnWidth = 254;}Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());if (maxColumnWidth == null || columnWidth > maxColumnWidth) {maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);Sheet sheet = writeSheetHolder.getSheet();sheet.setColumnWidth(cell.getColumnIndex(), columnWidth * 256);}}}}/*** 计算长度* @param cellDataList* @param cell* @param isHead* @return*/private Integer dataLength(List<CellData> cellDataList, Cell cell, Boolean isHead) {if (isHead) {return cell.getStringCellValue().getBytes().length;} else {CellData cellData = cellDataList.get(0);CellDataTypeEnum type = cellData.getType();if (type == null) {return -1;} else {switch (type) {case STRING:// 换行符(数据需要提前解析好)int index = cellData.getStringValue().indexOf("\n");return index != -1 ?cellData.getStringValue().substring(0, index).getBytes().length + 1 : cellData.getStringValue().getBytes().length + 1;case BOOLEAN:return cellData.getBooleanValue().toString().getBytes().length;case NUMBER:return cellData.getNumberValue().toString().getBytes().length;default:return -1;}}}}
}
- 自适应行高
public class CustomCellWriteHeightConfig extends AbstractRowHeightStyleStrategy {/*** 默认高度*/private static final Integer DEFAULT_HEIGHT = 300;@Overrideprotected void setHeadColumnHeight(Row row, int relativeRowIndex) {}@Overrideprotected void setContentColumnHeight(Row row, int relativeRowIndex) {Iterator<Cell> cellIterator = row.cellIterator();if (!cellIterator.hasNext()) {return;}// 默认为 1行高度Integer maxHeight = 1;while (cellIterator.hasNext()) {Cell cell = cellIterator.next();switch (cell.getCellTypeEnum()) {case STRING:if (cell.getStringCellValue().indexOf("\n") != -1) {int length = cell.getStringCellValue().split("\n").length;maxHeight = Math.max(maxHeight, length);}break;default:break;}}row.setHeight((short) (maxHeight * DEFAULT_HEIGHT));}
}
- 注册器处理
EasyExcel.registerWriteHandler(new CustomCellWriteWeightConfig()).registerWriteHandler(new CustomCellWriteHeightConfig());
easyexcel 自适应(行宽, 行高)相关推荐
- excel表格行宽列高怎么设置_解决方案:Excel自动调整列宽和行宽什么是快捷键? [Excel设置行高度自适应]...
如何在Excel工作表中设置自动调整行高? 选择要设置的单元格,然后单击"开始" ----"单元格" ----"格式" ----" ...
- excel表格行宽列高怎么设置_excel怎么调整列宽行高:excel中如何快速调整多行列高和行宽...
怎样设置使EXCEL,单元格行高列高锁定,但可以改字的? 打开菜上的"工具"-"保护"-许用户编辑区域"窗口,"新建"选项,点中& ...
- excel表格行宽列高怎么设置_excel表格怎么设置行高列宽
excel表格怎么设置行高列宽 你是怎么调整Excel表格的行高和列宽的? 如果还在用原始的手动调整方法,那你赶紧看看下面这几种解决方法,不仅效率高,而且调整的行高和列宽还很统一整齐哦,快和小编来学习 ...
- EasyExcel自适应列宽(官方文档的不好用,个人修改了下)
直接粘贴了用就行,调了半天 package com.wpg.common.handler;import com.alibaba.excel.enums.CellDataTypeEnum; import ...
- EasyExcel自适应列宽、行高、自动换行
一.自定义模版 二.工具类 import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Cel ...
- 设置Excel单元格行宽列高
点击[左上角]选中所有单元格-->[开始]选项卡选择[格式]-->选择[行高]设置行高-->选择[列宽]设置列宽
- excel表格行宽列高怎么设置_excel的行高列宽怎么设置_excel的行高和列宽在哪设置...
在使用excel时,行高和列宽一定程度上影响着整个表格的美观程度,下面为你分享了几个关于行高列宽的超实用的小技巧,感兴趣的小伙伴快来看看吧! 1.行高的单位像素怎么更改为厘米? 在设置表格时,要求设置 ...
- EasyExcel导入导出样式、自适应列宽、自适应行高
一.先加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</a ...
- python数字图像的行 宽的不同处 cv2.resize(1389,1500) p1列宽 p2 行高 stop2.shape 得(640,960,3) v1列宽 v2 行高 v3 通道数
python数字图像的行 宽的不同处 cv2.resize(1389,1500) p1列宽 p2 行高 stop2.shape 得(640,960,3) v1列宽 v2 行高 v3 通道数
最新文章
- 第一天 Linux基本操作
- linux进程及作业管理实验,Linux 进程及作业管理(示例代码)
- html中h3的样式,比较好看的css自定义样式(标题 h1 h2 h3)
- java并发编程与线程安全
- 如何做好一个开源项目(一)
- 【渝粤题库】陕西师范大学163201 旅游科学引论作业(专升本)
- 写在校招季,谈谈机器学习岗的Offer选择问题
- hp服务器 raid卡驱动安装系统,hp 服务器 linux raid驱动
- 企业级静态代码分析工具清单
- win10 cmd窗口切换目录并运行python代码
- 在Chrome、Firefox、IE、360等多种浏览器中实现二代证阅读功能
- EasyExcel初了解
- surface怎么将计算机放到桌面,笔者帮您win10系统把此电脑和控制面板在桌面上显示的妙计...
- Field II 超声声场仿真(3): 脉冲-回波响应(原理代码)
- R语言基础知识入门学习(一)
- C++中二维数组的动态创建于处理(zzl)
- servlet的创建及配置
- samba 服务器配置
- Verilog:【4】脉冲发生器(pulse_gen.sv)
- 栽培员工,让他强大到可以离开
热门文章
- 2008年北京奥运会赛程表—— 08-18
- 图片处理自带缓存的Picasso
- Material icons 全图标一览
- Linux 压缩、解压、打包详解
- linux下打包和解包、解压和压缩
- 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。
- Android FFmpeg源码编译及在Android studio的集成
- 甘肃民勤农妇戈壁滩建“花花世界” 叩开致富之门
- 考研英语——唐迟阅读方法技巧总结
- 用Universe Sandbox模拟引力弹弓(地球+木星)