2011-02-08 71 views
6

我试图通过查找第一列(由日期组成)和标题行中的第一个空单元格来查找使用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循环做完全相同的作为上面的代码,但只有多少列。 (“Excel.Range”)workSheet.Cells [currentRow,1])。Value2.ToString();“我很确定发生这种情况,因为我试图在string是非空类型时为dateCol(一个字符串)分配一个空值(单元格)。不幸的是我不确定如何解决这个问题。

+3

你的变量名似乎很奇怪。 `列 2011-02-08 23:39:05

回答

9

应用空值的字符串是可行的,但如果 ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2为空,则它不具有功能的ToString()不是一个函数,所以试图执行这是行不通的。它说它是什么类型的异常?因为有可能是一个更大的问题......

+0

隐形鲍勃, 完整的例外是“例外:无法对空引用执行运行时绑定”。 – 2011-02-09 21:07:16

1

在关于上述职位(我没有足够的声誉对此发表评论)

为了帮助其他失魂的缘故,我调升这个帖子并且只会添加:

if(((Excel.Range)workSheet.Cells [currentRow,1])。Value2!= null){...}。
- 西尔02月16日在'15 21:07

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

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

这工作了至少是我的特例。在创建的错误中具有Excel.Range部分。

相关问题