我在我的项目中使用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有什么问题?