【问题标题】:Cannot convert null to 'bool' because it is a non-nullable value type无法将 null 转换为“bool”,因为它是不可为空的值类型
【发布时间】:2014-07-18 13:08:51
【问题描述】:

我正在创建一个 for 循环来检查 Excel 表的单元格是否为空,我收到的错误消息是

未知模块中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的未处理异常。 附加信息:无法将 null 转换为 'bool',因为它是不可为空的值类型。

我尝试按照另一个线程中的建议转换为字符串,但我不走运。

我正在使用 Microsoft Excel 12.0 对象库。

这是我的代码:

for (int i = 1; i < 55555; i++)
{
     if (xlWorkSheet.Cells[i, 1] = null)
     {
          //////Write data into the cell 
     }
     else
     {
          //// i++;
     }
}

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    应该是xlWorkSheet.Cells[i, 1] == null 单个= 将值分配给单元格。

    【讨论】:

    • 我之前试过这个并得到了这个错误:mscorlib.dll 中发生了“System.Runtime.InteropServices.COMException”类型的未处理异常附加信息:来自 HRESULT 的异常:0x800A01A8
    • 我的程序结构可能有误。将其更改为“==”也会导致我出错但不一样,我希望它有所不同我会调查一下谢谢您的帮助。
    • 你好,应该是不同的问题
    • 是的,我现在明白了。它实际上与循环内的 close 语句一起使用。当我签入任务管理器并尝试使用新数据对其进行更新时,工作表已打开。
    【解决方案2】:
    if (xlWorkSheet.Cells[i, 1] = null)
    {
         //////Write data into the cell 
    }
    else
    {
         //// i++;
    }
    

    不是

    xlWorkSheet.Cells[i, 1] = null
    

    应该是

    xlWorkSheet.Cells[i, 1] == null
    

    = 是赋值运算符,== 用于比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多