0

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

私が使用しているコードは次のとおりです。

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

このコードを実行すると、デバッガーから「暗黙的な変換でエラーが発生しました。null オブジェクトを変換できません。」と表示されます。

null オブジェクトが何であるかわかりません。各行には null 以外の最初のセルがあると仮定します (もちろん、問題のセルの CellValue は null である可能性があります)。

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

よろしくお願いします。

4

1 に答える 1

0

行またはセルが空の場合null. 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;
于 2012-07-26T15:30:37.940 に答える