internal void LoadStylesheet() { countStyle = 0; listStyle = new List<string>(); dictStyleHash = new Dictionary<string, int>(); NumberFormatGeneralId = -1; NumberFormatGeneralText = SLConstants.NumberFormatGeneral; NextNumberFormatId = SLConstants.CustomNumberFormatIdStartIndex; dictStyleNumberingFormat = new Dictionary<int, string>(); dictStyleNumberingFormatHash = new Dictionary<string, int>(); countStyleFont = 0; listStyleFont = new List<string>(); dictStyleFontHash = new Dictionary<string, int>(); countStyleFill = 0; listStyleFill = new List<string>(); dictStyleFillHash = new Dictionary<string, int>(); countStyleBorder = 0; listStyleBorder = new List<string>(); dictStyleBorderHash = new Dictionary<string, int>(); countStyleCellStyle = 0; listStyleCellStyle = new List<string>(); dictStyleCellStyleHash = new Dictionary<string, int>(); countStyleCellStyleFormat = 0; listStyleCellStyleFormat = new List<string>(); dictStyleCellStyleFormatHash = new Dictionary<string, int>(); countStyleDifferentialFormat = 0; listStyleDifferentialFormat = new List<string>(); dictStyleDifferentialFormatHash = new Dictionary<string, int>(); countStyleTableStyle = 0; listStyleTableStyle = new List<string>(); dictStyleTableStyleHash = new Dictionary<string, int>(); int i = 0; string sHash = string.Empty; if (wbp.WorkbookStylesPart != null) { WorkbookStylesPart wbsp = wbp.WorkbookStylesPart; this.NextNumberFormatId = SLConstants.CustomNumberFormatIdStartIndex; this.StylesheetColors = null; using (OpenXmlReader oxr = OpenXmlReader.Create(wbsp)) { while (oxr.Read()) { if (oxr.ElementType == typeof(NumberingFormats)) { NumberingFormat nf; using (OpenXmlReader oxrNF = OpenXmlReader.Create((NumberingFormats)oxr.LoadCurrentElement())) { while (oxrNF.Read()) { if (oxrNF.ElementType == typeof(NumberingFormat)) { nf = (NumberingFormat)oxrNF.LoadCurrentElement(); if (nf.NumberFormatId != null && nf.FormatCode != null) { i = (int)nf.NumberFormatId.Value; sHash = nf.FormatCode.Value; dictStyleNumberingFormat[i] = sHash; dictStyleNumberingFormatHash[sHash] = i; if (sHash.Equals(SLConstants.NumberFormatGeneral, StringComparison.InvariantCultureIgnoreCase)) { this.NumberFormatGeneralText = sHash; this.NumberFormatGeneralId = i; } // if there's a number format greater than the next number, // obviously we want to increment. // if there's a current number equal to the next number, // we want to increment because this number exists! // Emphasis on *next* number if (i >= this.NextNumberFormatId) { this.NextNumberFormatId = this.NextNumberFormatId + 1; } } } } } } else if (oxr.ElementType == typeof(Fonts)) { SLFont fontSL; using (OpenXmlReader oxrFont = OpenXmlReader.Create((Fonts)oxr.LoadCurrentElement())) { while (oxrFont.Read()) { if (oxrFont.ElementType == typeof(Font)) { fontSL = new SLFont(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fontSL.FromFont((Font)oxrFont.LoadCurrentElement()); this.ForceSaveToStylesheetFont(fontSL.ToHash()); } } } countStyleFont = listStyleFont.Count; } else if (oxr.ElementType == typeof(Fills)) { SLFill fillSL; using (OpenXmlReader oxrFill = OpenXmlReader.Create((Fills)oxr.LoadCurrentElement())) { while (oxrFill.Read()) { if (oxrFill.ElementType == typeof(Fill)) { fillSL = new SLFill(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fillSL.FromFill((Fill)oxrFill.LoadCurrentElement()); this.ForceSaveToStylesheetFill(fillSL.ToHash()); } } } countStyleFill = listStyleFill.Count; } else if (oxr.ElementType == typeof(Borders)) { SLBorder borderSL; using (OpenXmlReader oxrBorder = OpenXmlReader.Create((Borders)oxr.LoadCurrentElement())) { while (oxrBorder.Read()) { if (oxrBorder.ElementType == typeof(Border)) { borderSL = new SLBorder(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); borderSL.FromBorder((Border)oxrBorder.LoadCurrentElement()); this.ForceSaveToStylesheetBorder(borderSL.ToHash()); } } } countStyleBorder = listStyleBorder.Count; } else if (oxr.ElementType == typeof(CellStyleFormats)) { SLStyle styleSL; using (OpenXmlReader oxrCellStyleFormats = OpenXmlReader.Create((CellStyleFormats)oxr.LoadCurrentElement())) { while (oxrCellStyleFormats.Read()) { if (oxrCellStyleFormats.ElementType == typeof(CellFormat)) { styleSL = new SLStyle(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); styleSL.FromCellFormat((CellFormat)oxrCellStyleFormats.LoadCurrentElement()); this.TranslateStyleIdsToStyles(ref styleSL); this.ForceSaveToStylesheetCellStylesFormat(styleSL.ToHash()); } } } countStyleCellStyleFormat = listStyleCellStyleFormat.Count; } else if (oxr.ElementType == typeof(CellFormats)) { SLStyle styleSL; using (OpenXmlReader oxrCellFormats = OpenXmlReader.Create((CellFormats)oxr.LoadCurrentElement())) { while (oxrCellFormats.Read()) { if (oxrCellFormats.ElementType == typeof(CellFormat)) { styleSL = new SLStyle(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); styleSL.FromCellFormat((CellFormat)oxrCellFormats.LoadCurrentElement()); this.TranslateStyleIdsToStyles(ref styleSL); this.ForceSaveToStylesheet(styleSL.ToHash()); } } } countStyle = listStyle.Count; } else if (oxr.ElementType == typeof(CellStyles)) { SLCellStyle csSL; using (OpenXmlReader oxrCellStyles = OpenXmlReader.Create((CellStyles)oxr.LoadCurrentElement())) { while (oxrCellStyles.Read()) { if (oxrCellStyles.ElementType == typeof(CellStyle)) { csSL = new SLCellStyle(); csSL.FromCellStyle((CellStyle)oxrCellStyles.LoadCurrentElement()); this.ForceSaveToStylesheetCellStyle(csSL.ToHash()); } } } countStyleCellStyle = listStyleCellStyle.Count; } else if (oxr.ElementType == typeof(DifferentialFormats)) { SLDifferentialFormat dfSL; using (OpenXmlReader oxrDiff = OpenXmlReader.Create((DifferentialFormats)oxr.LoadCurrentElement())) { while (oxrDiff.Read()) { if (oxrDiff.ElementType == typeof(DifferentialFormat)) { dfSL = new SLDifferentialFormat(); dfSL.FromDifferentialFormat((DifferentialFormat)oxrDiff.LoadCurrentElement()); this.ForceSaveToStylesheetDifferentialFormat(dfSL.ToHash()); } } } countStyleDifferentialFormat = listStyleDifferentialFormat.Count; } else if (oxr.ElementType == typeof(TableStyles)) { TableStyles tss = (TableStyles)oxr.LoadCurrentElement(); SLTableStyle tsSL; i = 0; using (OpenXmlReader oxrTableStyles = OpenXmlReader.Create(tss)) { while (oxrTableStyles.Read()) { if (oxrTableStyles.ElementType == typeof(TableStyle)) { tsSL = new SLTableStyle(); tsSL.FromTableStyle((TableStyle)oxrTableStyles.LoadCurrentElement()); sHash = tsSL.ToHash(); listStyleTableStyle.Add(sHash); dictStyleTableStyleHash[sHash] = i; ++i; } } } countStyleTableStyle = listStyleTableStyle.Count; if (tss.DefaultTableStyle != null) { this.TableStylesDefaultTableStyle = tss.DefaultTableStyle.Value; } else { this.TableStylesDefaultTableStyle = string.Empty; } if (tss.DefaultPivotStyle != null) { this.TableStylesDefaultPivotStyle = tss.DefaultPivotStyle.Value; } else { this.TableStylesDefaultPivotStyle = string.Empty; } } else if (oxr.ElementType == typeof(Colors)) { this.StylesheetColors = (Colors)(oxr.LoadCurrentElement().CloneNode(true)); } } } // Force a "General" number format to be saved. // Upper case is used by LibreOffice. Is it case insensitive? if (this.NumberFormatGeneralId < 0) { if (!dictStyleNumberingFormat.ContainsKey(0)) { this.NumberFormatGeneralId = 0; this.NumberFormatGeneralText = SLConstants.NumberFormatGeneral; dictStyleNumberingFormat[this.NumberFormatGeneralId] = this.NumberFormatGeneralText; dictStyleNumberingFormatHash[this.NumberFormatGeneralText] = this.NumberFormatGeneralId; } else { this.NumberFormatGeneralId = this.NextNumberFormatId; this.NumberFormatGeneralText = SLConstants.NumberFormatGeneral; dictStyleNumberingFormat[this.NumberFormatGeneralId] = this.NumberFormatGeneralText; dictStyleNumberingFormatHash[this.NumberFormatGeneralText] = this.NumberFormatGeneralId; ++this.NextNumberFormatId; } } if (listStyleFont.Count == 0) { SLFont fontSL = new SLFont(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fontSL.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); fontSL.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.SaveToStylesheetFont(fontSL.ToHash()); } if (listStyleFill.Count == 0) { SLFill fillNone = new SLFill(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fillNone.SetPatternType(PatternValues.None); this.SaveToStylesheetFill(fillNone.ToHash()); SLFill fillGray125 = new SLFill(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fillGray125.SetPatternType(PatternValues.Gray125); this.SaveToStylesheetFill(fillGray125.ToHash()); } else { // make sure there's at least a "none" pattern SLFill fillNone = new SLFill(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fillNone.SetPatternType(PatternValues.None); this.SaveToStylesheetFill(fillNone.ToHash()); } // make sure there's at least an empty border SLBorder borderEmpty = new SLBorder(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); this.SaveToStylesheetBorder(borderEmpty.ToHash()); int iCanonicalCellStyleFormatId = 0; SLStyle style = new SLStyle(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); style.FormatCode = this.NumberFormatGeneralText; style.fontReal.FromHash(listStyleFont[0]); style.Fill.SetPatternType(PatternValues.None); style.Border = new SLBorder(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); // there's at least one cell style format iCanonicalCellStyleFormatId = this.SaveToStylesheetCellStylesFormat(style.ToHash()); // there's at least one style style.CellStyleFormatId = (uint)iCanonicalCellStyleFormatId; this.SaveToStylesheet(style.ToHash()); if (listStyleCellStyle.Count == 0) { SLCellStyle csNormal = new SLCellStyle(); csNormal.Name = "Normal"; //csNormal.FormatId = 0; csNormal.FormatId = (uint)iCanonicalCellStyleFormatId; csNormal.BuiltinId = 0; this.SaveToStylesheetCellStyle(csNormal.ToHash()); } } else { // no numbering format by default this.NextNumberFormatId = SLConstants.CustomNumberFormatIdStartIndex; this.NumberFormatGeneralId = 0; this.NumberFormatGeneralText = SLConstants.NumberFormatGeneral; dictStyleNumberingFormat[this.NumberFormatGeneralId] = this.NumberFormatGeneralText; dictStyleNumberingFormatHash[this.NumberFormatGeneralText] = this.NumberFormatGeneralId; SLFont fontDefault = new SLFont(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fontDefault.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); fontDefault.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.SaveToStylesheetFont(fontDefault.ToHash()); SLFill fillNone = new SLFill(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fillNone.SetPatternType(PatternValues.None); this.SaveToStylesheetFill(fillNone.ToHash()); SLFill fillGray125 = new SLFill(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); fillGray125.SetPatternType(PatternValues.Gray125); this.SaveToStylesheetFill(fillGray125.ToHash()); SLBorder borderEmpty = new SLBorder(SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); this.SaveToStylesheetBorder(borderEmpty.ToHash()); int iCanonicalCellStyleFormatId = 0; SLStyle style = new SLStyle(SimpleTheme.MajorLatinFont, SimpleTheme.MinorLatinFont, SimpleTheme.listThemeColors, SimpleTheme.listIndexedColors); style.FormatCode = this.NumberFormatGeneralText; style.Font = fontDefault; style.Fill = fillNone; style.Border = borderEmpty; iCanonicalCellStyleFormatId = this.SaveToStylesheetCellStylesFormat(style.ToHash()); style.CellStyleFormatId = (uint)iCanonicalCellStyleFormatId; this.SaveToStylesheet(style.ToHash()); SLCellStyle csNormal = new SLCellStyle(); csNormal.Name = "Normal"; //csNormal.FormatId = 0; csNormal.FormatId = (uint)iCanonicalCellStyleFormatId; csNormal.BuiltinId = 0; this.SaveToStylesheetCellStyle(csNormal.ToHash()); this.TableStylesDefaultTableStyle = SLConstants.DefaultTableStyle; this.TableStylesDefaultPivotStyle = SLConstants.DefaultPivotStyle; } }
/// <summary> /// Apply a named cell style. Existing styles are kept, unless the chosen named cell style overrides those styles. /// </summary> /// <param name="NamedCellStyle">The named cell style to be applied.</param> public void ApplyNamedCellStyle(SLNamedCellStyleValues NamedCellStyle) { SLFont font; SLFill fill; SLBorder border; switch (NamedCellStyle) { case SLNamedCellStyleValues.Normal: RemoveFormatCode(); font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); this.Font = font; RemoveFill(); RemoveBorder(); // normal is the only one that removes alignment RemoveAlignment(); break; case SLNamedCellStyleValues.Bad: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0x9C, 0, 0x06); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xFF, 0xC7, 0xCE)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Good: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0, 0x61, 0); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xC6, 0xEF, 0xCE)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Neutral: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0x9C, 0x65, 0); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xFF, 0xEB, 0x9C)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Calculation: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Bold = true; font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0xFA, 0x7D, 0); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xF2, 0xF2, 0xF2)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.LeftBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.LeftBorder.BorderStyle = BorderStyleValues.Thin; border.RightBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.RightBorder.BorderStyle = BorderStyleValues.Thin; border.TopBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.TopBorder.BorderStyle = BorderStyleValues.Thin; border.BottomBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.BottomBorder.BorderStyle = BorderStyleValues.Thin; this.Border = border; break; case SLNamedCellStyleValues.CheckCell: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xA5, 0xA5, 0xA5)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.LeftBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.LeftBorder.BorderStyle = BorderStyleValues.Double; border.RightBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.RightBorder.BorderStyle = BorderStyleValues.Double; border.TopBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.TopBorder.BorderStyle = BorderStyleValues.Double; border.BottomBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.BottomBorder.BorderStyle = BorderStyleValues.Double; this.Border = border; break; case SLNamedCellStyleValues.ExplanatoryText: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Italic = true; font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); this.Font = font; // no change to fill // no change to border break; case SLNamedCellStyleValues.Input: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x76); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xFF, 0xCC, 0x99)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.LeftBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.LeftBorder.BorderStyle = BorderStyleValues.Thin; border.RightBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.RightBorder.BorderStyle = BorderStyleValues.Thin; border.TopBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.TopBorder.BorderStyle = BorderStyleValues.Thin; border.BottomBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x7F, 0x7F, 0x7F); border.BottomBorder.BorderStyle = BorderStyleValues.Thin; this.Border = border; break; case SLNamedCellStyleValues.LinkedCell: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0xFA, 0x7D, 0); this.Font = font; // no change to fill border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.BottomBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0xFF, 0x80, 0x01); border.BottomBorder.BorderStyle = BorderStyleValues.Double; this.Border = border; break; case SLNamedCellStyleValues.Note: // no change to format code // Note doesn't change font or font size fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xFF, 0xFF, 0xCC)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.LeftBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0xB2, 0xB2, 0xB2); border.LeftBorder.BorderStyle = BorderStyleValues.Thin; border.RightBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0xB2, 0xB2, 0xB2); border.RightBorder.BorderStyle = BorderStyleValues.Thin; border.TopBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0xB2, 0xB2, 0xB2); border.TopBorder.BorderStyle = BorderStyleValues.Thin; border.BottomBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0xB2, 0xB2, 0xB2); border.BottomBorder.BorderStyle = BorderStyleValues.Thin; this.Border = border; break; case SLNamedCellStyleValues.Output: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Bold = true; font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(System.Drawing.Color.FromArgb(0xFF, 0xF2, 0xF2, 0xF2)); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.LeftBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.LeftBorder.BorderStyle = BorderStyleValues.Thin; border.RightBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.RightBorder.BorderStyle = BorderStyleValues.Thin; border.TopBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.TopBorder.BorderStyle = BorderStyleValues.Thin; border.BottomBorder.Color = System.Drawing.Color.FromArgb(0xFF, 0x3F, 0x3F, 0x3F); border.BottomBorder.BorderStyle = BorderStyleValues.Thin; this.Border = border; break; case SLNamedCellStyleValues.WarningText: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.FontColor = System.Drawing.Color.FromArgb(0xFF, 0xFF, 0, 0); this.Font = font; // no change to fill // no change to border break; case SLNamedCellStyleValues.Heading1: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.Heading1FontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Dark2Color); this.Font = font; // no change to fill border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.BottomBorder.SetBorderThemeColor(SLThemeColorIndexValues.Accent1Color); border.BottomBorder.BorderStyle = BorderStyleValues.Thick; this.Border = border; break; case SLNamedCellStyleValues.Heading2: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.Heading2FontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Dark2Color); this.Font = font; // no change to fill border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.BottomBorder.SetBorderThemeColor(SLThemeColorIndexValues.Accent1Color, 0.499984740745262); border.BottomBorder.BorderStyle = BorderStyleValues.Thick; this.Border = border; break; case SLNamedCellStyleValues.Heading3: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Dark2Color); this.Font = font; // no change to fill border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.BottomBorder.SetBorderThemeColor(SLThemeColorIndexValues.Accent1Color, 0.399975585192419); border.BottomBorder.BorderStyle = BorderStyleValues.Medium; this.Border = border; break; case SLNamedCellStyleValues.Heading4: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Dark2Color); this.Font = font; // no change to fill // no change to border break; case SLNamedCellStyleValues.Title: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Major, SLConstants.TitleFontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Dark2Color); this.Font = font; // no change to fill // no change to border break; case SLNamedCellStyleValues.Total: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.Bold = true; font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; // no change to fill border = new SLBorder(this.listThemeColors, this.listIndexedColors); border.TopBorder.SetBorderThemeColor(SLThemeColorIndexValues.Accent1Color); border.TopBorder.BorderStyle = BorderStyleValues.Thin; border.BottomBorder.SetBorderThemeColor(SLThemeColorIndexValues.Accent1Color); border.BottomBorder.BorderStyle = BorderStyleValues.Double; this.Border = border; break; case SLNamedCellStyleValues.Accent1: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent1Color); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent1Percentage20: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent1Color, 0.799981688894314); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent1Percentage40: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent1Color, 0.599993896298105); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent1Percentage60: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent1Color, 0.399975585192419); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent2: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent2Color); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent2Percentage20: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent2Color, 0.799981688894314); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent2Percentage40: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent2Color, 0.599993896298105); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent2Percentage60: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent2Color, 0.399975585192419); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent3: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent3Color); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent3Percentage20: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent3Color, 0.799981688894314); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent3Percentage40: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent3Color, 0.599993896298105); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent3Percentage60: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent3Color, 0.399975585192419); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent4: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent4Color); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent4Percentage20: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent4Color, 0.799981688894314); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent4Percentage40: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent4Color, 0.599993896298105); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent4Percentage60: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent4Color, 0.399975585192419); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent5: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent5Color); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent5Percentage20: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent5Color, 0.799981688894314); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent5Percentage40: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent5Color, 0.599993896298105); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent5Percentage60: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent5Color, 0.399975585192419); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent6: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent6Color); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent6Percentage20: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent6Color, 0.799981688894314); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent6Percentage40: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Dark1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent6Color, 0.599993896298105); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Accent6Percentage60: // no change to format code font = new SLFont(this.MajorFont, this.MinorFont, this.listThemeColors, this.listIndexedColors); font.SetFont(FontSchemeValues.Minor, SLConstants.DefaultFontSize); font.SetFontThemeColor(SLThemeColorIndexValues.Light1Color); this.Font = font; fill = new SLFill(this.listThemeColors, this.listIndexedColors); fill.SetPatternForegroundColor(SLThemeColorIndexValues.Accent6Color, 0.399975585192419); fill.SetPatternType(PatternValues.Solid); this.Fill = fill; // no change to border break; case SLNamedCellStyleValues.Comma: this.FormatCode = "_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)"; // not using the "builtin" format ID //this.nfFormatCode.NumberFormatId = 43; // the font, fill and border are not changed // TODO get "actual" comma character from regional settings? break; case SLNamedCellStyleValues.Comma0: this.FormatCode = "_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)"; // not using the "builtin" format ID //this.nfFormatCode.NumberFormatId = 41; // the font, fill and border are not changed // TODO get "actual" comma character from regional settings? break; case SLNamedCellStyleValues.Currency: this.FormatCode = "_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)"; // not using the "builtin" format ID //this.nfFormatCode.NumberFormatId = 44; // the font, fill and border are not changed // TODO get "actual" currency character from regional settings? break; case SLNamedCellStyleValues.Currency0: this.FormatCode = "_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)"; // not using the "builtin" format ID //this.nfFormatCode.NumberFormatId = 42; // the font, fill and border are not changed // TODO get "actual" currency character from regional settings? break; case SLNamedCellStyleValues.Percentage: this.FormatCode = "0%"; // not using the "builtin" format ID //this.nfFormatCode.NumberFormatId = 9; // the font, fill and border are not changed break; } }