gpt4 book ai didi

java - 在Java中使用Apache-poi库编写Excel公式时出错

转载 作者:行者123 更新时间:2023-12-02 04:46:54 25 4
gpt4 key购买 nike

我有一个将数据写入Excel文件的要求,我已经实现了。另一个要求是,如果同一行的状态单元格为“已接收”,则在求和中包含 block 单元格。

并且应该仅对可见单元格进行求和。我有 2 列,如“Status”(Column A2:A10)和“piece”(B2:B10),现在我已使用 apache-poi 库将公式放入我的 java 类中:

SUMPRODUCT(SUBTOTAL(9,OFFSET(B2:B10,ROW(B2:B10)-(ROW(B2)),0,1)),(--(A2:A10="Recived")))

执行 Java 代码后,它成功写入文件,但当我打开文件时,它会将公式单元格显示为 #VALUE!。当我转到公式栏并按 Enter 键时,就会出现公式的值。

我希望每次打开 Excel 文件时都显示公式的值。

下面是Java代码

cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUMPRODUCT(SUBTOTAL(9,OFFSET(B2:B10,ROW(B2:B10)-(ROW(B2)),0,1)),(--(A2:A10=\"Recived\")))");

最佳答案

我尝试过示例代码。您需要将单元格类型设置为数字(或 Excel 公式将返回的任何数据类型)。

参见下面的示例:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();     
Row row = sheet.getRow(0);
Cell cell2 = row.createCell(2);
//set cell formula
cell2.setCellFormula("SUM(A1:B1)+10");
//evaluate the formula
evaluator.evaluateFormulaCell(cell2);
//set the cell type to numeric
cell2.setCellType(Cell.CELL_TYPE_NUMERIC);
System.out.println(cell2.getNumericCellValue());

//write data to excel file
FileOutputStream out = new FileOutputStream(new File("res/Book1.xlsx"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");

我已经尝试过这个示例,但它没有给我#VALUE!错误。

关于java - 在Java中使用Apache-poi库编写Excel公式时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com