在导出时注册registerWriteHandler(new CustomCellWriteHandler())

/**

* @author jamin

* @date 2020/7/29 11:28

* 设置自适应列宽

*/

public class CustomCellWriteHandler extends AbstractColumnWidthStyleStrategy {

private Map> CACHE = new HashMap<>();

@Override

protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List cellDataList, Cell cell, Head head, Integer integer, Boolean isHead) {

boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);

if (needSetWidth) {

Map 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 > 255) {

columnWidth = 255;

}

Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());

if (maxColumnWidth == null || columnWidth > maxColumnWidth) {

maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);

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

}

}

}

}

private Integer dataLength(List 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:

return cellData.getStringValue().getBytes().length;

case BOOLEAN:

return cellData.getBooleanValue().toString().getBytes().length;

case NUMBER:

return cellData.getNumberValue().toString().getBytes().length;

default:

return -1;

}

}

}

}

}

easyexcle 设置列宽_easyexcel自适应列宽相关推荐

  1. easyexcle 设置列宽_easyexcel自动列宽失效

    easyexcel版本2.1.4 问题现象: 使用自动列宽LongestMatchColumnWidthStyleStrategy时,除了第一次调用接口,列宽自动,后面几次调用列宽未设置 问题原因: ...

  2. elementui表格宽度适应内容_elementui表格中的列怎么实现自适应列宽

    elementui表格中的列怎么实现自适应列宽 发布时间:2020-12-28 14:58:04 来源:亿速云 阅读:53 作者:Leah 这期内容当中小编将会给大家带来有关elementui表格中的 ...

  3. 设置DBGridEH自适应列宽的最好方法

    设置DBGridEH自适应列宽的最好方法 一直在找最好的根据DBGridEH(或者DBGrid)的内容和标题栏设置自适应列宽的方法,一直没有太好的.今天从园地上发现了源码:地址如下,非常好用.与大家分 ...

  4. elementui表格宽度适应内容_解决elementui表格操作列自适应列宽代码示例

    本篇文章小编给大家分享一下解决elementui表格操作列自适应列宽代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 写死宽度时是这样的: 开始 ...

  5. android listview 自适应列宽_Android 开发技术周报 Issue#272

    新闻/News 谷歌Pixel 4a将采用UFS 2.1存储:可以体验全套GMS [图]Android端Play商城现全面开放深色主题 教程/Tutorial OkHttp Interceptor - ...

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

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

  7. java通过poi生成excel表格(自适应列宽、合并单元格后的边框添加)

    具体java通过POI读写Excel的基本使用方法可参考: POI读写Excel的基本使用 1.项目导入依赖: <!--xls--> <dependency><group ...

  8. easyExcel 导出文件时,设置单元格样式,自适应列宽

    目录 1.自适应列宽实现类 2.单元格样式实现类 3.导出的时候,特殊数据类型,需要设置转换类,不然注解导出方式会报错 注解使用方式 日期转换类 4.web导出excel(将excel数据写入到res ...

  9. hutool导出导出excel中文自适应列宽

    问题:在使用hutool工具类ExcelWriter导出excel表格时,设置了自适应列宽格式,只有数字和字母生效,中文自适应列宽不生效,列宽只有差不多一半. 解决方法(同样适用于LINUX): Ex ...

最新文章

  1. 网页调用本地播放器的代码支持ie,chroome, 火狐不支持
  2. Qt Creator调试C ++示例应用程序
  3. 蓝桥练习-算法训练 素因子去重
  4. 从mysql读取图片_如何从sql数据库内读取图片
  5. tomcat学习笔记——lifecycle(容器)启动都干了什么
  6. Windows11电脑锁屏快捷键是什么
  7. 他一口气写出了这7k字的红黑树总结!看过的都说好!!|文末送书
  8. pandas 检查某个元素是否在index中
  9. 医用计算机基础学习心得,计算机基础学习心得.doc
  10. Perl内置特殊变量
  11. java+登录window域认证网页_Java 如何用 token 做用户登录认证
  12. 什么叫ServletContext对象?
  13. 基于GDAL实现的PCA变换(主成分分析)
  14. GJB150.18A-2009机械冲击试验测试要求
  15. IBM X系列服务器通过sysmgmt接口查看日志
  16. EXCEL 如何删除重复值,并保留重复值的第一个选项
  17. 加推科技领读:2019,深圳开荒牛的TO B拓荒路
  18. 社保及公积金转外省流程
  19. 奔跑吧linux内核知乎,802.11ah(HaLow)协议解析7:NDP控制帧(NDP CMAC Frame)
  20. 未来医疗大数据想象空间大

热门文章

  1. 悟管理-执行力的四个维度
  2. tensorflow模型转为tflite
  3. LeetCode Algorithm 2326. 螺旋矩阵 IV
  4. 免费简单易用的视频剪切编辑工具—Avidemux
  5. msvcp140.dll是什么东西?msvcp140.dll缺失了怎么办?
  6. c++ enum使用
  7. 如何去实践一个完整的数据挖掘项目?
  8. html5使用canvas实现小球碰撞反弹实例
  9. android 蓝牙搜索代码,关于蓝牙设备搜索和Ble设备的搜索的简单调用方法
  10. 【java】Java生成微信小程序二维码