我使用DocumentFormat.OpenXml遍历行,有时我需要从第4、8、11行开始。我用下面的“ skipRows”和“ If”定义应跳过多少行,让我跳过不必要的行:
var rows = sheet.Descendants<Row>();
foreach (Row row in rows)
{
if (dataRowIndex < skipRows)
{
dataRowIndex++;
continue;
}
问题是,有时当行完全为空时,它不会自动遍历它。有时,当它为空时,会对其进行迭代。当在该行中写入任何单元格时,它将始终进行迭代。这是为什么?我该如何确保它总是跳过例如6行,无论这些行的单元格中是否有数据?
答案 0 :(得分:1)
有时当它为空时,会对其进行迭代。当在该行中写入任何单元格时,它将始终进行迭代。为什么会这样?
这是由于XML模式的定义方式所致。在模式中,行是完全可选的;如果连续没有数据,则无需将其写入XML(尽管也没有阻止其写入的内容)。如果一行中有一个单元格,则必须将行 写入XML,因为单元格是该行的子级;没有行,就没有地方写单元格。
无论这些行的单元格中是否有数据,如何确保始终跳过例如6行?
您可以使用RowIndex
的{{1}}属性来查找正在读取的Row
的实际索引。
以下示例应执行的操作:
Row