我要求将数据写入我已经实现的excel文件。如果同一行的状态单元格为" Recived"。
另一个要求是在求和中包括单元格。仅对可见细胞进行求和。我有2列,如#34;状态"(列A2:A10)和"片" (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\")))");
答案 0 :(得分:2)
我试过一个示例代码。您需要将单元格类型设置为Numeric(或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!错误。