0

我试图从 Excel 电子表格中仅选择第一列中包含数据的行。

这是我正在使用的代码:

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

当我运行此代码时,调试器告诉我“隐式转换出错。无法转换空对象。”

我无法弄清楚空对象是什么。我假设每一行都有一个非空的第一个单元格(当然,有问题的单元格的 CellValue 可能为空)。

谁能告诉我在这里做错了什么?

在此先感谢您的帮助。

4

1 回答 1

0

如果行或单元格为空,则可以null. 空对象可能来自第一个单元格中没有值的行(并且从未初始化)。

因此,当您运行时row.Descendants<Cell>().First().CellValuenull对象来自.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 回答