概述
目录
场景:Java写excel需要将查不到的数据字段用“-”代替
问题:字段为int类型,但是该字段需要接收“-”
思路1:修改字段类型为String,组装list时赋值为“-”(❌)
思路2:字段类型必须得是int类型,先写入,使用CellWriteHandler#afterCellDispos去替换
1)在单元格内设置公式:=IF(ISBLANK(D2),"-",D2)(❌)
2)查询不到的赋值为-1,获取单元格内容小于0则赋值为“-”(✔)
场景:Java写excel需要将查不到的数据字段用“-”代替
实体类信息
public class XXX{
。。。
@ExcelProperty("预留量")
private int reservedStock;
。。。
}
easyexcel将实体类list写入excel实现
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
EasyExcelFactory.write(byteArrayOutputStream, HeadquartersAllocationExcelData.class).useDefaultStyle(false)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.registerWriteHandler(new NonPhoneHeadquartersAllotCellWriteHandler())
.sheet().doWrite(list);
问题:字段为int类型,但是该字段需要接收“-”
由于Java是强类型语言,只能是改为String类型。
思路1:修改字段类型为String,组装list时赋值为“-”(❌)
写入excel结果如下
可以看到,出现了很多小绿标。原因是本身数字的形式,但是是以字符串类型写入的,所以excel后台错误检查出的提醒。
影响可读性,不可行。
思路2:字段类型必须得是int类型,先写入,使用CellWriteHandler#afterCellDispos去替换
1)在单元格内设置公式:=IF(ISBLANK(D2),"-",D2)(❌)
查询不到的不写入,空单元格,设置公式
问题:excel不能在公式中引用自己,会出现循环引用,不可行。
2)查询不到的赋值为-1,获取单元格内容小于0则赋值为“-”(✔)
实现如下
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
if (cell.getRowIndex() == 0) {
return;
}
int currRowIndex = cell.getRowIndex() + 1;
//将查不到的值替换为"-"展示
if (REPLACE_COLUMN.contains(cell.getColumnIndex()) && cell.getNumericCellValue() < 0) {
cell.setCellValue("-");
}
}
最终结果
easyexcel了解以及其他使用场景
excel写为字节流使用base64加解密_zhangm2020的博客-CSDN博客
EasyExcel文件流使用_zhangm2020的博客-CSDN博客_easyexcel 开始行
最后
以上就是俊逸未来为你收集整理的EasyExcel 单元格替换的全部内容,希望文章能够帮你解决EasyExcel 单元格替换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复