// Write private static void SaveWorksheetData(WorksheetData worksheetData) { OpenXmlPackaging.WorksheetPart worksheetPart = Worksheet.GetWorksheetPartByWorksheet(worksheetData.Worksheet); using (CustomOpenXmlWriter<OpenXmlPackaging.WorksheetPart> writer = new CustomOpenXmlWriter<OpenXmlPackaging.WorksheetPart>(worksheetPart)) { writer.WriteOpenXmlElement(new OpenXmlSpreadsheet.Worksheet()); if (worksheetData._rows != null) RowCollection.WriteSheetDimensionToWriter(writer, worksheetData.Worksheet); if (worksheetData._sheetViews != null) SheetViews.WriteSheetViewsToWriter(writer, worksheetData.SheetViews); if (worksheetData._format != null) WorksheetFormat.WriteWorksheetFormatToWriter(writer, worksheetData.Format); if (worksheetData._columns != null) ColumnCollection.WriteColumnsToWriter(writer, worksheetData.Columns); if (worksheetData._rows != null) RowCollection.WriteRowsToWriter(writer, worksheetData.Rows); // should probably store merge cells and hyperlinks in their own objects. Reference them from the cells MergeCell.WriteMergeCellsToWriter(writer, worksheetData.Worksheet); Hyperlink.WriteHyperlinksToWriter(writer, worksheetData.Worksheet); if (worksheetData._printOptions != null) PrintOptions.WritePrintOptionsToWriter(writer, worksheetData.PrintOptions); if (worksheetData._pageMargins != null) PageMargins.WritePageMarginsToWriter(writer, worksheetData.PageMargins); if (worksheetData._pageSetup != null) PageSetup.WritePageSetupToWriter(writer, worksheetData.PageSetup); if (worksheetData._headerFooter != null) HeaderFooter.WriteHeaderFooterToWriter(writer, worksheetData.HeaderFooter); if (worksheetData._drawing != null) Drawing.WriteDrawingToWorksheetWriter(writer, worksheetData.Drawing); writer.WriteEndElement(); // Worksheet } if (worksheetData._drawing != null) worksheetData.Drawing.Save(); }
/*********************************** * DAL METHODS ************************************/ // Read private static void ReadWorksheetDataFromWorksheetData(WorksheetData worksheetData) { OpenXmlSpreadsheet.Worksheet worksheetElement = Worksheet.GetWorksheetElementFromWorksheet(worksheetData.Worksheet); using (CustomOpenXmlReader reader = CustomOpenXmlReader.Create(worksheetElement)) { while (reader.Read()) { if (reader.IsStartElementOfType<OpenXmlSpreadsheet.SheetViews>()) worksheetData.SheetViews = SheetViews.ReadSheetViewsFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.SheetFormatProperties>()) worksheetData.Format = WorksheetFormat.ReadWorksheetFormatFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Columns>()) worksheetData.Columns = ColumnCollection.ReadColumnsFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.SheetData>()) worksheetData.Rows = RowCollection.ReadRowsFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.MergeCells>()) MergeCell.UpdateCellMergeCellsFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Hyperlinks>()) Hyperlink.UpdateCellHyperlinksFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.PrintOptions>()) worksheetData.PrintOptions = PrintOptions.ReadPrintOptionsFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.PageMargins>()) worksheetData.PageMargins = PageMargins.ReadPageMarginsFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.PageSetup>()) worksheetData.PageSetup = PageSetup.ReadPageSetupFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.HeaderFooter>()) worksheetData.HeaderFooter = HeaderFooter.ReadHeaderFooterFromReader(reader, worksheetData.Worksheet); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Drawing>()) worksheetData.Drawing = Drawing.ReadDrawingFromReader(reader, worksheetData.Worksheet); } } }