我正在尝试仅从Excel电子表格中选择第一列中包含数据的行。
这是我正在使用的代码:
IEnumerable<Row> dataRows =
from row in worksheet.Descendants<Row>()
where (row.RowIndex > 2
&& row.Descendants<Cell>().First().CellValue != null)
select row;
当我运行此代码时,调试器告诉我“隐式转换时出错。无法转换null对象。”
我无法弄清楚null对象是什么。我假设每一行都有一个非空的第一个单元格(当然,有问题的单元格的CellValue可能为空)。
谁能告诉我这里做错了什么?
提前感谢您的帮助。
答案 0 :(得分: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;