2012-04-30 21 views
0

我想從Excel電子表格中選擇第一列有數據的行。通過Linq選擇帶有第一列數據的Excel行

下面是我使用的代碼:「在隱式轉換錯誤無法轉換爲null的對象。」

 IEnumerable<Row> dataRows = 
      from row in worksheet.Descendants<Row>() 
      where (row.RowIndex > 2 
      && row.Descendants<Cell>().First().CellValue != null) 
      select row; 

當我運行此代碼,調試器告訴我

我無法弄清楚null對象是什麼。我假設每行都有一個非空的第一個單元格(儘管當然,所討論的單元格的CellValue可能爲空)。

任何人都可以告訴我在這裏做錯了嗎?

在此先感謝您的幫助。

+0

我的問題,實際上似乎是與RowIndex屬性。出於某種原因,在我的電子表格的某些行中它爲空。 – Steve

回答

0

如果一行或單元格爲空,它可以可以可以是null。空對象可以來自在第一個單元格中沒有值的行(並且從未初始化)。

因此,當您運行row.Descendants<Cell>().First().CellValue時,null對象來自.First(),該單元尚未初始化。

嘗試以下操作:

IEnumerable<Row> dataRows = 
    from row in templateWorksheetPart.Worksheet.Descendants<Row>() 
    where (row.RowIndex > 2 
     && row.Descendants<Cell>().First() != null       
     && row.Descendants<Cell>().First().CellValue != null) 
    select row;