alibaba easyexcel 自适应(行宽, 行高)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了alibaba easyexcel 自适应(行宽, 行高)相关的知识,希望对你有一定的参考价值。
参考技术Aalibaba easyexcel 自适应,自适应表格的行宽与行高
注意:自适应行高中的数据必须有换行符(\\n),并且导出的excel数据中必须聚焦行数据才会有换行效果(目前并不知道如何解决 - -)
easyexcel自适应列宽
在导出时注册registerWriteHandler(new CustomCellWriteHandler())
/**
* @author jamin
* @date 2020/7/29 11:28
* 设置自适应列宽
*/
public class CustomCellWriteHandler extends AbstractColumnWidthStyleStrategy {
private Map<Integer, Map<Integer, Integer>> CACHE = new HashMap<>();
@Override
protected 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 > 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<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:
return cellData.getStringValue().getBytes().length;
case BOOLEAN:
return cellData.getBooleanValue().toString().getBytes().length;
case NUMBER:
return cellData.getNumberValue().toString().getBytes().length;
default:
return -1;
}
}
}
}
}
!--more-->以上是关于alibaba easyexcel 自适应(行宽, 行高)的主要内容,如果未能解决你的问题,请参考以下文章
EasyExcel的不确定表头(根据数据生成表头)的excel导出和二级表头以及设置表头的宽度自适应
Alibaba工具型技术系列「EasyExcel技术专题」实战项目中常用的Excel操作指南
#私藏项目实操分享#?Alibaba中间件技术系列「EasyExcel实战案例」实战研究一下EasyExcel如何从指定文件位置进行读取数据