如何解决带有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 举报,一经查实,本站将立刻删除。