我是靠谱客的博主 俊逸未来,最近开发中收集的这篇文章主要介绍EasyExcel 单元格替换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

场景: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 单元格替换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部