【问题标题】:Accessing powerpoint object programmatically using C#使用 C# 以编程方式访问 powerpoint 对象
【发布时间】: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


【解决方案1】:
objSlide[1].Shapes["myObjectNameInsideSlide1"].TextFrame.TextRange.Text = "Kiko";

以上代码将访问幻灯片 1 内的文本框/形状

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2020-05-18
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多