From 81b112fe41dc4caa47daf8960e3c25bb00878c99 Mon Sep 17 00:00:00 2001 From: Paul Rohorzka Date: Sat, 18 Oct 2025 01:05:07 +0200 Subject: [PATCH 1/2] fix(#888): ignore border on read --- samples/xlsx/Issue888_DataWithFrame.xlsx | Bin 0 -> 10157 bytes .../[Content_Types].xml | 2 + .../xlsx/Issue888_DataWithFrame/_rels/.rels | 2 + .../Issue888_DataWithFrame/docProps/app.xml | 2 + .../Issue888_DataWithFrame/docProps/core.xml | 2 + .../docProps/custom.xml | 2 + .../xl/_rels/workbook.xml.rels | 2 + .../xl/sharedStrings.xml | 2 + .../xlsx/Issue888_DataWithFrame/xl/styles.xml | 2 + .../xl/theme/theme1.xml | 2 + .../Issue888_DataWithFrame/xl/workbook.xml | 2 + .../xl/worksheets/sheet1.xml | 48 ++++++++++++++++++ .../OpenXml/ExcelOpenXmlSheetReader.cs | 7 ++- tests/MiniExcelTests/MiniExcelIssueTests.cs | 18 +++++++ 14 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 samples/xlsx/Issue888_DataWithFrame.xlsx create mode 100644 samples/xlsx/Issue888_DataWithFrame/[Content_Types].xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/_rels/.rels create mode 100644 samples/xlsx/Issue888_DataWithFrame/docProps/app.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/docProps/core.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/docProps/custom.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/xl/_rels/workbook.xml.rels create mode 100644 samples/xlsx/Issue888_DataWithFrame/xl/sharedStrings.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/xl/styles.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/xl/theme/theme1.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/xl/workbook.xml create mode 100644 samples/xlsx/Issue888_DataWithFrame/xl/worksheets/sheet1.xml diff --git a/samples/xlsx/Issue888_DataWithFrame.xlsx b/samples/xlsx/Issue888_DataWithFrame.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f65045ab84e07dfcb768fd5d89c3f989c846f03a GIT binary patch literal 10157 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 literal 0 HcmV?d00001 diff --git a/samples/xlsx/Issue888_DataWithFrame/[Content_Types].xml b/samples/xlsx/Issue888_DataWithFrame/[Content_Types].xml new file mode 100644 index 00000000..63133108 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/[Content_Types].xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/_rels/.rels b/samples/xlsx/Issue888_DataWithFrame/_rels/.rels new file mode 100644 index 00000000..b56d8ce8 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/_rels/.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/docProps/app.xml b/samples/xlsx/Issue888_DataWithFrame/docProps/app.xml new file mode 100644 index 00000000..963f041c --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/docProps/app.xml @@ -0,0 +1,2 @@ + +Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300 \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/docProps/core.xml b/samples/xlsx/Issue888_DataWithFrame/docProps/core.xml new file mode 100644 index 00000000..4bfeedfc --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/docProps/core.xml @@ -0,0 +1,2 @@ + +Rohorzka Paul - TIN-AERohorzka Paul - TIN-AE2025-10-17T22:23:09Z2025-10-17T22:45:22Z \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/docProps/custom.xml b/samples/xlsx/Issue888_DataWithFrame/docProps/custom.xml new file mode 100644 index 00000000..c868c73d --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/docProps/custom.xml @@ -0,0 +1,2 @@ + +true2025-10-17T22:24:12ZStandardIntern157b3ee3-4ae6-4531-88f7-d8f2ad10df4f4ae664d4-52f7-48c3-9ea7-430754758029250, 3, 0, 1 \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/xl/_rels/workbook.xml.rels b/samples/xlsx/Issue888_DataWithFrame/xl/_rels/workbook.xml.rels new file mode 100644 index 00000000..65485f71 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/xl/_rels/workbook.xml.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/xl/sharedStrings.xml b/samples/xlsx/Issue888_DataWithFrame/xl/sharedStrings.xml new file mode 100644 index 00000000..f97b7610 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/xl/sharedStrings.xml @@ -0,0 +1,2 @@ + +KeyValueKey1Value1Key2Value2 \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/xl/styles.xml b/samples/xlsx/Issue888_DataWithFrame/xl/styles.xml new file mode 100644 index 00000000..89c2d7d8 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/xl/styles.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/xl/theme/theme1.xml b/samples/xlsx/Issue888_DataWithFrame/xl/theme/theme1.xml new file mode 100644 index 00000000..4a95cff0 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/xl/theme/theme1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/xl/workbook.xml b/samples/xlsx/Issue888_DataWithFrame/xl/workbook.xml new file mode 100644 index 00000000..d813aa58 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/xl/workbook.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/samples/xlsx/Issue888_DataWithFrame/xl/worksheets/sheet1.xml b/samples/xlsx/Issue888_DataWithFrame/xl/worksheets/sheet1.xml new file mode 100644 index 00000000..b8b272b1 --- /dev/null +++ b/samples/xlsx/Issue888_DataWithFrame/xl/worksheets/sheet1.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + 0 + + + 1 + + + + + 2 + + + 3 + + + + + 4 + + + 5 + + + + + + &L_x000D_&1#&"ORF Universal SemiCond TX Regular"&7&KFFDA00 INTERN + + \ No newline at end of file diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetReader.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetReader.cs index 1d21d581..96b74fb5 100644 --- a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetReader.cs +++ b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetReader.cs @@ -183,8 +183,11 @@ internal IEnumerable> InternalQueryRange(bool useHea if (rowIndex < startRowIndex) { - XmlReaderHelper.ReadFirstContent(reader); - XmlReaderHelper.SkipToNextSameLevelDom(reader); + if (XmlReaderHelper.ReadFirstContent(reader)) + { + XmlReaderHelper.SkipToNextSameLevelDom(reader); + } + continue; } if (endRowIndex.HasValue && rowIndex > endRowIndex.Value) diff --git a/tests/MiniExcelTests/MiniExcelIssueTests.cs b/tests/MiniExcelTests/MiniExcelIssueTests.cs index 1cdc95c9..d3a6dad2 100644 --- a/tests/MiniExcelTests/MiniExcelIssueTests.cs +++ b/tests/MiniExcelTests/MiniExcelIssueTests.cs @@ -4737,4 +4737,22 @@ public void TestIssue880_ShouldThrowNotSerializableException() ms.SaveAs(toExport); }); } + + public record ExcelDataRow(string Key, string Value) + { + public ExcelDataRow() : this("", "") { } + } + + [Fact] + public void TestIssue888_ShouldIgnoreFrame() + { + const string xlsxPath = "../../../../../samples/xlsx/Issue888_DataWithFrame.xlsx"; + using var stream = File.OpenRead(xlsxPath); + var data = stream.Query("Sheet1", startCell: "A2").ToList(); + + Assert.Equal([ + new("Key1", "Value1"), + new("Key2", "Value2") + ], data); + } } \ No newline at end of file From be3a9628ff14e73543c364bf16bd1d809551a468 Mon Sep 17 00:00:00 2001 From: Paul Rohorzka Date: Sun, 19 Oct 2025 08:52:19 +0200 Subject: [PATCH 2/2] chore(#888): refactor test --- tests/MiniExcelTests/MiniExcelIssueTests.cs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/tests/MiniExcelTests/MiniExcelIssueTests.cs b/tests/MiniExcelTests/MiniExcelIssueTests.cs index d3a6dad2..49e0fe25 100644 --- a/tests/MiniExcelTests/MiniExcelIssueTests.cs +++ b/tests/MiniExcelTests/MiniExcelIssueTests.cs @@ -4738,21 +4738,28 @@ public void TestIssue880_ShouldThrowNotSerializableException() }); } - public record ExcelDataRow(string Key, string Value) + private record ExcelDataRow(string Key, string Value) { public ExcelDataRow() : this("", "") { } } + /// + /// https://github.com/mini-software/MiniExcel/issues/888 + /// [Fact] public void TestIssue888_ShouldIgnoreFrame() { - const string xlsxPath = "../../../../../samples/xlsx/Issue888_DataWithFrame.xlsx"; - using var stream = File.OpenRead(xlsxPath); - var data = stream.Query("Sheet1", startCell: "A2").ToList(); - - Assert.Equal([ + var xlsxPath = PathHelper.GetFile("xlsx/Issue888_DataWithFrame.xlsx"); + ExcelDataRow[] dataInSheet = [ new("Key1", "Value1"), new("Key2", "Value2") - ], data); + ]; + + using var stream = File.OpenRead(xlsxPath); + + // Act + var dataRead = stream.Query(startCell: "A2").ToArray(); + + Assert.Equal(dataInSheet, dataRead); } } \ No newline at end of file