alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具

Home Page:https://easyexcel.opensource.alibaba.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

3.3.4版本使用fill填充时,填充空数据会导致其他单元格计算公式失效

wolf9236 opened this issue · comments

建议先去看文档

快速开始常见问题

触发场景描述

19249391-EB05-41F1-88B6-64939CFC7E80

触发Bug的代码

   
private void compositeFill(File file, File template) {
        try (ExcelWriter excelWriter = EasyExcel.write(file).withTemplate(template).build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet().build();

            FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
            excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet);
            excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet);
            excelWriter.fill(new FillWrapper("data2", data()), writeSheet);
            excelWriter.fill(new FillWrapper("data2", data()), writeSheet);
            excelWriter.fill(new FillWrapper("data3", data()), writeSheet);
            excelWriter.fill(new FillWrapper("data3", data()), writeSheet);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("date", "2019年10月9日13:28:28");
            excelWriter.fill(map, writeSheet);
            //  调整公式计算内容
            excelWriter.writeContext().writeWorkbookHolder().getWorkbook().setForceFormulaRecalculation(true);
        }
}

 private List<FillData> data() {
        List<FillData> list = new ArrayList<FillData>();
        for (int i = 0; i < 3; i++) {
            FillData fillData = new FillData();
            list.add(fillData);
            fillData.setName("张三");
            fillData.setNumber(null);
            if (i == 2) {
                fillData.setName(null);
            }
        }
        return list;
    }

提示的异常或者没有达到的效果

以下为实际导出的结果,计算结果为 #VALUE!
1E8B7F87-B1B7-4DE4-B367-AC2EF2EC66EE

以下为期待的结果,对导出的文件对应计算单元格 按退回键 之后,计算结果显示为0
8A7427B0-AF38-4D3C-A91F-6F24E5FB2E69

大家尽量把问题一次性描述清楚,然后贴上全部异常,这样方便把问题一次性解决掉。
至少大家要符合一个原则就是,能让其他人复现出这个问题,如果无法复现,肯定无法解决。