【发布时间】:2018-01-11 23:01:56
【问题描述】:
我正在使用 C# 访问一个 ppt 模板并基于数据以编程方式创建自定义输出。
Microsoft.Office.Interop.PowerPoint.Presentations objPresSet = null;
Microsoft.Office.Interop.Graph.Chart chart = null;
Microsoft.Office.Interop.Graph.DataSheet dataSheet = null;
objPres = objPresSet.Open(@"C:\Sample PPT application\WebSite4\WebSite4\2_Soundbite1.pptx", MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);
Microsoft.Office.Interop.PowerPoint._Slide objSlide = null;
objSlide = objPres.Slides[1];
foreach (Microsoft.Office.Interop.PowerPoint.Shape prefixShape in objSlide.Shapes)
{
chart = (Microsoft.Office.Interop.Graph.Chart)prefixShape.OLEFormat.Object;
dataSheet = chart.Application.DataSheet;
}
现在,如果模板是“.ppt”类型,那么上面使用的OLEFormat.Object确实存在,而在“.pptx”的情况下,它会给出以下错误
OLEFormat(未知成员):无效请求。仅限此楼盘 适用于 OLE 对象。
无法识别,我搜索了msdn以及其他网站,但没有人区分'.ppt'和'.pptx'。
在链接Creating PowerPoint presentations programmatically 中,它提到我们可以以编程方式编写PowerPoint,我面临的问题是,当扩展名是“.ppt”时,我可以这样做,而在“.pptx”的情况下,我无法访问模板中使用的图表和图形,因为用于访问图表的 OLEFormat.Object 在“.pptx”的情况下不起作用,我是否缺少一些用于“.pptx”支持的 dll,我是当前使用'Assembly Microsoft.Office.Interop.PowerPoint.dll,v2.0.50727'
【问题讨论】:
-
在上面的链接中,它提到我们可以以编程方式编写一个PowerPoint,我面临的问题是,当扩展名是'.ppt'时我可以这样做,而在' .pptx',我无法访问模板中使用的图表和图形,因为用于访问图表的 OLEFormat.Object 在 '.pptx' 的情况下不起作用,我是否缺少一些用于 '.pptx' 支持的 dll ,我目前正在使用'Assembly Microsoft.Office.Interop.PowerPoint.dll,v2.0.50727'
-
您的代码没有检查形状的类型?是图表类型还是 MSGraph 图表对象。
标签: c# templates powerpoint