繁体   English   中英

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

[英]c# npoi excel How to get a cell's formula VALUE?

我在循环中的一些单元格上设置了一个公式,如下所示:

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)

如何获得结果(值),而不是公式本身?

尝试使用:

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

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

使用“EvaluateAllFormulaCells(workbook)”方法在将其设置为excel文件后评估所有公式。 请参阅此链接如何重新计算单元格的公式?

您可以将单元格类型设置为字符串,它在获取计算值时对我有用:

ICell cell = sheet.GetRow(i).GetCell(1);
cell.SetCellType(NPOI.SS.UserModel.CellType.String);
var value  = sheet.GetRow(i).Cells[1].StringCellValue.ToString();
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;
                }
            }

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

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

使用StringCellValue从您的公式将无法读取的单元格中获取值

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM