在生成excel文件的时候,使用list填充表格内容,但是,出现了内容行高不一致的问题,出现的问题如下图所示
第一行是填充模板设置的行高(35),第二,第三行是自动生成的行高(35.1),没办法改变,第四行到下边的所有行行高都为(21),现在想让所有行都和第一行高度一致,怎么解决?求助!
首先,试验了工具注解@ContentRowHeight(value = 35),但是没有生效。
然后,百度搜索资料查到了如下内容设置策略,
// 内容的策略 WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定 contentWriteCellStyle.setWrapped(true); // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现 HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(null, contentWriteCellStyle); ExcelWriter excelWriter = EasyExcel.write(fileName).registerWriteHandler(horizontalCellStyleStrategy).withTemplate(templateFileName).build();
发现加上后,连文件都无法生成,报空指针异常。
最后,试验了百度搜到的自定义样式类,发现不适用。
通过设置写入的处理器可以指定行高,进行列表填充时,自动生成的行都是统一的高度:
处理器:
@Component
public class CostomCellWriteHeightHandler extends AbstractColumnWidthStyleStrategy {
@Override
protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
cell.getRow().setHeightInPoints(40f);
}
}
在获取ExcelWriter时使用:
ExcelWriter excelWriter = EasyExcelFactory.write(outputStream)
.withTemplate(classPathResource.getInputStream())
.excelType(ExcelTypeEnum.XLS)
.registerWriteHandler(costomCellWriteHeightHandler).build();
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
2种方式:
1.定义模板,拷贝的每一行根据模板style生成
2.设置CellStyle.