微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有SUMPRODUCT和XSSFFormulaEvaluator的Apache POI autoSizeColumn不起作用

如何解决带有SUMPRODUCT和XSSFFormulaEvaluator的Apache POI autoSizeColumn不起作用

我在Java 8上使用Apache POI 4.1.1。我创建了XSSFWorkbook,其中具有带有SUMPRODUCT的单元格公式,并且其中具有单元格范围。在保存文件之前,我要做的是: XSSFFormulaEvaluator.evaluateallFormulaCells(wb);sheet.autoSizeColumn(3,true);,但第3列的宽​​度不正确。 这是示例代码

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;

import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MyClass {
    public static void main(String args[]) throws FileNotFoundException,IOException {
        XSSFWorkbook wb = new XSSFWorkbook();
        Sheet sheet = wb.createSheet();
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue(800);
        row.createCell(1).setCellValue("a");
        row = sheet.createRow(1);
        row.createCell(0).setCellValue(900);
        row.createCell(1).setCellValue("a");
        row = sheet.createRow(2);
        row.createCell(0).setCellValue(1000);
        row.createCell(1).setCellValue("b");
        
        row = sheet.createRow(3);
        row.createCell(3).setCellValue("a");
        row = sheet.createRow(4);
        row.createCell(3).setCellFormula("SUMPRODUCT(A1:A3,--(B1:B3=\"a\"))");
    
        XSSFFormulaEvaluator.evaluateallFormulaCells(wb);
        sheet.autoSizeColumn(3,true);
    
        FileOutputStream out = new FileOutputStream("/myfiles/example.xlsx");
        wb.write(out);
        wb.close();
        out.close();
    }
}

这是JDoodle中的相同代码jdoodle.com/a/2xHM

如果将行row.createCell(3).setCellFormula("SUMPRODUCT(A1:A3,--(B1:B3=\"a\"))");更改为row.createCell(3).setCellFormula("SUMPRODUCT(A1:A1,--(B1:B1=\"a\"))");,则宽度正确。

我想念什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。