private static void AddNewGridColumn(OpenXmlElement tableGrid, OpenXmlElement headerRow, OpenXmlElement contentRow) { var columns = tableGrid.Descendants <OXD.GridColumn>().ToList(); if (columns.Count == 0 || !columns.Any()) { return; } var headerLastCell = headerRow.Descendants <OXD.TableCell>().Last(); var contentLastCell = contentRow.Descendants <OXD.TableCell>().Last(); double tableWidth = columns.Sum(_ => Convert.ToInt32(_.Width.Value)); var newColWidth = Math.Floor(tableWidth / columns.Count); foreach (var col in columns) { col.Width = col.Width > 0 ? Convert.ToInt64(Math.Floor((tableWidth - newColWidth) / (tableWidth / col.Width))) : 0; } OXD.GridColumn newcol = new OXD.GridColumn() { Width = Convert.ToInt64(newColWidth) }; OXD.ExtensionList init_extlst = newcol.Descendants <OXD.ExtensionList>().FirstOrDefault(); if (init_extlst != null) { OXD.Extension init_ext = init_extlst.Descendants <OXD.Extension>().FirstOrDefault(); OpenXmlUnknownElement init_colId = init_ext?.GetFirstChild <OpenXmlUnknownElement>(); OpenXmlUnknownElement new_colId = init_colId?.CloneNode(true) as OpenXmlUnknownElement; if (new_colId != null) { OpenXmlAttribute val = new_colId.GetAttributes().FirstOrDefault(); val.Value = new Random().Next().ToString(); new_colId.SetAttribute(val); init_ext.ReplaceChild(new_colId, init_colId); } } tableGrid.InsertAfter(newcol, columns.Last()); headerRow.InsertAfter((OXD.TableCell)headerLastCell.CloneNode(true), headerLastCell); contentRow.InsertAfter((OXD.TableCell)contentLastCell.CloneNode(true), contentLastCell); }
// Generates content of themePart1. private void GenerateThemePart1Content(ThemePart themePart1) { A.Theme theme1 = new A.Theme() { Name = "Office Theme" }; theme1.AddNamespaceDeclaration("a", "http://schemas.openxmlformats.org/drawingml/2006/main"); A.ThemeElements themeElements1 = new A.ThemeElements(); A.ColorScheme colorScheme1 = new A.ColorScheme() { Name = "Office" }; A.Dark1Color dark1Color1 = new A.Dark1Color(); A.SystemColor systemColor1 = new A.SystemColor() { Val = A.SystemColorValues.WindowText, LastColor = "000000" }; dark1Color1.Append(systemColor1); A.Light1Color light1Color1 = new A.Light1Color(); A.SystemColor systemColor2 = new A.SystemColor() { Val = A.SystemColorValues.Window, LastColor = "FFFFFF" }; light1Color1.Append(systemColor2); A.Dark2Color dark2Color1 = new A.Dark2Color(); A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex() { Val = "44546A" }; dark2Color1.Append(rgbColorModelHex1); A.Light2Color light2Color1 = new A.Light2Color(); A.RgbColorModelHex rgbColorModelHex2 = new A.RgbColorModelHex() { Val = "E7E6E6" }; light2Color1.Append(rgbColorModelHex2); A.Accent1Color accent1Color1 = new A.Accent1Color(); A.RgbColorModelHex rgbColorModelHex3 = new A.RgbColorModelHex() { Val = "5B9BD5" }; accent1Color1.Append(rgbColorModelHex3); A.Accent2Color accent2Color1 = new A.Accent2Color(); A.RgbColorModelHex rgbColorModelHex4 = new A.RgbColorModelHex() { Val = "ED7D31" }; accent2Color1.Append(rgbColorModelHex4); A.Accent3Color accent3Color1 = new A.Accent3Color(); A.RgbColorModelHex rgbColorModelHex5 = new A.RgbColorModelHex() { Val = "A5A5A5" }; accent3Color1.Append(rgbColorModelHex5); A.Accent4Color accent4Color1 = new A.Accent4Color(); A.RgbColorModelHex rgbColorModelHex6 = new A.RgbColorModelHex() { Val = "FFC000" }; accent4Color1.Append(rgbColorModelHex6); A.Accent5Color accent5Color1 = new A.Accent5Color(); A.RgbColorModelHex rgbColorModelHex7 = new A.RgbColorModelHex() { Val = "4472C4" }; accent5Color1.Append(rgbColorModelHex7); A.Accent6Color accent6Color1 = new A.Accent6Color(); A.RgbColorModelHex rgbColorModelHex8 = new A.RgbColorModelHex() { Val = "70AD47" }; accent6Color1.Append(rgbColorModelHex8); A.Hyperlink hyperlink1 = new A.Hyperlink(); A.RgbColorModelHex rgbColorModelHex9 = new A.RgbColorModelHex() { Val = "0563C1" }; hyperlink1.Append(rgbColorModelHex9); A.FollowedHyperlinkColor followedHyperlinkColor1 = new A.FollowedHyperlinkColor(); A.RgbColorModelHex rgbColorModelHex10 = new A.RgbColorModelHex() { Val = "954F72" }; followedHyperlinkColor1.Append(rgbColorModelHex10); colorScheme1.Append(dark1Color1); colorScheme1.Append(light1Color1); colorScheme1.Append(dark2Color1); colorScheme1.Append(light2Color1); colorScheme1.Append(accent1Color1); colorScheme1.Append(accent2Color1); colorScheme1.Append(accent3Color1); colorScheme1.Append(accent4Color1); colorScheme1.Append(accent5Color1); colorScheme1.Append(accent6Color1); colorScheme1.Append(hyperlink1); colorScheme1.Append(followedHyperlinkColor1); A.FontScheme fontScheme1 = new A.FontScheme() { Name = "Office" }; A.MajorFont majorFont1 = new A.MajorFont(); A.LatinFont latinFont1 = new A.LatinFont() { Typeface = "Calibri Light", Panose = "020F0302020204030204" }; A.EastAsianFont eastAsianFont1 = new A.EastAsianFont() { Typeface = "" }; A.ComplexScriptFont complexScriptFont1 = new A.ComplexScriptFont() { Typeface = "" }; A.SupplementalFont supplementalFont1 = new A.SupplementalFont() { Script = "Jpan", Typeface = "MS ゴシック" }; A.SupplementalFont supplementalFont2 = new A.SupplementalFont() { Script = "Hang", Typeface = "맑은 고딕" }; A.SupplementalFont supplementalFont3 = new A.SupplementalFont() { Script = "Hans", Typeface = "宋体" }; A.SupplementalFont supplementalFont4 = new A.SupplementalFont() { Script = "Hant", Typeface = "新細明體" }; A.SupplementalFont supplementalFont5 = new A.SupplementalFont() { Script = "Arab", Typeface = "Times New Roman" }; A.SupplementalFont supplementalFont6 = new A.SupplementalFont() { Script = "Hebr", Typeface = "Times New Roman" }; A.SupplementalFont supplementalFont7 = new A.SupplementalFont() { Script = "Thai", Typeface = "Angsana New" }; A.SupplementalFont supplementalFont8 = new A.SupplementalFont() { Script = "Ethi", Typeface = "Nyala" }; A.SupplementalFont supplementalFont9 = new A.SupplementalFont() { Script = "Beng", Typeface = "Vrinda" }; A.SupplementalFont supplementalFont10 = new A.SupplementalFont() { Script = "Gujr", Typeface = "Shruti" }; A.SupplementalFont supplementalFont11 = new A.SupplementalFont() { Script = "Khmr", Typeface = "MoolBoran" }; A.SupplementalFont supplementalFont12 = new A.SupplementalFont() { Script = "Knda", Typeface = "Tunga" }; A.SupplementalFont supplementalFont13 = new A.SupplementalFont() { Script = "Guru", Typeface = "Raavi" }; A.SupplementalFont supplementalFont14 = new A.SupplementalFont() { Script = "Cans", Typeface = "Euphemia" }; A.SupplementalFont supplementalFont15 = new A.SupplementalFont() { Script = "Cher", Typeface = "Plantagenet Cherokee" }; A.SupplementalFont supplementalFont16 = new A.SupplementalFont() { Script = "Yiii", Typeface = "Microsoft Yi Baiti" }; A.SupplementalFont supplementalFont17 = new A.SupplementalFont() { Script = "Tibt", Typeface = "Microsoft Himalaya" }; A.SupplementalFont supplementalFont18 = new A.SupplementalFont() { Script = "Thaa", Typeface = "MV Boli" }; A.SupplementalFont supplementalFont19 = new A.SupplementalFont() { Script = "Deva", Typeface = "Mangal" }; A.SupplementalFont supplementalFont20 = new A.SupplementalFont() { Script = "Telu", Typeface = "Gautami" }; A.SupplementalFont supplementalFont21 = new A.SupplementalFont() { Script = "Taml", Typeface = "Latha" }; A.SupplementalFont supplementalFont22 = new A.SupplementalFont() { Script = "Syrc", Typeface = "Estrangelo Edessa" }; A.SupplementalFont supplementalFont23 = new A.SupplementalFont() { Script = "Orya", Typeface = "Kalinga" }; A.SupplementalFont supplementalFont24 = new A.SupplementalFont() { Script = "Mlym", Typeface = "Kartika" }; A.SupplementalFont supplementalFont25 = new A.SupplementalFont() { Script = "Laoo", Typeface = "DokChampa" }; A.SupplementalFont supplementalFont26 = new A.SupplementalFont() { Script = "Sinh", Typeface = "Iskoola Pota" }; A.SupplementalFont supplementalFont27 = new A.SupplementalFont() { Script = "Mong", Typeface = "Mongolian Baiti" }; A.SupplementalFont supplementalFont28 = new A.SupplementalFont() { Script = "Viet", Typeface = "Times New Roman" }; A.SupplementalFont supplementalFont29 = new A.SupplementalFont() { Script = "Uigh", Typeface = "Microsoft Uighur" }; A.SupplementalFont supplementalFont30 = new A.SupplementalFont() { Script = "Geor", Typeface = "Sylfaen" }; majorFont1.Append(latinFont1); majorFont1.Append(eastAsianFont1); majorFont1.Append(complexScriptFont1); majorFont1.Append(supplementalFont1); majorFont1.Append(supplementalFont2); majorFont1.Append(supplementalFont3); majorFont1.Append(supplementalFont4); majorFont1.Append(supplementalFont5); majorFont1.Append(supplementalFont6); majorFont1.Append(supplementalFont7); majorFont1.Append(supplementalFont8); majorFont1.Append(supplementalFont9); majorFont1.Append(supplementalFont10); majorFont1.Append(supplementalFont11); majorFont1.Append(supplementalFont12); majorFont1.Append(supplementalFont13); majorFont1.Append(supplementalFont14); majorFont1.Append(supplementalFont15); majorFont1.Append(supplementalFont16); majorFont1.Append(supplementalFont17); majorFont1.Append(supplementalFont18); majorFont1.Append(supplementalFont19); majorFont1.Append(supplementalFont20); majorFont1.Append(supplementalFont21); majorFont1.Append(supplementalFont22); majorFont1.Append(supplementalFont23); majorFont1.Append(supplementalFont24); majorFont1.Append(supplementalFont25); majorFont1.Append(supplementalFont26); majorFont1.Append(supplementalFont27); majorFont1.Append(supplementalFont28); majorFont1.Append(supplementalFont29); majorFont1.Append(supplementalFont30); A.MinorFont minorFont1 = new A.MinorFont(); A.LatinFont latinFont2 = new A.LatinFont() { Typeface = "Calibri", Panose = "020F0502020204030204" }; A.EastAsianFont eastAsianFont2 = new A.EastAsianFont() { Typeface = "" }; A.ComplexScriptFont complexScriptFont2 = new A.ComplexScriptFont() { Typeface = "" }; A.SupplementalFont supplementalFont31 = new A.SupplementalFont() { Script = "Jpan", Typeface = "MS 明朝" }; A.SupplementalFont supplementalFont32 = new A.SupplementalFont() { Script = "Hang", Typeface = "맑은 고딕" }; A.SupplementalFont supplementalFont33 = new A.SupplementalFont() { Script = "Hans", Typeface = "宋体" }; A.SupplementalFont supplementalFont34 = new A.SupplementalFont() { Script = "Hant", Typeface = "新細明體" }; A.SupplementalFont supplementalFont35 = new A.SupplementalFont() { Script = "Arab", Typeface = "Arial" }; A.SupplementalFont supplementalFont36 = new A.SupplementalFont() { Script = "Hebr", Typeface = "Arial" }; A.SupplementalFont supplementalFont37 = new A.SupplementalFont() { Script = "Thai", Typeface = "Cordia New" }; A.SupplementalFont supplementalFont38 = new A.SupplementalFont() { Script = "Ethi", Typeface = "Nyala" }; A.SupplementalFont supplementalFont39 = new A.SupplementalFont() { Script = "Beng", Typeface = "Vrinda" }; A.SupplementalFont supplementalFont40 = new A.SupplementalFont() { Script = "Gujr", Typeface = "Shruti" }; A.SupplementalFont supplementalFont41 = new A.SupplementalFont() { Script = "Khmr", Typeface = "DaunPenh" }; A.SupplementalFont supplementalFont42 = new A.SupplementalFont() { Script = "Knda", Typeface = "Tunga" }; A.SupplementalFont supplementalFont43 = new A.SupplementalFont() { Script = "Guru", Typeface = "Raavi" }; A.SupplementalFont supplementalFont44 = new A.SupplementalFont() { Script = "Cans", Typeface = "Euphemia" }; A.SupplementalFont supplementalFont45 = new A.SupplementalFont() { Script = "Cher", Typeface = "Plantagenet Cherokee" }; A.SupplementalFont supplementalFont46 = new A.SupplementalFont() { Script = "Yiii", Typeface = "Microsoft Yi Baiti" }; A.SupplementalFont supplementalFont47 = new A.SupplementalFont() { Script = "Tibt", Typeface = "Microsoft Himalaya" }; A.SupplementalFont supplementalFont48 = new A.SupplementalFont() { Script = "Thaa", Typeface = "MV Boli" }; A.SupplementalFont supplementalFont49 = new A.SupplementalFont() { Script = "Deva", Typeface = "Mangal" }; A.SupplementalFont supplementalFont50 = new A.SupplementalFont() { Script = "Telu", Typeface = "Gautami" }; A.SupplementalFont supplementalFont51 = new A.SupplementalFont() { Script = "Taml", Typeface = "Latha" }; A.SupplementalFont supplementalFont52 = new A.SupplementalFont() { Script = "Syrc", Typeface = "Estrangelo Edessa" }; A.SupplementalFont supplementalFont53 = new A.SupplementalFont() { Script = "Orya", Typeface = "Kalinga" }; A.SupplementalFont supplementalFont54 = new A.SupplementalFont() { Script = "Mlym", Typeface = "Kartika" }; A.SupplementalFont supplementalFont55 = new A.SupplementalFont() { Script = "Laoo", Typeface = "DokChampa" }; A.SupplementalFont supplementalFont56 = new A.SupplementalFont() { Script = "Sinh", Typeface = "Iskoola Pota" }; A.SupplementalFont supplementalFont57 = new A.SupplementalFont() { Script = "Mong", Typeface = "Mongolian Baiti" }; A.SupplementalFont supplementalFont58 = new A.SupplementalFont() { Script = "Viet", Typeface = "Arial" }; A.SupplementalFont supplementalFont59 = new A.SupplementalFont() { Script = "Uigh", Typeface = "Microsoft Uighur" }; A.SupplementalFont supplementalFont60 = new A.SupplementalFont() { Script = "Geor", Typeface = "Sylfaen" }; minorFont1.Append(latinFont2); minorFont1.Append(eastAsianFont2); minorFont1.Append(complexScriptFont2); minorFont1.Append(supplementalFont31); minorFont1.Append(supplementalFont32); minorFont1.Append(supplementalFont33); minorFont1.Append(supplementalFont34); minorFont1.Append(supplementalFont35); minorFont1.Append(supplementalFont36); minorFont1.Append(supplementalFont37); minorFont1.Append(supplementalFont38); minorFont1.Append(supplementalFont39); minorFont1.Append(supplementalFont40); minorFont1.Append(supplementalFont41); minorFont1.Append(supplementalFont42); minorFont1.Append(supplementalFont43); minorFont1.Append(supplementalFont44); minorFont1.Append(supplementalFont45); minorFont1.Append(supplementalFont46); minorFont1.Append(supplementalFont47); minorFont1.Append(supplementalFont48); minorFont1.Append(supplementalFont49); minorFont1.Append(supplementalFont50); minorFont1.Append(supplementalFont51); minorFont1.Append(supplementalFont52); minorFont1.Append(supplementalFont53); minorFont1.Append(supplementalFont54); minorFont1.Append(supplementalFont55); minorFont1.Append(supplementalFont56); minorFont1.Append(supplementalFont57); minorFont1.Append(supplementalFont58); minorFont1.Append(supplementalFont59); minorFont1.Append(supplementalFont60); fontScheme1.Append(majorFont1); fontScheme1.Append(minorFont1); A.FormatScheme formatScheme1 = new A.FormatScheme() { Name = "Office" }; A.FillStyleList fillStyleList1 = new A.FillStyleList(); A.SolidFill solidFill1 = new A.SolidFill(); A.SchemeColor schemeColor1 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; solidFill1.Append(schemeColor1); A.GradientFill gradientFill1 = new A.GradientFill() { RotateWithShape = true }; A.GradientStopList gradientStopList1 = new A.GradientStopList(); A.GradientStop gradientStop1 = new A.GradientStop() { Position = 0 }; A.SchemeColor schemeColor2 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.LuminanceModulation luminanceModulation1 = new A.LuminanceModulation() { Val = 110000 }; A.SaturationModulation saturationModulation1 = new A.SaturationModulation() { Val = 105000 }; A.Tint tint1 = new A.Tint() { Val = 67000 }; schemeColor2.Append(luminanceModulation1); schemeColor2.Append(saturationModulation1); schemeColor2.Append(tint1); gradientStop1.Append(schemeColor2); A.GradientStop gradientStop2 = new A.GradientStop() { Position = 50000 }; A.SchemeColor schemeColor3 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.LuminanceModulation luminanceModulation2 = new A.LuminanceModulation() { Val = 105000 }; A.SaturationModulation saturationModulation2 = new A.SaturationModulation() { Val = 103000 }; A.Tint tint2 = new A.Tint() { Val = 73000 }; schemeColor3.Append(luminanceModulation2); schemeColor3.Append(saturationModulation2); schemeColor3.Append(tint2); gradientStop2.Append(schemeColor3); A.GradientStop gradientStop3 = new A.GradientStop() { Position = 100000 }; A.SchemeColor schemeColor4 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.LuminanceModulation luminanceModulation3 = new A.LuminanceModulation() { Val = 105000 }; A.SaturationModulation saturationModulation3 = new A.SaturationModulation() { Val = 109000 }; A.Tint tint3 = new A.Tint() { Val = 81000 }; schemeColor4.Append(luminanceModulation3); schemeColor4.Append(saturationModulation3); schemeColor4.Append(tint3); gradientStop3.Append(schemeColor4); gradientStopList1.Append(gradientStop1); gradientStopList1.Append(gradientStop2); gradientStopList1.Append(gradientStop3); A.LinearGradientFill linearGradientFill1 = new A.LinearGradientFill() { Angle = 5400000, Scaled = false }; gradientFill1.Append(gradientStopList1); gradientFill1.Append(linearGradientFill1); A.GradientFill gradientFill2 = new A.GradientFill() { RotateWithShape = true }; A.GradientStopList gradientStopList2 = new A.GradientStopList(); A.GradientStop gradientStop4 = new A.GradientStop() { Position = 0 }; A.SchemeColor schemeColor5 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.SaturationModulation saturationModulation4 = new A.SaturationModulation() { Val = 103000 }; A.LuminanceModulation luminanceModulation4 = new A.LuminanceModulation() { Val = 102000 }; A.Tint tint4 = new A.Tint() { Val = 94000 }; schemeColor5.Append(saturationModulation4); schemeColor5.Append(luminanceModulation4); schemeColor5.Append(tint4); gradientStop4.Append(schemeColor5); A.GradientStop gradientStop5 = new A.GradientStop() { Position = 50000 }; A.SchemeColor schemeColor6 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.SaturationModulation saturationModulation5 = new A.SaturationModulation() { Val = 110000 }; A.LuminanceModulation luminanceModulation5 = new A.LuminanceModulation() { Val = 100000 }; A.Shade shade1 = new A.Shade() { Val = 100000 }; schemeColor6.Append(saturationModulation5); schemeColor6.Append(luminanceModulation5); schemeColor6.Append(shade1); gradientStop5.Append(schemeColor6); A.GradientStop gradientStop6 = new A.GradientStop() { Position = 100000 }; A.SchemeColor schemeColor7 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.LuminanceModulation luminanceModulation6 = new A.LuminanceModulation() { Val = 99000 }; A.SaturationModulation saturationModulation6 = new A.SaturationModulation() { Val = 120000 }; A.Shade shade2 = new A.Shade() { Val = 78000 }; schemeColor7.Append(luminanceModulation6); schemeColor7.Append(saturationModulation6); schemeColor7.Append(shade2); gradientStop6.Append(schemeColor7); gradientStopList2.Append(gradientStop4); gradientStopList2.Append(gradientStop5); gradientStopList2.Append(gradientStop6); A.LinearGradientFill linearGradientFill2 = new A.LinearGradientFill() { Angle = 5400000, Scaled = false }; gradientFill2.Append(gradientStopList2); gradientFill2.Append(linearGradientFill2); fillStyleList1.Append(solidFill1); fillStyleList1.Append(gradientFill1); fillStyleList1.Append(gradientFill2); A.LineStyleList lineStyleList1 = new A.LineStyleList(); A.Outline outline1 = new A.Outline() { Width = 6350, CapType = A.LineCapValues.Flat, CompoundLineType = A.CompoundLineValues.Single, Alignment = A.PenAlignmentValues.Center }; A.SolidFill solidFill2 = new A.SolidFill(); A.SchemeColor schemeColor8 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; solidFill2.Append(schemeColor8); A.PresetDash presetDash1 = new A.PresetDash() { Val = A.PresetLineDashValues.Solid }; A.Miter miter1 = new A.Miter() { Limit = 800000 }; outline1.Append(solidFill2); outline1.Append(presetDash1); outline1.Append(miter1); A.Outline outline2 = new A.Outline() { Width = 12700, CapType = A.LineCapValues.Flat, CompoundLineType = A.CompoundLineValues.Single, Alignment = A.PenAlignmentValues.Center }; A.SolidFill solidFill3 = new A.SolidFill(); A.SchemeColor schemeColor9 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; solidFill3.Append(schemeColor9); A.PresetDash presetDash2 = new A.PresetDash() { Val = A.PresetLineDashValues.Solid }; A.Miter miter2 = new A.Miter() { Limit = 800000 }; outline2.Append(solidFill3); outline2.Append(presetDash2); outline2.Append(miter2); A.Outline outline3 = new A.Outline() { Width = 19050, CapType = A.LineCapValues.Flat, CompoundLineType = A.CompoundLineValues.Single, Alignment = A.PenAlignmentValues.Center }; A.SolidFill solidFill4 = new A.SolidFill(); A.SchemeColor schemeColor10 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; solidFill4.Append(schemeColor10); A.PresetDash presetDash3 = new A.PresetDash() { Val = A.PresetLineDashValues.Solid }; A.Miter miter3 = new A.Miter() { Limit = 800000 }; outline3.Append(solidFill4); outline3.Append(presetDash3); outline3.Append(miter3); lineStyleList1.Append(outline1); lineStyleList1.Append(outline2); lineStyleList1.Append(outline3); A.EffectStyleList effectStyleList1 = new A.EffectStyleList(); A.EffectStyle effectStyle1 = new A.EffectStyle(); A.EffectList effectList1 = new A.EffectList(); effectStyle1.Append(effectList1); A.EffectStyle effectStyle2 = new A.EffectStyle(); A.EffectList effectList2 = new A.EffectList(); effectStyle2.Append(effectList2); A.EffectStyle effectStyle3 = new A.EffectStyle(); A.EffectList effectList3 = new A.EffectList(); A.OuterShadow outerShadow1 = new A.OuterShadow() { BlurRadius = 57150L, Distance = 19050L, Direction = 5400000, Alignment = A.RectangleAlignmentValues.Center, RotateWithShape = false }; A.RgbColorModelHex rgbColorModelHex11 = new A.RgbColorModelHex() { Val = "000000" }; A.Alpha alpha1 = new A.Alpha() { Val = 63000 }; rgbColorModelHex11.Append(alpha1); outerShadow1.Append(rgbColorModelHex11); effectList3.Append(outerShadow1); effectStyle3.Append(effectList3); effectStyleList1.Append(effectStyle1); effectStyleList1.Append(effectStyle2); effectStyleList1.Append(effectStyle3); A.BackgroundFillStyleList backgroundFillStyleList1 = new A.BackgroundFillStyleList(); A.SolidFill solidFill5 = new A.SolidFill(); A.SchemeColor schemeColor11 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; solidFill5.Append(schemeColor11); A.SolidFill solidFill6 = new A.SolidFill(); A.SchemeColor schemeColor12 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.Tint tint5 = new A.Tint() { Val = 95000 }; A.SaturationModulation saturationModulation7 = new A.SaturationModulation() { Val = 170000 }; schemeColor12.Append(tint5); schemeColor12.Append(saturationModulation7); solidFill6.Append(schemeColor12); A.GradientFill gradientFill3 = new A.GradientFill() { RotateWithShape = true }; A.GradientStopList gradientStopList3 = new A.GradientStopList(); A.GradientStop gradientStop7 = new A.GradientStop() { Position = 0 }; A.SchemeColor schemeColor13 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.Tint tint6 = new A.Tint() { Val = 93000 }; A.SaturationModulation saturationModulation8 = new A.SaturationModulation() { Val = 150000 }; A.Shade shade3 = new A.Shade() { Val = 98000 }; A.LuminanceModulation luminanceModulation7 = new A.LuminanceModulation() { Val = 102000 }; schemeColor13.Append(tint6); schemeColor13.Append(saturationModulation8); schemeColor13.Append(shade3); schemeColor13.Append(luminanceModulation7); gradientStop7.Append(schemeColor13); A.GradientStop gradientStop8 = new A.GradientStop() { Position = 50000 }; A.SchemeColor schemeColor14 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.Tint tint7 = new A.Tint() { Val = 98000 }; A.SaturationModulation saturationModulation9 = new A.SaturationModulation() { Val = 130000 }; A.Shade shade4 = new A.Shade() { Val = 90000 }; A.LuminanceModulation luminanceModulation8 = new A.LuminanceModulation() { Val = 103000 }; schemeColor14.Append(tint7); schemeColor14.Append(saturationModulation9); schemeColor14.Append(shade4); schemeColor14.Append(luminanceModulation8); gradientStop8.Append(schemeColor14); A.GradientStop gradientStop9 = new A.GradientStop() { Position = 100000 }; A.SchemeColor schemeColor15 = new A.SchemeColor() { Val = A.SchemeColorValues.PhColor }; A.Shade shade5 = new A.Shade() { Val = 63000 }; A.SaturationModulation saturationModulation10 = new A.SaturationModulation() { Val = 120000 }; schemeColor15.Append(shade5); schemeColor15.Append(saturationModulation10); gradientStop9.Append(schemeColor15); gradientStopList3.Append(gradientStop7); gradientStopList3.Append(gradientStop8); gradientStopList3.Append(gradientStop9); A.LinearGradientFill linearGradientFill3 = new A.LinearGradientFill() { Angle = 5400000, Scaled = false }; gradientFill3.Append(gradientStopList3); gradientFill3.Append(linearGradientFill3); backgroundFillStyleList1.Append(solidFill5); backgroundFillStyleList1.Append(solidFill6); backgroundFillStyleList1.Append(gradientFill3); formatScheme1.Append(fillStyleList1); formatScheme1.Append(lineStyleList1); formatScheme1.Append(effectStyleList1); formatScheme1.Append(backgroundFillStyleList1); themeElements1.Append(colorScheme1); themeElements1.Append(fontScheme1); themeElements1.Append(formatScheme1); A.ObjectDefaults objectDefaults1 = new A.ObjectDefaults(); A.ExtraColorSchemeList extraColorSchemeList1 = new A.ExtraColorSchemeList(); A.ExtensionList extensionList1 = new A.ExtensionList(); A.Extension extension1 = new A.Extension() { Uri = "{05A4C25C-085E-4340-85A3-A5531E510DB2}" }; OpenXmlUnknownElement openXmlUnknownElement3 = OpenXmlUnknownElement.CreateOpenXmlUnknownElement("<thm15:themeFamily xmlns:thm15=\"http://schemas.microsoft.com/office/thememl/2012/main\" name=\"Office Theme\" id=\"{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}\" vid=\"{4A3C46E8-61CC-4603-A589-7422A47A8E4A}\" />"); extension1.Append(openXmlUnknownElement3); extensionList1.Append(extension1); theme1.Append(themeElements1); theme1.Append(objectDefaults1); theme1.Append(extraColorSchemeList1); theme1.Append(extensionList1); themePart1.Theme = theme1; }
private static void UpdatePowerPointBlock(ReportData client, OpenXmlPartContainer container, OpenXmlElement block, TableDefinition content, Dictionary <string, string> options) { if (null != content && block is OXP.GraphicFrame) { var randomValue = new Random(); OXD.Table initTable = block.Descendants <OXD.Table>().FirstOrDefault(); if (null == initTable) { return; } try { OXD.Table table = initTable.CloneNode(true) as OXD.Table; OXD.TableRow headerRowTemplate = table?.Descendants <OXD.TableRow>().First().CloneNode(true) as OXD.TableRow; OXD.TableRow contentRowTemplate = table?.Descendants <OXD.TableRow>().Skip(1).First().CloneNode(true) as OXD.TableRow; ModifyPowerPointRowTextContent(headerRowTemplate, string.Empty); ModifyPowerPointRowTextContent(contentRowTemplate, string.Empty); #region Column Number Management List <OXD.GridColumn> columns = table?.TableGrid.Descendants <OXD.GridColumn>().ToList(); if (columns != null && columns.Count < content.NbColumns) { int nbNewColumn = content.NbColumns - columns.Count; for (int i = 0, lim = nbNewColumn; i < lim; i++) { AddNewGridColumn(table.TableGrid, headerRowTemplate, contentRowTemplate); } } else if (columns != null && columns.Count > content.NbColumns) { for (int i = content.NbColumns, lim = columns.Count; i < lim; i++) { RemoveLastGridColumn(table.TableGrid); } } #endregion Column Number Management int idx = 0; int nbrow = 0; List <OXD.TableCell> headerCells = headerRowTemplate?.Descendants <OXD.TableCell>().Select(_ => _.CloneNode(true) as OXD.TableCell).ToList(); List <OXD.TableCell> contentCells = contentRowTemplate?.Descendants <OXD.TableCell>().Select(_ => _.CloneNode(true) as OXD.TableCell).ToList(); headerRowTemplate?.RemoveAllChildren <OXD.TableCell>(); OXD.TableRow row = headerRowTemplate; table?.RemoveAllChildren <OXD.TableRow>(); for (int i = 0; i < content.Data.Count(); i++) { string item = content.Data.ToArray()[i]; OXD.TableCell cell; if (content.HasColumnHeaders && 0 == nbrow) { cell = headerCells?[idx].CloneNode(true) as OXD.TableCell; } else { cell = contentCells?[idx].CloneNode(true) as OXD.TableCell; } ModifyPowerPointCellTextContent(cell, item); if (content.HasCellsAttributes()) { CellAttributes attributes = content.CellsAttributes.FirstOrDefault(a => a.Index == i); if (attributes?.BackgroundColor != null) { Color myColor = attributes.BackgroundColor; OXD.RgbColorModelHex backColor = new OXD.RgbColorModelHex() { Val = $"{myColor.R:X2}{myColor.G:X2}{myColor.B:X2}" }; OXD.SolidFill solidFill = new OXD.SolidFill(); solidFill.Append(backColor); OXD.TableCellProperties props = cell?.Descendants <OXD.TableCellProperties>().FirstOrDefault(); OXD.TableCellProperties new_props = (props != null) ? props.CloneNode(true) as OXD.TableCellProperties : new OXD.TableCellProperties(); OXD.SolidFill oldFill = new_props?.Descendants <OXD.SolidFill>().FirstOrDefault(); oldFill?.Remove(); new_props?.InsertAfter(solidFill, new_props.LastChild); if (props != null) { cell.ReplaceChild(new_props, props); } else { cell?.AppendChild(new_props); } } } //row.Append(cell); => in office 2016, element <extLst> should absolutely be in the latest position in a row row?.InsertBefore(cell, row.Descendants <OXD.ExtensionList>().FirstOrDefault()); OXD.ExtensionList init_extlst = row?.Descendants <OXD.ExtensionList>().FirstOrDefault(); if (init_extlst != null) { OXD.Extension init_ext = init_extlst.Descendants <OXD.Extension>().FirstOrDefault(); OpenXmlUnknownElement init_rowId = init_ext?.GetFirstChild <OpenXmlUnknownElement>(); OpenXmlUnknownElement new_rowId = init_rowId?.CloneNode(true) as OpenXmlUnknownElement; if (new_rowId != null) { OpenXmlAttribute val = new_rowId.GetAttributes().FirstOrDefault(); val.Value = randomValue.Next().ToString(); new_rowId.SetAttribute(val); init_ext.ReplaceChild(new_rowId, init_rowId); } } idx = ++idx % content.NbColumns; if (0 != idx) { continue; } // ReSharper disable once ConditionIsAlwaysTrueOrFalse if (null != row) { table.Append(row); nbrow++; } row = contentRowTemplate?.CloneNode(true) as OXD.TableRow; row?.RemoveAllChildren <OXD.TableCell>(); } initTable.Parent.ReplaceChild(table, initTable); } catch (Exception exception) { LogHelper.Instance.LogErrorFormat("An unhandled exception was thrown during table block content generation : '{0}'", exception.ToString()); if (initTable.Descendants <OXD.TableRow>() != null && !initTable.Descendants <OXD.TableRow>().Any()) { foreach (var row in initTable.Descendants <OXD.TableRow>().Skip(1)) { ModifyPowerPointRowTextContent(row, string.Empty); } } } } else { LogHelper.Instance.LogErrorFormat("Impossible to load data in table block with a block source of type \"{0}\"", block?.GetType().ToString() ?? "null"); } }
public static void AddSvg(string docPath, string svgPath) { if (docPath == null) { throw new ArgumentNullException(nameof(docPath)); } if (svgPath == null) { throw new ArgumentNullException(nameof(svgPath)); } using (PresentationDocument presentationDocument = PresentationDocument.Open(docPath, true)) { // Get the relationship ID of the first slide. PresentationPart presentationPart = presentationDocument.PresentationPart; // Verify that the presentation part and presentation exist. if (presentationPart != null && presentationPart.Presentation != null) { OpenXmlElementList slideIds = presentationPart.Presentation.SlideIdList.ChildElements; if (slideIds.Count > 0) { string relId = (slideIds[0] as SlideId).RelationshipId; SlidePart slidePart = (SlidePart)presentationPart.GetPartById(relId); // Get count of relationships and increment by one to make next unique id int partsCount = slidePart.Parts.Count(); string pngId = $"rId{++partsCount}"; string svgId = $"rId{++partsCount}"; var creationId = new DocumentFormat.OpenXml.Office2016.Drawing.CreationId(); creationId.AddNamespaceDeclaration("a16", "http://schemas.microsoft.com/office/drawing/2014/main"); creationId.Id = "{E36DC281-2F17-44E3-80EA-AB5BFA90E4D7}"; var picture = new DocumentFormat.OpenXml.Presentation.Picture(); // add non visual properties to picture picture.NonVisualPictureProperties = new DocumentFormat.OpenXml.Presentation.NonVisualPictureProperties(); picture.NonVisualPictureProperties.NonVisualDrawingProperties = new DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties() { Id = new UInt32Value((uint)++partsCount), Name = "Picture 1" }; picture.NonVisualPictureProperties.NonVisualDrawingProperties.AppendChild(new DocumentFormat.OpenXml.Drawing.ExtensionList( new Extension( creationId) { Uri = "{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}" })); picture.NonVisualPictureProperties.NonVisualPictureDrawingProperties = new DocumentFormat.OpenXml.Presentation.NonVisualPictureDrawingProperties(); picture.NonVisualPictureProperties.ApplicationNonVisualDrawingProperties = new ApplicationNonVisualDrawingProperties(); picture.NonVisualPictureProperties.NonVisualPictureDrawingProperties.PictureLocks = new PictureLocks() { NoChangeAspect = true }; // add blipfill picture.BlipFill = new DocumentFormat.OpenXml.Presentation.BlipFill(); picture.BlipFill.Blip = new Blip() { Embed = svgId }; picture.BlipFill.AppendChild(new Stretch( new FillRectangle())); BlipExtensionList blipExtensionList = new BlipExtensionList(); Extension ext = blipExtensionList.AppendChild(new Extension()); ext.Uri = string.Empty; ext.AppendChild(new SVGBlip()); picture.BlipFill.Blip.AppendChild(blipExtensionList); picture.ShapeProperties = new DocumentFormat.OpenXml.Presentation.ShapeProperties(); picture.ShapeProperties.Transform2D = new Transform2D(); picture.ShapeProperties.Transform2D.Offset = new Offset(); picture.ShapeProperties.Transform2D.Offset.X = new Int64Value(5638800L); picture.ShapeProperties.Transform2D.Offset.Y = new Int64Value(2971800L); picture.ShapeProperties.Transform2D.Extents = new Extents(); picture.ShapeProperties.Transform2D.Extents.Cx = new Int64Value(914400L); picture.ShapeProperties.Transform2D.Extents.Cy = new Int64Value(914400L); picture.ShapeProperties.AppendChild(new PresetGeometry( new AdjustValueList()) { Preset = ShapeTypeValues.Rectangle }); // Create a temporary in memory png file from the svg (inserting svg requires a png copy to be visible) // Using https://www.nuget.org/packages/Svg/ to convert svg to png SvgDocument svgDocument = SvgDocument.Open(svgPath); using System.Drawing.Bitmap bitmap = svgDocument.Draw(); string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".png"; bitmap.Save(fileName, ImageFormat.Png); // Add png to slidePart using FileStream pngFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); pngFileStream.Seek(0, SeekOrigin.Begin); ImagePart pngImagePart = slidePart.AddImagePart(ImagePartType.Png, pngId); pngImagePart.FeedData(pngFileStream); picture.BlipFill.Blip.Embed = pngId; // Add image part with new svg id using FileStream svgFileStream = new FileStream(svgPath, FileMode.Open, FileAccess.Read); svgFileStream.Seek(0, SeekOrigin.Begin); ImagePart svgImgPart = slidePart.AddImagePart(ImagePartType.Svg, svgId); svgImgPart.FeedData(svgFileStream); IEnumerable <SVGBlip> sVGBlips = blipExtensionList.Descendants <SVGBlip>(); sVGBlips.First().Embed = svgId; slidePart.Slide.CommonSlideData.ShapeTree.AppendChild(picture); } } } }