private static void WriteStylesToWriter(CustomOpenXmlWriter<OpenXmlPackaging.WorkbookStylesPart> writer, Styles styles) { writer.WriteOpenXmlElement(new OpenXmlSpreadsheet.Stylesheet()); if (styles._numberFormats != null) NumberFormatCollection.WriteNumberFormatsToWriter(writer, styles.NumberFormats); if (styles._fonts != null) FontCollection.WriteFontsToWriter(writer, styles.Fonts); if (styles._fills != null) FillCollection.WriteFillsToWriter(writer, styles.Fills); if (styles._borders != null) BordersCollection.WriteBordersToWriter(writer, styles.Borders); if (styles._cellFormats != null) CellFormatCollection.WriteCellFormatsToWriter(writer, styles.CellFormats); if (styles.IndexedColors != null) Color.WriteIndexedColorsToWriter(writer, styles.IndexedColors); writer.WriteEndElement(); // Stylesheet }
/*********************************** * DAL METHODS ************************************/ // Read private static void ReadStylesFromStyles(Styles styles) { OpenXmlSpreadsheet.Stylesheet stylesheet = styles.Workbook.Document.WorkbookPart.WorkbookStylesPart.Stylesheet; using (CustomOpenXmlReader reader = CustomOpenXmlReader.Create(stylesheet)) { while (reader.ReadToEndElement<OpenXmlSpreadsheet.Stylesheet>()) { if (reader.IsStartElementOfType<OpenXmlSpreadsheet.NumberingFormats>()) styles.NumberFormats = NumberFormatCollection.ReadNumberFormatsFromReader(reader, styles); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Fonts>()) styles.Fonts = FontCollection.ReadFontsFromReader(reader, styles); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Fills>()) styles.Fills = FillCollection.ReadFillsFromReader(reader, styles); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Borders>()) styles.Borders = BordersCollection.ReadBordersCollectionFromReader(reader, styles); // not sure if required. //else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.CellStyleFormats>()) //cellStyleFormats = CellFormatCollection.ReadCellStyleFormatsFromReader(reader, styles); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.CellFormats>()) styles.CellFormats = CellFormatCollection.ReadCellFormatsFromReader(reader, styles); else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Colors>()) { while (reader.ReadToEndElement<OpenXmlSpreadsheet.Colors>()) { if (reader.IsStartElementOfType<OpenXmlSpreadsheet.IndexedColors>()) styles.IndexedColors = Color.ReadIndexedColorsFromReader(reader); } } } } }
// Write private static void SaveStyles(Styles styles) { using (CustomOpenXmlWriter<OpenXmlPackaging.WorkbookStylesPart> writer = new CustomOpenXmlWriter<OpenXmlPackaging.WorkbookStylesPart>(styles.Workbook.Document.WorkbookPart.WorkbookStylesPart) ) { Styles.WriteStylesToWriter(writer, styles); } }