注解类

 @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 自适应(行宽, 行高)相关推荐

  1. excel表格行宽列高怎么设置_解决方案:Excel自动调整列宽和行宽什么是快捷键? [Excel设置行高度自适应]...

    如何在Excel工作表中设置自动调整行高? 选择要设置的单元格,然后单击"开始" ----"单元格" ----"格式" ----" ...

  2. excel表格行宽列高怎么设置_excel怎么调整列宽行高:excel中如何快速调整多行列高和行宽...

    怎样设置使EXCEL,单元格行高列高锁定,但可以改字的? 打开菜上的"工具"-"保护"-许用户编辑区域"窗口,"新建"选项,点中& ...

  3. excel表格行宽列高怎么设置_excel表格怎么设置行高列宽

    excel表格怎么设置行高列宽 你是怎么调整Excel表格的行高和列宽的? 如果还在用原始的手动调整方法,那你赶紧看看下面这几种解决方法,不仅效率高,而且调整的行高和列宽还很统一整齐哦,快和小编来学习 ...

  4. EasyExcel自适应列宽(官方文档的不好用,个人修改了下)

    直接粘贴了用就行,调了半天 package com.wpg.common.handler;import com.alibaba.excel.enums.CellDataTypeEnum; import ...

  5. EasyExcel自适应列宽、行高、自动换行

    一.自定义模版 二.工具类 import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Cel ...

  6. 设置Excel单元格行宽列高

    点击[左上角]选中所有单元格-->[开始]选项卡选择[格式]-->选择[行高]设置行高-->选择[列宽]设置列宽

  7. excel表格行宽列高怎么设置_excel的行高列宽怎么设置_excel的行高和列宽在哪设置...

    在使用excel时,行高和列宽一定程度上影响着整个表格的美观程度,下面为你分享了几个关于行高列宽的超实用的小技巧,感兴趣的小伙伴快来看看吧! 1.行高的单位像素怎么更改为厘米? 在设置表格时,要求设置 ...

  8. EasyExcel导入导出样式、自适应列宽、自适应行高

    一.先加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</a ...

  9. 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 通道数

最新文章

  1. 第一天   Linux基本操作
  2. linux进程及作业管理实验,Linux 进程及作业管理(示例代码)
  3. html中h3的样式,比较好看的css自定义样式(标题 h1 h2 h3)
  4. java并发编程与线程安全
  5. 如何做好一个开源项目(一)
  6. 【渝粤题库】陕西师范大学163201 旅游科学引论作业(专升本)
  7. 写在校招季,谈谈机器学习岗的Offer选择问题
  8. hp服务器 raid卡驱动安装系统,hp 服务器 linux raid驱动
  9. 企业级静态代码分析工具清单
  10. win10 cmd窗口切换目录并运行python代码
  11. 在Chrome、Firefox、IE、360等多种浏览器中实现二代证阅读功能
  12. EasyExcel初了解
  13. surface怎么将计算机放到桌面,笔者帮您win10系统把此电脑和控制面板在桌面上显示的妙计...
  14. Field II 超声声场仿真(3): 脉冲-回波响应(原理代码)
  15. R语言基础知识入门学习(一)
  16. C++中二维数组的动态创建于处理(zzl)
  17. servlet的创建及配置
  18. samba 服务器配置
  19. Verilog:【4】脉冲发生器(pulse_gen.sv)
  20. 栽培员工,让他强大到可以离开

热门文章

  1. 2008年北京奥运会赛程表—— 08-18
  2. 图片处理自带缓存的Picasso
  3. Material icons 全图标一览
  4. Linux 压缩、解压、打包详解
  5. linux下打包和解包、解压和压缩
  6. 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。
  7. Android FFmpeg源码编译及在Android studio的集成
  8. 甘肃民勤农妇戈壁滩建“花花世界” 叩开致富之门
  9. 考研英语——唐迟阅读方法技巧总结
  10. 用Universe Sandbox模拟引力弹弓(地球+木星)