我在我的项目中使用apache-poi api(v3.9)来处理excel模板。我确实更新了我的Excel文档中所有必需的单元格值。我正在使用一些复杂的公式来计算某些单元格的double值。 我正在阅读具有一些复杂公式的细胞的细胞值的问题。这个复杂的公式在excel表中运行良好,但是当我用poi读它时返回零。
我正在使用的复杂公式:
"=SUMPRODUCT(--('A-La-Carte'!$L$12:$L$100000=E129)*IF('A-La-Carte'!$K$12:$K$100000<>"-",'A-La-Carte'!$K$12:$K$100000,0)*IF(ISNUMBER(INT(LEFT('A-La-Carte'!$D$12:$D$100000,2))),12/INT(LEFT('A-La-Carte'!$D$12:$D$100000,2)),0))+(NOW()*0)"
如果我用一些简单的公式改变上面的公式,它可以正常工作。
以下是我用来读取单元格值的示例代码:
XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
private String getCellValue(String cellRef,
XSSFWorkbook workbook,String sheetName) {
XSSFSheet xssfSheet = workbook.getSheet(sheetName);
CellReference cellReference = new CellReference(cellRef);
XSSFRow r = xssfSheet.getRow(cellReference.getRow());
if (r != null) {
XSSFCell c = r.getCell(cellReference.getCol());
if(c.getCellType()==XSSFCell.CELL_TYPE_NUMERIC)
return c.getNumericCellValue()+"";
else if((c.getCellType()==XSSFCell.CELL_TYPE_FORMULA)){
return c. getNumericCellValue()+"";
}
return c.getStringCellValue();
}
return null;
}
有人能告诉我配方或API有什么问题吗?