使用Excel interlop c#.net查看单元格中的注释是否为null

时间:2017-09-21 13:39:47

标签: c# excel

嘿所有我正在使用下面的代码,以便找出我正在解析的Excel工作表中的单元格是否有注释。

int columnCount = ws.UsedRange.Columns.Count;
Dictionary<string,bool> storedValidaters = new Dictionary<string, bool>();

for (int c = 1; c < columnCount; c++)
{
   if (ws.Cells[2, c].Comment.Shape.AlternativeText != null)
   {
      string columnName = ws.Cells[2, c].Value2.ToString();
      string myComment = ws.Cells[2, c].Comment.Shape.AlternativeText.ToString().Replace("Text Box: ", "");

      storedValidaters.Add(columnName, true);
   } else {
      //the value is null so its false
      string columnName = ws.Cells[2, c].Value2.ToString();

      storedValidaters.Add(columnName, false);
   }
}

它会循环几次但是一旦它到达没有评论的单元格,它就会大便。

enter image description here

错误无法对空引用执行运行时绑定

我做了一些搜索,以确定是否有其他人有工作代码来检查 null ,但一直无法找到一个有效的例子。

任何人都知道这样做的方法吗?

1 个答案:

答案 0 :(得分:1)

我建议改变:

Comment.Shape.AlternativeText

为:

Comment?.Shape?.AlternativeText

null conditional operator将确保代码将继续按预期工作,无论Comment为空,或Shape为空还是AlternativeText为空