diff --git a/ClosedXML/Excel/ContentManagers/XLBaseContentManager.cs b/ClosedXML/Excel/ContentManagers/XLBaseContentManager.cs new file mode 100644 index 0000000..6d031b5 --- /dev/null +++ b/ClosedXML/Excel/ContentManagers/XLBaseContentManager.cs @@ -0,0 +1,38 @@ +using DocumentFormat.OpenXml; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace ClosedXML.Excel.ContentManagers +{ + internal abstract class XLBaseContentManager + { + + } + + internal abstract class XLBaseContentManager : XLBaseContentManager + where T : struct, IConvertible + + { + protected readonly IDictionary contents = new Dictionary(); + + public OpenXmlElement GetPreviousElementFor(T content) + { + var i = content.CastTo(); + + var previousElements = contents.Keys + .Where(key => key.CastTo() < i && contents[key] != null) + .OrderBy(key => key.CastTo()); + + if (previousElements.Any()) + return contents[previousElements.Last()]; + else + return null; + } + + public void SetElement(T content, OpenXmlElement element) + { + contents[content] = element; + } + } +} diff --git a/ClosedXML/Excel/ContentManagers/XLSheetViewContentManager.cs b/ClosedXML/Excel/ContentManagers/XLSheetViewContentManager.cs new file mode 100644 index 0000000..12c74ad --- /dev/null +++ b/ClosedXML/Excel/ContentManagers/XLSheetViewContentManager.cs @@ -0,0 +1,24 @@ +using DocumentFormat.OpenXml.Spreadsheet; +using System.Linq; + +namespace ClosedXML.Excel.ContentManagers +{ + internal enum XLSheetViewContents + { + Pane, + Selection, + PivotSelection, + ExtensionList + } + + internal class XLSheetViewContentManager : XLBaseContentManager + { + public XLSheetViewContentManager(SheetView sheetView) + { + contents.Add(XLSheetViewContents.Pane, sheetView.Elements().LastOrDefault()); + contents.Add(XLSheetViewContents.Selection, sheetView.Elements().LastOrDefault()); + contents.Add(XLSheetViewContents.PivotSelection, sheetView.Elements().LastOrDefault()); + contents.Add(XLSheetViewContents.ExtensionList, sheetView.Elements().LastOrDefault()); + } + } +} diff --git a/ClosedXML/Excel/ContentManagers/XLWorksheetContentManager.cs b/ClosedXML/Excel/ContentManagers/XLWorksheetContentManager.cs index 0f67b92..d3f90c0 100644 --- a/ClosedXML/Excel/ContentManagers/XLWorksheetContentManager.cs +++ b/ClosedXML/Excel/ContentManagers/XLWorksheetContentManager.cs @@ -1,111 +1,97 @@ -using System; -using System.Collections.Generic; -using System.Linq; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Spreadsheet; +using System.Linq; -namespace ClosedXML.Excel +namespace ClosedXML.Excel.ContentManagers { - internal class XLWSContentManager + internal enum XLWorksheetContents { - public enum XLWSContents - { - SheetProperties = 1, - SheetDimension = 2, - SheetViews = 3, - SheetFormatProperties = 4, - Columns = 5, - SheetData = 6, - SheetCalculationProperties = 7, - SheetProtection = 8, - ProtectedRanges = 9, - Scenarios = 10, - AutoFilter = 11, - SortState = 12, - DataConsolidate = 13, - CustomSheetViews = 14, - MergeCells = 15, - PhoneticProperties = 16, - ConditionalFormatting = 17, - DataValidations = 18, - Hyperlinks = 19, - PrintOptions = 20, - PageMargins = 21, - PageSetup = 22, - HeaderFooter = 23, - RowBreaks = 24, - ColumnBreaks = 25, - CustomProperties = 26, - CellWatches = 27, - IgnoredErrors = 28, - SmartTags = 29, - Drawing = 30, - LegacyDrawing = 31, - LegacyDrawingHeaderFooter = 32, - DrawingHeaderFooter = 33, - Picture = 34, - OleObjects = 35, - Controls = 36, - AlternateContent = 37, - WebPublishItems = 38, - TableParts = 39, - WorksheetExtensionList = 40 - } - private readonly Dictionary contents = new Dictionary(); + SheetProperties = 1, + SheetDimension = 2, + SheetViews = 3, + SheetFormatProperties = 4, + Columns = 5, + SheetData = 6, + SheetCalculationProperties = 7, + SheetProtection = 8, + ProtectedRanges = 9, + Scenarios = 10, + AutoFilter = 11, + SortState = 12, + DataConsolidate = 13, + CustomSheetViews = 14, + MergeCells = 15, + PhoneticProperties = 16, + ConditionalFormatting = 17, + DataValidations = 18, + Hyperlinks = 19, + PrintOptions = 20, + PageMargins = 21, + PageSetup = 22, + HeaderFooter = 23, + RowBreaks = 24, + ColumnBreaks = 25, + CustomProperties = 26, + CellWatches = 27, + IgnoredErrors = 28, + SmartTags = 29, + Drawing = 30, + LegacyDrawing = 31, + LegacyDrawingHeaderFooter = 32, + DrawingHeaderFooter = 33, + Picture = 34, + OleObjects = 35, + Controls = 36, + AlternateContent = 37, + WebPublishItems = 38, + TableParts = 39, + WorksheetExtensionList = 40 + } - public XLWSContentManager(Worksheet opWorksheet) + internal class XLWorksheetContentManager : XLBaseContentManager + { + public XLWorksheetContentManager(Worksheet opWorksheet) { - contents.Add(XLWSContents.SheetProperties, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SheetDimension, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SheetViews, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SheetFormatProperties, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.Columns, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SheetData, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SheetCalculationProperties, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SheetProtection, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.ProtectedRanges, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.Scenarios, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.AutoFilter, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.SortState, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.DataConsolidate, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.CustomSheetViews, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.MergeCells, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.PhoneticProperties, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.ConditionalFormatting, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.DataValidations, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.Hyperlinks, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.PrintOptions, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.PageMargins, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.PageSetup, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.HeaderFooter, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.RowBreaks, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.ColumnBreaks, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.CustomProperties, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.CellWatches, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.IgnoredErrors, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetProperties, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetDimension, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetViews, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetFormatProperties, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.Columns, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetData, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetCalculationProperties, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SheetProtection, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.ProtectedRanges, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.Scenarios, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.AutoFilter, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.SortState, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.DataConsolidate, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.CustomSheetViews, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.MergeCells, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.PhoneticProperties, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.ConditionalFormatting, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.DataValidations, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.Hyperlinks, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.PrintOptions, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.PageMargins, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.PageSetup, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.HeaderFooter, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.RowBreaks, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.ColumnBreaks, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.CustomProperties, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.CellWatches, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.IgnoredErrors, opWorksheet.Elements().LastOrDefault()); //contents.Add(XLWSContents.SmartTags, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.Drawing, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.LegacyDrawing, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.LegacyDrawingHeaderFooter, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.DrawingHeaderFooter, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.Picture, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.OleObjects, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.Controls, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.AlternateContent, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.WebPublishItems, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.TableParts, opWorksheet.Elements().LastOrDefault()); - contents.Add(XLWSContents.WorksheetExtensionList, opWorksheet.Elements().LastOrDefault()); - } - - public void SetElement(XLWSContents content, OpenXmlElement element) - { - contents[content] = element; - } - - public OpenXmlElement GetPreviousElementFor(XLWSContents content) - { - var max = contents.Where(kp => (Int32)kp.Key < (Int32)content && kp.Value != null).Max(kp => kp.Key); - return contents[max]; + contents.Add(XLWorksheetContents.Drawing, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.LegacyDrawing, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.LegacyDrawingHeaderFooter, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.DrawingHeaderFooter, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.Picture, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.OleObjects, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.Controls, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.AlternateContent, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.WebPublishItems, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.TableParts, opWorksheet.Elements().LastOrDefault()); + contents.Add(XLWorksheetContents.WorksheetExtensionList, opWorksheet.Elements().LastOrDefault()); } } } diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index 40e1ae5..939df1a 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -1,3 +1,4 @@ +using ClosedXML.Excel.ContentManagers; using ClosedXML.Extensions; using ClosedXML.Utils; using DocumentFormat.OpenXml; @@ -397,7 +398,7 @@ } } - private static void GenerateTables(XLWorksheet worksheet, WorksheetPart worksheetPart, SaveContext context, XLWSContentManager cm) + private static void GenerateTables(XLWorksheet worksheet, WorksheetPart worksheetPart, SaveContext context, XLWorksheetContentManager cm) { var tables = worksheet.Tables as XLTables; @@ -408,11 +409,11 @@ } else { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.TableParts); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.TableParts); tableParts = new TableParts(); worksheetPart.Worksheet.InsertAfter(tableParts, previousElement); } - cm.SetElement(XLWSContentManager.XLWSContents.TableParts, tableParts); + cm.SetElement(XLWorksheetContents.TableParts, tableParts); foreach (var deletedTableRelId in tables.Deleted) { @@ -4328,7 +4329,7 @@ #endregion Worksheet - var cm = new XLWSContentManager(worksheetPart.Worksheet); + var cm = new XLWorksheetContentManager(worksheetPart.Worksheet); #region SheetProperties @@ -4339,7 +4340,7 @@ ? GetTabColor(xlWorksheet.TabColor) : null; - cm.SetElement(XLWSContentManager.XLWSContents.SheetProperties, worksheetPart.Worksheet.SheetProperties); + cm.SetElement(XLWorksheetContents.SheetProperties, worksheetPart.Worksheet.SheetProperties); if (worksheetPart.Worksheet.SheetProperties.OutlineProperties == null) worksheetPart.Worksheet.SheetProperties.OutlineProperties = new OutlineProperties(); @@ -4380,12 +4381,12 @@ if (worksheetPart.Worksheet.SheetDimension == null) worksheetPart.Worksheet.SheetDimension = new SheetDimension { Reference = sheetDimensionReference }; - cm.SetElement(XLWSContentManager.XLWSContents.SheetDimension, worksheetPart.Worksheet.SheetDimension); + cm.SetElement(XLWorksheetContents.SheetDimension, worksheetPart.Worksheet.SheetDimension); if (worksheetPart.Worksheet.SheetViews == null) worksheetPart.Worksheet.SheetViews = new SheetViews(); - cm.SetElement(XLWSContentManager.XLWSContents.SheetViews, worksheetPart.Worksheet.SheetViews); + cm.SetElement(XLWorksheetContents.SheetViews, worksheetPart.Worksheet.SheetViews); var sheetView = (SheetView)worksheetPart.Worksheet.SheetViews.FirstOrDefault(); if (sheetView == null) @@ -4394,6 +4395,8 @@ worksheetPart.Worksheet.SheetViews.AppendChild(sheetView); } + var svcm = new XLSheetViewContentManager(sheetView); + if (xlWorksheet.TabSelected) sheetView.TabSelected = true; else @@ -4453,9 +4456,11 @@ if (pane == null) { pane = new Pane(); - sheetView.AppendChild(pane); + sheetView.InsertAt(pane, 0); } + svcm.SetElement(XLSheetViewContents.Pane, pane); + pane.State = PaneStateValues.FrozenSplit; Double hSplit = xlWorksheet.SheetView.SplitColumn; Double ySplit = xlWorksheet.SheetView.SplitRow; @@ -4473,6 +4478,7 @@ { pane = null; sheetView.RemoveAllChildren(); + svcm.SetElement(XLSheetViewContents.Pane, null); } else sheetView.TopLeftCell = null; @@ -4480,6 +4486,7 @@ if (xlWorksheet.SelectedRanges.Any() || xlWorksheet.ActiveCell != null) { sheetView.RemoveAllChildren(); + svcm.SetElement(XLSheetViewContents.Selection, null); var firstSelection = xlWorksheet.SelectedRanges.FirstOrDefault(); @@ -4503,11 +4510,12 @@ selection.SequenceOfReferences = new ListValue { InnerText = String.Join(" ", seqRef.Distinct().ToArray()) }; - sheetView.Append(selection); + sheetView.InsertAfter(selection, svcm.GetPreviousElementFor(XLSheetViewContents.Selection)); + svcm.SetElement(XLSheetViewContents.Selection, selection); }; - populateSelection(new Selection()); // If a pane exists, we need to set the active pane too + // Yes, this might lead to 2 Selection elements! if (pane != null) { populateSelection(new Selection() @@ -4515,6 +4523,7 @@ Pane = pane.ActivePane }); } + populateSelection(new Selection()); } if (xlWorksheet.SheetView.ZoomScale == 100) @@ -4552,7 +4561,7 @@ if (worksheetPart.Worksheet.SheetFormatProperties == null) worksheetPart.Worksheet.SheetFormatProperties = new SheetFormatProperties(); - cm.SetElement(XLWSContentManager.XLWSContents.SheetFormatProperties, + cm.SetElement(XLWorksheetContents.SheetFormatProperties, worksheetPart.Worksheet.SheetFormatProperties); worksheetPart.Worksheet.SheetFormatProperties.DefaultRowHeight = xlWorksheet.RowHeight.SaveRound(); @@ -4591,12 +4600,12 @@ { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.Columns); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.Columns); worksheetPart.Worksheet.InsertAfter(new Columns(), previousElement); } var columns = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.Columns, columns); + cm.SetElement(XLWorksheetContents.Columns, columns); var sheetColumnsByMin = columns.Elements().ToDictionary(c => c.Min.Value, c => c); //Dictionary sheetColumnsByMax = columns.Elements().ToDictionary(c => c.Max.Value, c => c); @@ -4706,7 +4715,7 @@ if (!columns.Any()) { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.Columns, null); + cm.SetElement(XLWorksheetContents.Columns, null); } } @@ -4716,12 +4725,12 @@ if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.SheetData); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.SheetData); worksheetPart.Worksheet.InsertAfter(new SheetData(), previousElement); } var sheetData = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.SheetData, sheetData); + cm.SetElement(XLWorksheetContents.SheetData, sheetData); var lastRow = 0; var existingSheetDataRows = @@ -4980,12 +4989,12 @@ { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.SheetProtection); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.SheetProtection); worksheetPart.Worksheet.InsertAfter(new SheetProtection(), previousElement); } var sheetProtection = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.SheetProtection, sheetProtection); + cm.SetElement(XLWorksheetContents.SheetProtection, sheetProtection); var protection = xlWorksheet.Protection; sheetProtection.Sheet = protection.Protected; @@ -5009,7 +5018,7 @@ else { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.SheetProtection, null); + cm.SetElement(XLWorksheetContents.SheetProtection, null); } #endregion SheetProtection @@ -5019,17 +5028,17 @@ worksheetPart.Worksheet.RemoveAllChildren(); if (xlWorksheet.AutoFilter.Enabled) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.AutoFilter); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.AutoFilter); worksheetPart.Worksheet.InsertAfter(new AutoFilter(), previousElement); var autoFilter = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.AutoFilter, autoFilter); + cm.SetElement(XLWorksheetContents.AutoFilter, autoFilter); PopulateAutoFilter(xlWorksheet.AutoFilter, autoFilter); } else { - cm.SetElement(XLWSContentManager.XLWSContents.AutoFilter, null); + cm.SetElement(XLWorksheetContents.AutoFilter, null); } #endregion AutoFilter @@ -5040,12 +5049,12 @@ { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.MergeCells); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.MergeCells); worksheetPart.Worksheet.InsertAfter(new MergeCells(), previousElement); } var mergeCells = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.MergeCells, mergeCells); + cm.SetElement(XLWorksheetContents.MergeCells, mergeCells); mergeCells.RemoveAllChildren(); foreach (var mergeCell in (xlWorksheet).Internals.MergedRanges.Select( @@ -5058,7 +5067,7 @@ else { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.MergeCells, null); + cm.SetElement(XLWorksheetContents.MergeCells, null); } #endregion MergeCells @@ -5068,12 +5077,12 @@ if (!xlWorksheet.ConditionalFormats.Any()) { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.ConditionalFormatting, null); + cm.SetElement(XLWorksheetContents.ConditionalFormatting, null); } else { worksheetPart.Worksheet.RemoveAllChildren(); - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.ConditionalFormatting); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.ConditionalFormatting); var conditionalFormats = xlWorksheet.ConditionalFormats.ToList(); // Required for IndexOf method @@ -5097,7 +5106,7 @@ } worksheetPart.Worksheet.InsertAfter(conditionalFormatting, previousElement); previousElement = conditionalFormatting; - cm.SetElement(XLWSContentManager.XLWSContents.ConditionalFormatting, conditionalFormatting); + cm.SetElement(XLWorksheetContents.ConditionalFormatting, conditionalFormatting); } } @@ -5106,12 +5115,12 @@ { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.WorksheetExtensionList); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.WorksheetExtensionList); worksheetPart.Worksheet.InsertAfter(new WorksheetExtensionList(), previousElement); } WorksheetExtensionList worksheetExtensionList = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.WorksheetExtensionList, worksheetExtensionList); + cm.SetElement(XLWorksheetContents.WorksheetExtensionList, worksheetExtensionList); var conditionalFormattings = worksheetExtensionList.Descendants().SingleOrDefault(); if (conditionalFormattings == null || !conditionalFormattings.Any()) @@ -5160,18 +5169,18 @@ if (!xlWorksheet.DataValidations.Any(d => d.IsDirty())) { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.DataValidations, null); + cm.SetElement(XLWorksheetContents.DataValidations, null); } else { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.DataValidations); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.DataValidations); worksheetPart.Worksheet.InsertAfter(new DataValidations(), previousElement); } var dataValidations = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.DataValidations, dataValidations); + cm.SetElement(XLWorksheetContents.DataValidations, dataValidations); dataValidations.RemoveAllChildren(); xlWorksheet.DataValidations.Consolidate(); @@ -5215,18 +5224,18 @@ if (!xlWorksheet.Hyperlinks.Any()) { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.Hyperlinks, null); + cm.SetElement(XLWorksheetContents.Hyperlinks, null); } else { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.Hyperlinks); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.Hyperlinks); worksheetPart.Worksheet.InsertAfter(new Hyperlinks(), previousElement); } var hyperlinks = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.Hyperlinks, hyperlinks); + cm.SetElement(XLWorksheetContents.Hyperlinks, hyperlinks); hyperlinks.RemoveAllChildren(); foreach (var hl in xlWorksheet.Hyperlinks) { @@ -5258,12 +5267,12 @@ if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.PrintOptions); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.PrintOptions); worksheetPart.Worksheet.InsertAfter(new PrintOptions(), previousElement); } var printOptions = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.PrintOptions, printOptions); + cm.SetElement(XLWorksheetContents.PrintOptions, printOptions); printOptions.HorizontalCentered = xlWorksheet.PageSetup.CenterHorizontally; printOptions.VerticalCentered = xlWorksheet.PageSetup.CenterVertically; @@ -5276,12 +5285,12 @@ if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.PageMargins); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.PageMargins); worksheetPart.Worksheet.InsertAfter(new PageMargins(), previousElement); } var pageMargins = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.PageMargins, pageMargins); + cm.SetElement(XLWorksheetContents.PageMargins, pageMargins); pageMargins.Left = xlWorksheet.PageSetup.Margins.Left; pageMargins.Right = xlWorksheet.PageSetup.Margins.Right; pageMargins.Top = xlWorksheet.PageSetup.Margins.Top; @@ -5295,12 +5304,12 @@ if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.PageSetup); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.PageSetup); worksheetPart.Worksheet.InsertAfter(new PageSetup(), previousElement); } var pageSetup = worksheetPart.Worksheet.Elements().First(); - cm.SetElement(XLWSContentManager.XLWSContents.PageSetup, pageSetup); + cm.SetElement(XLWorksheetContents.PageSetup, pageSetup); pageSetup.Orientation = xlWorksheet.PageSetup.PageOrientation.ToOpenXml(); pageSetup.PaperSize = (UInt32)xlWorksheet.PageSetup.PaperSize; @@ -5365,9 +5374,9 @@ worksheetPart.Worksheet.RemoveAllChildren(); { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.HeaderFooter); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.HeaderFooter); worksheetPart.Worksheet.InsertAfter(headerFooter, previousElement); - cm.SetElement(XLWSContentManager.XLWSContents.HeaderFooter, headerFooter); + cm.SetElement(XLWorksheetContents.HeaderFooter, headerFooter); } if (((XLHeaderFooter)xlWorksheet.PageSetup.Header).Changed || ((XLHeaderFooter)xlWorksheet.PageSetup.Footer).Changed) @@ -5404,7 +5413,7 @@ { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.RowBreaks); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.RowBreaks); worksheetPart.Worksheet.InsertAfter(new RowBreaks(), previousElement); } @@ -5434,12 +5443,12 @@ ManualPageBreak = true })) rowBreaks.AppendChild(break1); - cm.SetElement(XLWSContentManager.XLWSContents.RowBreaks, rowBreaks); + cm.SetElement(XLWorksheetContents.RowBreaks, rowBreaks); } else { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.RowBreaks, null); + cm.SetElement(XLWorksheetContents.RowBreaks, null); } #endregion RowBreaks @@ -5451,7 +5460,7 @@ { if (!worksheetPart.Worksheet.Elements().Any()) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.ColumnBreaks); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.ColumnBreaks); worksheetPart.Worksheet.InsertAfter(new ColumnBreaks(), previousElement); } @@ -5481,12 +5490,12 @@ ManualPageBreak = true })) columnBreaks.AppendChild(break1); - cm.SetElement(XLWSContentManager.XLWSContents.ColumnBreaks, columnBreaks); + cm.SetElement(XLWorksheetContents.ColumnBreaks, columnBreaks); } else { worksheetPart.Worksheet.RemoveAllChildren(); - cm.SetElement(XLWSContentManager.XLWSContents.ColumnBreaks, null); + cm.SetElement(XLWorksheetContents.ColumnBreaks, null); } #endregion ColumnBreaks @@ -5523,7 +5532,7 @@ var worksheetDrawing = new Drawing { Id = worksheetPart.GetIdOfPart(worksheetPart.DrawingsPart) }; worksheetDrawing.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); worksheetPart.Worksheet.InsertBefore(worksheetDrawing, tableParts); - cm.SetElement(XLWSContentManager.XLWSContents.Drawing, worksheetPart.Worksheet.Elements().First()); + cm.SetElement(XLWorksheetContents.Drawing, worksheetPart.Worksheet.Elements().First()); } // Instead of saving a file with an empty Drawings.xml file, rather remove the .xml file @@ -5545,11 +5554,11 @@ if (!String.IsNullOrWhiteSpace(xlWorksheet.LegacyDrawingId)) { - var previousElement = cm.GetPreviousElementFor(XLWSContentManager.XLWSContents.LegacyDrawing); + var previousElement = cm.GetPreviousElementFor(XLWorksheetContents.LegacyDrawing); worksheetPart.Worksheet.InsertAfter(new LegacyDrawing { Id = xlWorksheet.LegacyDrawingId }, previousElement); - cm.SetElement(XLWSContentManager.XLWSContents.LegacyDrawing, worksheetPart.Worksheet.Elements().First()); + cm.SetElement(XLWorksheetContents.LegacyDrawing, worksheetPart.Worksheet.Elements().First()); } }