复杂的细胞配方评估使用apache-poi

时间:2015-09-04 14:09:41

标签: excel excel-formula apache-poi

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

0 个答案:

没有答案