Skip to content

Commit 436aaa8

Browse files
authored
Yield empty self-closing row tags as empty row during query. (#673)
1 parent 831c814 commit 436aaa8

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed
8.99 KB
Binary file not shown.

src/MiniExcel/OpenXml/ExcelOpenXmlSheetReader.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,11 @@ public IEnumerable<IDictionary<string, object>> Query(bool useHeaderRow, string
277277

278278
// row -> c
279279
if (!XmlReaderHelper.ReadFirstContent(reader))
280+
{
281+
//Fill in case of self closed empty row tag eg. <row r="1"/>
282+
yield return GetCell(useHeaderRow, maxColumnIndex, headRows, startColumnIndex);
280283
continue;
284+
}
281285

282286
// startcell pass rows
283287
if (rowIndex < startRowIndex)

tests/MiniExcelTests/MiniExcelOpenXmlTests.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public void QueryRangeToIDictionary()
180180
Assert.Equal(2d, rows[1]["B"]);
181181
Assert.Equal(null!, rows[2]["A"]);
182182
}
183-
183+
184184
[Fact()]
185185
public void CenterEmptyRowsQueryTest()
186186
{
@@ -201,7 +201,7 @@ public void CenterEmptyRowsQueryTest()
201201

202202
Assert.Equal(null, rows[2].A);
203203
Assert.Equal(2, rows[2].B);
204-
Assert.Equal(null, rows[2].C);
204+
Assert.Equal(null, rows[2].C);
205205
Assert.Equal(4, rows[2].D);
206206

207207
Assert.Equal(null, rows[3].A);
@@ -252,6 +252,27 @@ public void CenterEmptyRowsQueryTest()
252252
}
253253
}
254254

255+
[Fact]
256+
public void TestEmptyRowsQuerySelfClosingTag()
257+
{
258+
var path = @"../../../../../samples/xlsx/TestEmptySelfClosingRow.xlsx";
259+
using (var stream = File.OpenRead(path))
260+
{
261+
var rows = stream.Query().ToList();
262+
263+
Assert.Equal(null, rows[0].A);
264+
Assert.Equal(1, rows[1].A);
265+
Assert.Equal(null, rows[2].A);
266+
Assert.Equal(2, rows[3].A);
267+
Assert.Equal(null, rows[4].A);
268+
Assert.Equal(null, rows[5].A);
269+
Assert.Equal(null, rows[6].A);
270+
Assert.Equal(null, rows[7].A);
271+
Assert.Equal(null, rows[8].A);
272+
Assert.Equal(1, rows[9].A);
273+
}
274+
}
275+
255276
[Fact()]
256277
public void TestDynamicQueryBasic_WithoutHead()
257278
{

0 commit comments

Comments
 (0)