如何始终使用DocumentFormat.OpenXml跳过指定的行数

时间:2019-04-01 07:25:54

标签: c# openxml

我使用DocumentFormat.OpenXml遍历行,有时我需要从第4、8、11行开始。我用下面的“ skipRows”和“ If”定义应跳过多少行,让我跳过不必要的行:

var rows = sheet.Descendants<Row>();
foreach (Row row in rows)
{
    if (dataRowIndex < skipRows)
    {
         dataRowIndex++;
         continue;
    }

问题是,有时当行完全为空时,它不会自动遍历它。有时,当它为空时,会对其进行迭代。当在该行中写入任何单元格时,它将始终进行迭代。这是为什么?我该如何确保它总是跳过例如6行,无论这些行的单元格中是否有数据?

1 个答案:

答案 0 :(得分:1)

  

有时当它为空时,会对其进行迭代。当在该行中写入任何单元格时,它将始终进行迭代。为什么会这样?

这是由于XML模式的定义方式所致。在模式中,行是完全可选的;如果连续没有数据,则无需将其写入XML(尽管也没有阻止其写入的内容)。如果一行中有一个单元格,则必须将行 写入XML,因为单元格是该行的子级;没有行,就没有地方写单元格。

  

无论这些行的单元格中是否有数据,如何确保始终跳过例如6行?

您可以使用RowIndex的{​​{1}}属性来查找正在读取的Row的实际索引。

以下示例应执行的操作:

Row