2012-04-30 19 views
0

最初の列にデータがあるExcelスプレッドシートの行だけを選択しようとしています。Linq経由で最初の列にデータを含むExcel行を選択

はここに私が使用しているコードです:私はこのコードを実行すると

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

、デバッガは「暗黙の型変換でエラーが発生しましたヌルオブジェクトを変換できません。」と言われます

nullオブジェクトが何であるか把握できません。私は各行が非ヌルの最初のセルを持っていると仮定します(もちろん、問題のセルのCellValueはnullかもしれません)。

私がここで間違っていることを誰にでも伝えることはできますか?

ご協力いただきありがとうございます。

+0

私の問題は、実際にrowIndexにプロパティと一緒に表示されます。何らかの理由で、スプレッドシートの一部の行でnullです。 – 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; 
関連する問題