使用C#PowerPoint OpenXML

时间:2016-07-25 12:28:58

标签: c# powerpoint openxml

我想更改幻灯片中几个形状的填充颜色。

我在msdn上找到了这个教程,但它只提到了一个非常具体的场景(第一张幻灯片的第一个形状,在只有一个形状的演示文稿中)=> Link To The MSDN Tutorial

所以,也许我并不是真的理解整个事情,但在我看来,当你试图动态访问ShapeTree Elements时,你会得到一个" nullReference异常"或者"在尝试访问ShapeStyle属性时没有定义为对象"的实例(即使实际使用FirstChild()示例)。

所以我尝试按照以下方式访问它,通过元素,但没有成功。

 ShapeTree tree = slide.Slide.CommonSlideData.ShapeTree;
            for (var i = 0; i <= 30; i++)
            {
                try
                {
                    DRAW.FillReference fillRef = tree.ElementAt(i).GetFirstChild<DocumentFormat.OpenXml.Presentation.Shape>().ShapeStyle.FillReference;


                    fillRef.SchemeColor = new DRAW.SchemeColor();
                    fillRef.SchemeColor.Val = DRAW.SchemeColorValues.Accent6;

                }
                catch (Exception e)
                {
                //Null reference Excpetion on the fillRef initialization, does the same if I cast with DocumentFormat.OpenXml.Drawing.Shape        
                }

           }

我的目标很简单,我想通过识别它的内部文本来改变形状的填充颜色。

提前致谢!

干杯