繁体   English   中英

无法对空引用异常执行运行时绑定

[英]Cannot perform runtime binding on a null reference exception

我试图通过查找第一列(由日期组成)和标题行中的第一个空单元格来使用C#查找Excel表的维度。

这是我现在正在使用的代码:

public static void findingTableBounds()
    {
        string dateCol = "";
        ArrayList dateColumn = new ArrayList();
        ArrayList numberOfColumns = new ArrayList();

        for (int column = 1; column < currentRow; column++)
        {
            dateCol = ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2.ToString();
            if (dateCol != "")
            {
                dateColumn.Add(dateCol);
                currentRow++;
                totalRow++;
                Console.WriteLine("Total Row: {0}", totalRow);            
            }
            else
            {
                Console.WriteLine("Total Row: {0}", totalRow);
                currentRow = 2;
            }
        }

**注意:此方法有一个结束括号,我没有包含它,因为还有另一个for循环与上面的代码完全相同但只有多少列。

错误发生在“dateCol =((Excel.Range)workSheet.Cells [currentRow,1])。Value2.ToString();” 我很确定它会发生,因为我正在尝试在string为非可空类型时将null值(单元格)分配给dateCol(字符串)。 不幸的是我不确定如何解决这个问题。

将null值应用于字符串是可行的,但是如果((Excel.Range)workSheet.Cells[currentRow, 1]).Value2为null,那么它没有函数ToString()不是函数,所以尝试执行它不起作用。 它说它是什么类型的例外? 因为可能会有更大的问题......

关于上述帖子(我没有足够的声誉对其发表评论)

为了帮助其他失去的灵魂,我增加了这篇文章并将添加:

if(((Excel.Range)workSheet.Cells [currentRow,1])。Value2!= null){...}。
- Sylvain于2015年2月16日21:07

我有一个问题,并使用了这个,但发现,至少在我的情况下,我改为:

if (excelWorksheet.Cells[row, column].Value2 != null)
{
  return ((Excel.Range)excelWorksheet.Cells[row, column]).Value2.ToString();
}
return "No data";

至少对我的特殊情况有用。 在if创建的错误中包含Excel.Range部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM