簡體   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