我在循环中设置了一些公式,如下所示:
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)
如何得到结果(值)不是公式?
答案 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