// convert grid styles into excel styles static XLStyle GetXLStyle(C1FlexGrid flex, XLSheet sheet, ExcelCellStyle s) { // look it up in the cache XLStyle x; if (_excelStyles.TryGetValue(s, out x)) { return x; } // not found, create style now x = new XLStyle(sheet.Book); // alignment if (s.HorizontalAlignment.HasValue) { switch (s.HorizontalAlignment.Value) { case HorizontalAlignment.Left: x.AlignHorz = XLAlignHorzEnum.Left; break; case HorizontalAlignment.Center: x.AlignHorz = XLAlignHorzEnum.Center; break; case HorizontalAlignment.Right: x.AlignHorz = XLAlignHorzEnum.Right; break; } } if (s.VerticalAlignment.HasValue) { switch (s.VerticalAlignment.Value) { case VerticalAlignment.Top: x.AlignVert = XLAlignVertEnum.Top; break; case VerticalAlignment.Center: x.AlignVert = XLAlignVertEnum.Center; break; case VerticalAlignment.Bottom: x.AlignVert = XLAlignVertEnum.Bottom; break; } } if (s.TextWrapping.HasValue) { x.WordWrap = s.TextWrapping.Value; } // colors if (s.Background is SolidColorBrush) { x.BackColor = ((SolidColorBrush)s.Background).Color; x.BackPattern = XLPatternEnum.Solid; } if (s.Foreground is SolidColorBrush) { x.ForeColor = ((SolidColorBrush)s.Foreground).Color; } // font var fontName = flex.FontFamily.Source; var fontSize = flex.FontSize; var bold = false; var italic = false; bool underline = false; bool hasFont = false; if (s.FontFamily != null) { fontName = s.FontFamily.Source; hasFont = true; } if (s.FontSize.HasValue) { fontSize = s.FontSize.Value; hasFont = true; } if (s.FontWeight.HasValue) { bold = s.FontWeight.Value == FontWeights.Bold || s.FontWeight.Value == FontWeights.ExtraBold || s.FontWeight.Value == FontWeights.SemiBold; hasFont = true; } if (s.FontStyle.HasValue) { italic = s.FontStyle.Value == FontStyles.Italic; hasFont = true; } if (s.TextDecorations != null) { underline = true; hasFont = true; } if (hasFont) { fontSize = PixelsToPoints(fontSize); if (underline) { var color = Colors.Black; if (flex.Foreground is SolidColorBrush) { color = ((SolidColorBrush)flex.Foreground).Color; } if (s.Foreground is SolidColorBrush) { color = ((SolidColorBrush)s.Foreground).Color; } x.Font = new XLFont(fontName, (float)fontSize, bold, italic, false, XLFontScript.None, XLUnderlineStyle.Single, color); } else { x.Font = new XLFont(fontName, (float)fontSize, bold, italic); } } // format if (!string.IsNullOrEmpty(s.Format)) { x.Format = XLStyle.FormatDotNetToXL(s.Format); } // borders if (s.CellBorderThickness.Left > 0 && s.CellBorderBrushLeft is SolidColorBrush) { x.BorderLeft = GetBorderLineStyle(s.CellBorderThickness.Left); x.BorderColorLeft = ((SolidColorBrush)s.CellBorderBrushLeft).Color; } if (s.CellBorderThickness.Top > 0 && s.CellBorderBrushTop is SolidColorBrush) { x.BorderTop = GetBorderLineStyle(s.CellBorderThickness.Top); x.BorderColorTop = ((SolidColorBrush)s.CellBorderBrushTop).Color; } if (s.CellBorderThickness.Right > 0 && s.CellBorderBrushRight is SolidColorBrush) { x.BorderRight = GetBorderLineStyle(s.CellBorderThickness.Right); x.BorderColorRight = ((SolidColorBrush)s.CellBorderBrushRight).Color; } if (s.CellBorderThickness.Bottom > 0 && s.CellBorderBrushBottom is SolidColorBrush) { x.BorderBottom = GetBorderLineStyle(s.CellBorderThickness.Bottom); x.BorderColorBottom = ((SolidColorBrush)s.CellBorderBrushBottom).Color; } // save in cache and return _excelStyles[s] = x; return x; }
// convert grid styles into excel styles static XLStyle GetXLStyle(C1FlexGrid flex, XLSheet sheet, ExcelCellStyle s) { // look it up in the cache XLStyle x; if (_excelStyles.TryGetValue(s, out x)) { return(x); } // not found, create style now x = new XLStyle(sheet.Book); // alignment if (s.HorizontalAlignment.HasValue) { switch (s.HorizontalAlignment.Value) { case HorizontalAlignment.Left: x.AlignHorz = XLAlignHorzEnum.Left; break; case HorizontalAlignment.Center: x.AlignHorz = XLAlignHorzEnum.Center; break; case HorizontalAlignment.Right: x.AlignHorz = XLAlignHorzEnum.Right; break; } } if (s.VerticalAlignment.HasValue) { switch (s.VerticalAlignment.Value) { case VerticalAlignment.Top: x.AlignVert = XLAlignVertEnum.Top; break; case VerticalAlignment.Center: x.AlignVert = XLAlignVertEnum.Center; break; case VerticalAlignment.Bottom: x.AlignVert = XLAlignVertEnum.Bottom; break; } } if (s.TextWrapping.HasValue) { x.WordWrap = s.TextWrapping.Value; } // colors if (s.Background is SolidColorBrush) { x.BackColor = ((SolidColorBrush)s.Background).Color; x.BackPattern = XLPatternEnum.Solid; } if (s.Foreground is SolidColorBrush) { x.ForeColor = ((SolidColorBrush)s.Foreground).Color; } // font var fontName = flex.FontFamily.Source; var fontSize = flex.FontSize; var bold = false; var italic = false; bool underline = false; bool hasFont = false; if (s.FontFamily != null) { fontName = s.FontFamily.Source; hasFont = true; } if (s.FontSize.HasValue) { fontSize = s.FontSize.Value; hasFont = true; } if (s.FontWeight.HasValue) { bold = s.FontWeight.Value == FontWeights.Bold || s.FontWeight.Value == FontWeights.ExtraBold || s.FontWeight.Value == FontWeights.SemiBold; hasFont = true; } if (s.FontStyle.HasValue) { italic = s.FontStyle.Value == FontStyles.Italic; hasFont = true; } if (s.TextDecorations != null) { underline = true; hasFont = true; } if (hasFont) { fontSize = PixelsToPoints(fontSize); if (underline) { var color = Colors.Black; if (flex.Foreground is SolidColorBrush) { color = ((SolidColorBrush)flex.Foreground).Color; } if (s.Foreground is SolidColorBrush) { color = ((SolidColorBrush)s.Foreground).Color; } x.Font = new XLFont(fontName, (float)fontSize, bold, italic, false, XLFontScript.None, XLUnderlineStyle.Single, color); } else { x.Font = new XLFont(fontName, (float)fontSize, bold, italic); } } // format if (!string.IsNullOrEmpty(s.Format)) { x.Format = XLStyle.FormatDotNetToXL(s.Format); } // borders if (s.CellBorderThickness.Left > 0 && s.CellBorderBrushLeft is SolidColorBrush) { x.BorderLeft = GetBorderLineStyle(s.CellBorderThickness.Left); x.BorderColorLeft = ((SolidColorBrush)s.CellBorderBrushLeft).Color; } if (s.CellBorderThickness.Top > 0 && s.CellBorderBrushTop is SolidColorBrush) { x.BorderTop = GetBorderLineStyle(s.CellBorderThickness.Top); x.BorderColorTop = ((SolidColorBrush)s.CellBorderBrushTop).Color; } if (s.CellBorderThickness.Right > 0 && s.CellBorderBrushRight is SolidColorBrush) { x.BorderRight = GetBorderLineStyle(s.CellBorderThickness.Right); x.BorderColorRight = ((SolidColorBrush)s.CellBorderBrushRight).Color; } if (s.CellBorderThickness.Bottom > 0 && s.CellBorderBrushBottom is SolidColorBrush) { x.BorderBottom = GetBorderLineStyle(s.CellBorderThickness.Bottom); x.BorderColorBottom = ((SolidColorBrush)s.CellBorderBrushBottom).Color; } // save in cache and return _excelStyles[s] = x; return(x); }
// convert excel styles into grid styles static ExcelCellStyle GetCellStyle(XLStyle x) { // look it up in the cache ExcelCellStyle s; if (_cellStyles.TryGetValue(x, out s)) { return s; } // not found, create style now s = new ExcelCellStyle(); // alignment switch (x.AlignHorz) { case XLAlignHorzEnum.Left: s.HorizontalAlignment = HorizontalAlignment.Left; break; case XLAlignHorzEnum.Center: s.HorizontalAlignment = HorizontalAlignment.Center; break; case XLAlignHorzEnum.Right: s.HorizontalAlignment = HorizontalAlignment.Right; break; } switch (x.AlignVert) { case XLAlignVertEnum.Top: s.VerticalAlignment = VerticalAlignment.Top; break; case XLAlignVertEnum.Center: s.VerticalAlignment = VerticalAlignment.Center; break; case XLAlignVertEnum.Bottom: s.VerticalAlignment = VerticalAlignment.Bottom; break; } s.TextWrapping = x.WordWrap; // colors if (x.BackPattern == XLPatternEnum.Solid && IsColorValid(x.BackColor)) { s.Background = new SolidColorBrush(x.BackColor); } if (IsColorValid(x.ForeColor)) { s.Foreground = new SolidColorBrush(x.ForeColor); } // font var font = x.Font; if (font != null) { s.FontFamily = new FontFamily(font.FontName); s.FontSize = PointsToPixels(font.FontSize); if (font.Bold) { s.FontWeight = FontWeights.Bold; } if (font.Italic) { s.FontStyle = FontStyles.Italic; } if (font.Underline != XLUnderlineStyle.None) { s.TextDecorations = TextDecorations.Underline; } } // format if (!string.IsNullOrEmpty(x.Format)) { s.Format = XLStyle.FormatXLToDotNet(x.Format); } // borders s.CellBorderThickness = new Thickness( GetBorderThickness(x.BorderLeft), GetBorderThickness(x.BorderTop), GetBorderThickness(x.BorderRight), GetBorderThickness(x.BorderBottom)); s.CellBorderBrushLeft = GetBorderBrush(x.BorderColorLeft); s.CellBorderBrushTop = GetBorderBrush(x.BorderColorTop); s.CellBorderBrushRight = GetBorderBrush(x.BorderColorRight); s.CellBorderBrushBottom = GetBorderBrush(x.BorderColorBottom); // save in cache and return _cellStyles[x] = s; return s; }
// convert excel styles into grid styles static ExcelCellStyle GetCellStyle(XLStyle x) { // look it up in the cache ExcelCellStyle s; if (_cellStyles.TryGetValue(x, out s)) { return(s); } // not found, create style now s = new ExcelCellStyle(); // alignment switch (x.AlignHorz) { case XLAlignHorzEnum.Left: s.HorizontalAlignment = HorizontalAlignment.Left; break; case XLAlignHorzEnum.Center: s.HorizontalAlignment = HorizontalAlignment.Center; break; case XLAlignHorzEnum.Right: s.HorizontalAlignment = HorizontalAlignment.Right; break; } switch (x.AlignVert) { case XLAlignVertEnum.Top: s.VerticalAlignment = VerticalAlignment.Top; break; case XLAlignVertEnum.Center: s.VerticalAlignment = VerticalAlignment.Center; break; case XLAlignVertEnum.Bottom: s.VerticalAlignment = VerticalAlignment.Bottom; break; } s.TextWrapping = x.WordWrap; // colors if (x.BackPattern == XLPatternEnum.Solid && IsColorValid(x.BackColor)) { s.Background = new SolidColorBrush(x.BackColor); } if (IsColorValid(x.ForeColor)) { s.Foreground = new SolidColorBrush(x.ForeColor); } // font var font = x.Font; if (font != null) { s.FontFamily = new FontFamily(font.FontName); s.FontSize = PointsToPixels(font.FontSize); if (font.Bold) { s.FontWeight = FontWeights.Bold; } if (font.Italic) { s.FontStyle = FontStyles.Italic; } if (font.Underline != XLUnderlineStyle.None) { s.TextDecorations = TextDecorations.Underline; } } // format if (!string.IsNullOrEmpty(x.Format)) { s.Format = XLStyle.FormatXLToDotNet(x.Format); } // borders s.CellBorderThickness = new Thickness( GetBorderThickness(x.BorderLeft), GetBorderThickness(x.BorderTop), GetBorderThickness(x.BorderRight), GetBorderThickness(x.BorderBottom)); s.CellBorderBrushLeft = GetBorderBrush(x.BorderColorLeft); s.CellBorderBrushTop = GetBorderBrush(x.BorderColorTop); s.CellBorderBrushRight = GetBorderBrush(x.BorderColorRight); s.CellBorderBrushBottom = GetBorderBrush(x.BorderColorBottom); // save in cache and return _cellStyles[x] = s; return(s); }