1

我尝试修改包含两个图表的 PowerPoint 幻灯片。我的目标是找到图表并修改其数据。

我已经获得了包含图表的 GraphicFrame,并且获得了要修改的 ChartSpace 元素的相对 ID。但是如何获得实际的 ChartSpace 元素呢?

 public void test()
{
    //// getting the SlidePart
      var slidepart = presPart.GetPartById(relId) as SlidePart;
    //// getting the Shape which contains the damned Chart
    var graphicFrame = GetGraphicFrameFromSlide(slidepart, ppChart, ppSlide);
    //// get the ChartReference
    DrawCharts.ChartReference child = GraphicFrame.Graphic.GraphicData.GetFirstChild<DrawCharts.ChartReference>();
                                var chartID = child.Id;
    //// this returns a ExtendedSomething, but no chart reference :(
                               var chartData = presDoc.GetPartById(chartID) ;
}
4

2 回答 2

1

不确定这是否对您有帮助,但我在 Word 文档中执行以下操作:

        foreach (ChartPart chartPart in mainDocumentPart.ChartParts)
        {
            Chart chart = chartPart.ChartSpace.Elements<Chart>().FirstOrDefault();

            if (chart != null)
            {

                DocumentFormat.OpenXml.Drawing.Charts.LineChart lineChart = chart.Descendants<DocumentFormat.OpenXml.Drawing.Charts.LineChart>().FirstOrDefault();

                if (lineChart != null)
                {
                    i++;

                    LineChartEx chartEx = new LineChartEx(chartPart, myChartData));
                    chartEx.Refresh();
                }
            }

            chartPart.ChartSpace.Save();

        }

目前,我仍在试图弄清楚如何检索驻留在给定富文本控件中的图表(使用它的标签名称)。上述方法有效,但我对此并不完全满意。

无论如何,祝你找到解决问题的方法好运!

于 2013-05-29T12:48:48.673 回答
1

克里斯蒂安,如果您仍在寻找答案:我能够为我的问题找到一个答案。我想它也可能对你有用。

请参阅帖子“使用 OpenXML SDK 在富文本控件中查找图形部件”。

祝你好运!

于 2013-06-04T16:03:04.017 回答