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

2cmtqfgy  于 2022-11-26  发布在  C#
关注(0)|答案(6)|浏览(234)

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

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)
不是公式怎么能得到结果(值)?

l0oc07j2

l0oc07j21#

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;
                }
            }
w8ntj3qf

w8ntj3qf2#

尝试用途:

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

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

ssgvzors

ssgvzors3#

使用“EvaluateAllFormulaCells(workbook)”方法在将其设置为excel文件后计算所有公式。见此链接How to re-calculate a cell's formula?

z5btuh9x

z5btuh9x4#

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

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

twh00eeo5#

您可以将单元格类型设置为字符串,它对我的工作,因为它获得计算值:

ICell cell = sheet.GetRow(i).GetCell(1);
cell.SetCellType(NPOI.SS.UserModel.CellType.String);
var value  = sheet.GetRow(i).Cells[1].StringCellValue.ToString();
0mkxixxg

0mkxixxg6#

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

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

相关问题