diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs index ca6726e..07a9974 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs @@ -141,16 +141,25 @@ else worksheetPart = workbookPart.AddNewPart(wsRelId); + if (worksheet.Internals.CellsCollection.GetCells(c => c.HasComment).Any()) + { + WorksheetCommentsPart worksheetCommentsPart = + worksheetPart.AddNewPart(context.RelIdGenerator.GetNext(RelType.Worksheet)); + GenerateWorksheetCommentsPartContent(worksheetCommentsPart, worksheet); + + worksheet.LegacyDrawingId = context.RelIdGenerator.GetNext(RelType.Worksheet); + VmlDrawingPart vmlDrawingPart = worksheetPart.AddNewPart(worksheet.LegacyDrawingId); + GenerateVmlDrawingPartContent(vmlDrawingPart, worksheet, context); + } + GenerateWorksheetPartContent(worksheetPart, worksheet, context); - //GeneratePivotTables(workbookPart, worksheetPart, worksheet, context); + if (worksheet.PivotTables.Any()) + { + GeneratePivotTables(workbookPart, worksheetPart, worksheet, context); + } - WorksheetCommentsPart worksheetCommentsPart = worksheetPart.AddNewPart(context.RelIdGenerator.GetNext(RelType.Worksheet)); - GenerateWorksheetCommentsPartContent(worksheetCommentsPart, worksheet); - worksheet.LegacyDrawingId = context.RelIdGenerator.GetNext(RelType.Worksheet); - VmlDrawingPart vmlDrawingPart = worksheetPart.AddNewPart(worksheet.LegacyDrawingId); - GenerateVmlDrawingPartContent(vmlDrawingPart, worksheet, context); //DrawingsPart drawingsPart = worksheetPart.AddNewPart("rId1"); //GenerateDrawingsPartContent(drawingsPart, worksheet); @@ -3301,8 +3310,12 @@ #region LegacyDrawing worksheetPart.Worksheet.RemoveAllChildren(); { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.LegacyDrawing); - worksheetPart.Worksheet.InsertAfter(new LegacyDrawing { Id = xlWorksheet.LegacyDrawingId }, previousElement); + if(!StringExtensions.IsNullOrWhiteSpace(xlWorksheet.LegacyDrawingId)) + { + var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.LegacyDrawing); + worksheetPart.Worksheet.InsertAfter(new LegacyDrawing {Id = xlWorksheet.LegacyDrawingId}, + previousElement); + } } #endregion }