ユーティリティ

[C#] NPOIで関数や参照が設定されているセルの値を取得する

2021年8月30日

セルに関数や他セル値の参照が設定されている時、
関数の結果や参照先の値をを取得するサンプルです。

サンプル

例)A1セルに設定されている参照先の値を取得する

A1に他セルへの参照が設定されているExcel「C:¥Sample.xlsx」を例にします。

using NPOI.SS.UserModel;

try
{
  //Excelファイルを読込み
  var book = WorkbookFactory.Create(@"C:¥Sample.xlsx");

  //"Sheet1"シートのA1セルを取得する
  var sheet = book.GetSheet("Sheet1");
  var row = sheet.GetRow(0);
  var cell = row.GetCell(0);

  string strVal = null;

  //参照先の値を取得する
  switch(cell.CachedFormulaResultType)
  {
    case CellType.String:
      //参照先の値の型が文字型の場合
      strVal = cell.StringCellValue;
      break;
    case CellType.Numeric:
      //参照先の値の型が数値型の場合
      strVal = cell.NumericCellValue.ToString();
      break;
    default:
      break;
  }

  //コンソールに出力する
  Console.WriteLine(strVal);

}
catch (Exception ex)
{
    Console.Write(ex.StackTrace);
}

A1セルが関数や参照が設定されている前提のソースです。

備考

  • NPOIで参照や関数が設定されているセルの参照先の型を取得するには、.CachedFormulaResultTypeで取得できます。
  • このプロパティで取得した型からStringCellValueやNumericCellValueで値を取得すれば関数の戻り値や参照先の値を取得することができます。

関連記事

-ユーティリティ
-