diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs index 5f887da6..639c50e2 100644 --- a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs +++ b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs @@ -28,6 +28,9 @@ private IEnumerable> GetSheets() { sheetId++; var sheetInfos = GetSheetInfos(sheet.Key); + if (sheetInfos.ExcelSheetName.Length > 31) + throw new ArgumentException("Sheet names must be less than 31 characters"); + yield return Tuple.Create(sheetInfos.ToDto(sheetId), sheet.Value); } @@ -424,3 +427,4 @@ private string GetCellXfId(string styleIndex) } } } + diff --git a/tests/MiniExcelTests/MiniExcelIssueTests.cs b/tests/MiniExcelTests/MiniExcelIssueTests.cs index c49c32f5..a4be971d 100644 --- a/tests/MiniExcelTests/MiniExcelIssueTests.cs +++ b/tests/MiniExcelTests/MiniExcelIssueTests.cs @@ -4699,4 +4699,24 @@ public void TestIssue869(string fileName, DateOnlyConversionMode mode, bool thro } } } + + [Fact] + public void TestIssue876() + { + var someTable = new[] + { + new { Name = "Jack", Age = 25 }, + }; + + var sheets = new Dictionary + { + ["SomeVeryLongNameWithMoreThan31Characters"] = someTable + }; + + Assert.Throws(() => + { + using var outputPath = AutoDeletingPath.Create(); + MiniExcel.SaveAs(outputPath.ToString(), sheets); + }); + } } \ No newline at end of file