我尝试修改PowerPoint幻灯片,其中包含两张图表。我的目标是找到图表并修改其数据。
我已经获得了包含Chart的GraphicFrame,并且我得到了我想要修改的ChartSpace Element的相对ID。但是如何获得actucal 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) ;
}
答案 0 :(得分: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();
}
目前我还在试图弄清楚如何检索位于给定富文本控件中的图表(使用它的标记名称)。上面的方法有效,但我对此并不满意。
无论如何,祝你找到问题的解决方案好运!
答案 1 :(得分:1)
克里斯蒂安,如果你还在寻找答案:我能找到一个问题。我认为它也可能对你有用。
请参阅帖子“Finding a graph part within a rich text control with OpenXML SDK”。
祝你好运!