如何使用c#在Powerpoint演示文稿中打开嵌入式Excel工作表

时间:2018-05-09 11:26:32

标签: c# excel powerpoint

我有一个powerpoint幻灯片,其中存在一个嵌入式excel对象,它以下列方式嵌入:insert-object-create from file-browse-display as icon。 我正在尝试使用c#以编程方式打开此excel表。 我面临的问题是我收到错误: “未处理的异常:System.Runtime.InteropServices.COMException:OLEFormat(未知成员):无效的请求。窗口必须位于幻灯片或备注视图中。    在Microsoft.Office.Interop.PowerPoint.OLEFormat.Activate()“ 我尝试将viewtype更改为幻灯片,如下所示:   presentation.Application.ActiveWindow.ViewType = PowerPoint.PpViewType.ppViewSlide; 但这似乎没有帮助,我收到同样的错误。

`

Microsoft.Office.Interop.PowerPoint.Application PowerPoint_App = new Microsoft.Office.Interop.PowerPoint.Application();
                Microsoft.Office.Interop.PowerPoint.Presentations multi_presentations = PowerPoint_App.Presentations;
                Microsoft.Office.Interop.PowerPoint.Presentation presentation = multi_presentations.Open(@"D:\test.pptx");
foreach (var item in presentation.Slides[1].Shapes)
                    {
                        var shape = (PowerPoint.Shape)item;
if(shape.Name.Contains("Object")) {
 presentation.Application.ActiveWindow.ViewType = PowerPoint.PpViewType.ppViewSlide;
                presentation.Application.Activate();
                presentation.Application.ActiveWindow.Activate();
 shape.OLEFormat.Activate();
Microsoft.Office.Interop.Excel.Workbook wb = (Excel.Workbook)shape.OLEFormat.Object;
}
}`

这是我正在使用的代码。 有谁可以帮我这个。 提前谢谢!

1 个答案:

答案 0 :(得分:-1)

使用Office.Interop lib处理简洁的演示文稿时,它使工作变得简单。但是,当我们尝试访问和编辑演示文稿中的OLEObject时,它变得棘手。

尝试一下!:

PowerPoint.OLEFormat ole = shape.OLEFormat;
ole.Object.Activate();
Excel.Workbook workbook = ole.Object;

这将创建一个工作簿实例。 注意:OLEFormat.Object是动态类型,不需要类型转换对象。但是,是的,当类型转换失败时,您需要处理错误。

希望这会有所帮助。

谢谢。