Если вы посмотрите на разметку Open XML на листе Excel, вы увидите, что пустые строки даже не существуют в разметке. Это означает, что когда вы читаете ваши строки в вашем foreach
l oop, вы пропустите эти пустые несуществующие строки прямо здесь.
Если вы хотите, чтобы эти пустые строки были в вашем DataTable
, вам придется читать каждую существующую строку, отслеживая номер последней строки, которую вы видели. Если между текущим номером строки и номером последней строки, который вы видели, есть разрыв, вам необходимо заполнить этот пробел, добавив пустые DataRow
экземпляры, прежде чем добавить новый DataRow
для текущей строки.
Обновление 2020-02-03
Чтобы узнать, как вы можете определить номера строк, вы должны посмотреть на разметку Open XML образца рабочего листа. Например, следующая разметка показывает уменьшенный и упрощенный пример рабочего листа, содержащий только элемент sheetData
и несколько дочерних элементов row
. Вы увидите, что каждый элемент row
(экземпляр класса Row
) имеет атрибут с именем r
(свойство RowIndex
класса Row
), который определяет индекс строки. В этом примере мы видим строки 2, 3, 5 и 8, поэтому мы видим, что строки 4, 6 и 7 отсутствуют.
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData>
<row r="2" spans="2:2" x14ac:dyDescent="0.25">
<c r="B2">
<v>2</v>
</c>
</row>
<row r="3" spans="2:2" x14ac:dyDescent="0.25">
<c r="B3">
<v>3</v>
</c>
</row>
<row r="5" spans="2:2" x14ac:dyDescent="0.25">
<c r="B5">
<v>5</v>
</c>
</row>
<row r="8" spans="2:2" x14ac:dyDescent="0.25">
<c r="B8">
<v>8</v>
</c>
</row>
</sheetData>
</worksheet>