[英]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.