From b9b7f851a7fc649a2afe58095e0a51d44e02bde9 Mon Sep 17 00:00:00 2001 From: SamuelLFA Date: Tue, 6 May 2025 19:03:05 -0300 Subject: [PATCH] fix: skipping sheet with errors and avoiding null point errors --- lib.go | 1 + lib_test.go | 7 +++++++ testdocs/sheet_name_length_above_max.xlsx | Bin 0 -> 7265 bytes 3 files changed, 8 insertions(+) create mode 100644 testdocs/sheet_name_length_above_max.xlsx diff --git a/lib.go b/lib.go index 0223d9cd..22164d29 100644 --- a/lib.go +++ b/lib.go @@ -863,6 +863,7 @@ func readSheetsFromZipFile(f *zip.File, file *File, sheetXMLMap map[string]strin sb.WriteString(strconv.Itoa(sheet.Index)) sb.WriteString("} ") sb.WriteString(sheet.Error.Error()) + continue } sheetName := sheet.Sheet.Name sheetsByName[sheetName] = sheet.Sheet diff --git a/lib_test.go b/lib_test.go index 5b0a67df..1ee8271d 100644 --- a/lib_test.go +++ b/lib_test.go @@ -1364,6 +1364,13 @@ func TestLib(t *testing.T) { } }) + // Attempting to open a file with an invalid sheet name. + csRunO(c, "ReadFileWithInvalidSheet", func(c *qt.C, option FileOption) { + _, err := OpenFile("./testdocs/sheet_name_length_above_max.xlsx", option) + c.Assert(err, qt.Not(qt.IsNil)) + c.Assert(err.Error(), qt.Equals, "OpenFile: ReadZip: ReadZipReader: {SheetIndex: 0} readSheetFromFile: sheet name is invalid: sheet name must be 31 or fewer characters long. It is currently '32' characters long") + }) + } func TestReadRowsFromSheet(t *testing.T) { diff --git a/testdocs/sheet_name_length_above_max.xlsx b/testdocs/sheet_name_length_above_max.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..140e75c978f59a6ec3b77cf89d0326310928e761 GIT binary patch literal 7265 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 literal 0 HcmV?d00001