我正在使用 OpenXML 打开电子表格并循环遍历电子表格的行。我有一个 linq 查询,它返回一行中的所有单元格。linq 查询直接来自 MSDN 上的演示。
IEnumerable<String> textValues =
from cell in row.Descendants<Cell>()
where cell.CellValue != null
select (cell.DataType != null
&& cell.DataType.HasValue
&& cell.DataType == CellValues.SharedString
? sharedString.ChildElements[int.Parse(cell.CellValue.InnerText)].InnerText
: cell.CellValue.InnerText);
linq 查询非常擅长返回所有具有值的单元格,但它不会返回没有值的单元格。这反过来又使得无法分辨哪个单元格是哪个单元格。让我再解释一下。例如,我们的电子表格中有三列:姓名、SSN 和地址。这个 linq 查询的工作方式是它只返回那些对给定行具有值的单元格。因此,如果有一行数据包含“John”、“”、“173 Sycamore”,那么 linq 查询只会在枚举中返回“John”和“173 Sycamore”,这反过来又让我无法知道是否“173 Sycamore”是 SSN 或地址字段。
让我在这里重申一下:我需要的是返回所有单元格,而不仅仅是包含 value 的单元格。
我试图以我能想到的各种方式来监视 linq 查询,但我没有任何运气(即 - 删除 where 子句不是诀窍)。任何帮助,将不胜感激。谢谢!