diff --git a/src/EPPlus/ExcelWorkbook.cs b/src/EPPlus/ExcelWorkbook.cs index b285effb19..96d54380b3 100644 --- a/src/EPPlus/ExcelWorkbook.cs +++ b/src/EPPlus/ExcelWorkbook.cs @@ -1127,6 +1127,22 @@ public bool Date1904 } } + private const string StrictSpreadsheetMainNamespace = "http://purl.oclc.org/ooxml/spreadsheetml/main"; + + // Call this when loading the workbook XML + private void ValidateWorkbookNamespace() + { + string defaultNamespace = _workbookXml.DocumentElement.NamespaceURI; + if (defaultNamespace == StrictSpreadsheetMainNamespace) + { + throw new NotSupportedException( + "The workbook is saved in the \"Strict Open XML Spreadsheet\" format, " + + "which is not supported by EPPlus. " + + "Please re-save the workbook as a regular \"Excel Workbook (.xlsx)\" " + + "in the Save As dialog and try again."); + } + } + /// /// Create or read the XML for the workbook. @@ -1134,7 +1150,10 @@ public bool Date1904 private void CreateWorkbookXml(XmlNamespaceManager namespaceManager) { if (_package.ZipPackage.PartExists(WorkbookUri)) + { _workbookXml = _package.GetXmlFromUri(WorkbookUri); + ValidateWorkbookNamespace(); + } else { // create a new workbook part and add to the package diff --git a/src/EPPlusTest/EPPlus.Test.csproj b/src/EPPlusTest/EPPlus.Test.csproj index 2106571c84..a1cdb5ed95 100644 --- a/src/EPPlusTest/EPPlus.Test.csproj +++ b/src/EPPlusTest/EPPlus.Test.csproj @@ -250,6 +250,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/src/EPPlusTest/Issues/WorksheetIssues.cs b/src/EPPlusTest/Issues/WorksheetIssues.cs index 13aaf05306..c6258b6390 100644 --- a/src/EPPlusTest/Issues/WorksheetIssues.cs +++ b/src/EPPlusTest/Issues/WorksheetIssues.cs @@ -1130,5 +1130,16 @@ public void InsertAndShift_ShouldNotThrow_WhenArrayIsFull() sheet.InsertColumn(5, 1); } + [TestMethod] + public void Issue2325() + { + var ex = Assert.ThrowsExactly(() => + { + var package = OpenTemplatePackage("StrictOpenXml.xlsx"); + var ws = package.Workbook.Worksheets.First(); + }); + Assert.IsTrue(ex.Message.Contains("Strict Open XML")); + } + } } diff --git a/src/EPPlusTest/Workbooks/StrictOpenXml.xlsx b/src/EPPlusTest/Workbooks/StrictOpenXml.xlsx new file mode 100644 index 0000000000..a225a21dd4 Binary files /dev/null and b/src/EPPlusTest/Workbooks/StrictOpenXml.xlsx differ