[alibaba/easyexcel]写入Excel时,当needHead设置False,无法进入AbstractCellStyleStrategy下setContentCellStyle方法体

2024-05-23 874 views
3

触发场景描述 使用版本2.1.6,写入Excel时,当needHead设置False,head为null,此时无法进入AbstractCellStyleStrategy下setContentCellStyle方法体。使用历史版本2.0.5时无此情况

问题相关代码

    @Override
    public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
        List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
        if (isHead == null || head == null) {
            return;
        }
        if (isHead) {
            setHeadCellStyle(cell, head, relativeRowIndex);
        } else {
            setContentCellStyle(cell, head, relativeRowIndex);
        }
    }

提示的异常或者没有达到的效果 继承AbstractCellStyleStrategy后,由于head为null,无法进入setContentCellStyle方法

回答

9

可能写的不够清除,再补充一点。当使用自定义策略,继承AbstractCellStyleStrategy时,会调用setContentCellStyle进行写入excel的自定义操作,此时由于needHead设为False,head为null,所以继承AbstractCellStyleStrategy的策略在调用afterCellDispose方法时,都无法进入setContentCellStyle方法体。我认为这是不合理的,即使我不写入头,head为null,也不该影响我进行content的写入,而且此问题在2.0.5版本是未曾发生的。

9

建议自己实现 SheetWriteHandler 等拦截器

8

建议自己实现 SheetWriteHandler 等拦截器

使用过程中我已实现SheetWriteHandler,上述问题依然存在。并且2.0.5历史版本是没有上述问题的,从2.0.5版本升级到2.1.6版本之后,所有的导出(head=false)均出现错误,我认为在版本升级之后兼容历史版本是必须的。