c#npoi excel如何获得单元格的公式值?

时间:2017-03-23 09:19:15

标签: c# excel npoi

我在循环中设置了一些公式,如下所示:

System.String fm = "IF(B2,J2=J1,FALSE)"
another.GetRow(0).CreateCell(28).SetCellFormula(fm); 

我总是想知道如何得到这个公式的结果(值),而不是复制整个公式。

MessageBox.Show(another.GetRow(0).GetCell(28).ToString);

它显示值IF(B2,J2 = J1,FALSE)

如何得到结果(值)不是公式?

5 个答案:

答案 0 :(得分:3)

尝试使用:

another.GetRow(0).GetCell(28).NumericCellValue;

您可以根据列类型使用多个不同的属性。

答案 1 :(得分:2)

使用“EvaluateAllFormulaCells(workbook)”方法将所有公式设置为excel文件后进行评估。请参阅此链接How to re-calculate a cell's formula?

答案 2 :(得分:0)

试试这个 https://poi.apache.org/spreadsheet/eval.html

例如

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
CellValue cellValue = evaluator.evaluate(cell);

答案 3 :(得分:0)

HSSFFormulaEvaluator formula = new HSSFFormulaEvaluator(workBook);

然后您可以使用

将此公式用于excel文件中的所有单元格
formula.EvaluateAll();

或者您可以将其用于像这样的特定单元格

var cell = sheet.GetRow(row).GetCell(column);
            string Res = "";
if (cell != null)
            {
                formula.EvaluateInCell(cell);

                switch (cell.CellType)
                {
                    case NPOI.SS.UserModel.CellType.Numeric:
                        Res = sheet.GetRow(row).GetCell(column).NumericCellValue.ToString();
                        break;
                    case NPOI.SS.UserModel.CellType.String:
                        Res = sheet.GetRow(row).GetCell(column).StringCellValue;
                        break;
                }
            }

答案 4 :(得分:0)

使用 StringCellValue 从您的公式不会读取的单元格中获取值

MessageBox.Show(another.GetRow(0).GetCell(28).StringCellValue