2016-07-14 15 views
0

我使用NetOffice.PowerPointApi播放现有PPTX的一些Powerpoint幻灯片。这是如何做到这一点:将第一张幻灯片设置为使用PowerPoint-Api进行显示

PowerPoint.Application powerApplication = new PowerPoint.Application(); 
PowerPoint.Presentation presentation = powerApplication.Presentations.Open("C:\\dev\\test.pptx", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoTrue); 
// presentation.SlideShowSettings.StartingSlide = 2; 
presentation.SlideShowSettings.Run(); 
while (powerApplication.ActivePresentation.SlideShowWindow.View.CurrentShowPosition < 4) 
{ 
    System.Threading.Thread.Sleep(2000); 
    powerApplication.ActivePresentation.SlideShowWindow.View.Next(); 
} 

现在我的计划是,以显示幻灯片3到4

但是,当我设置startingSlide(在我的例子注释掉)我收到powerApplication.ActivePresentation.SlideShowWindow.View.CurrentShowPosition的错误:

{ “SlideShowView.CurrentShowPosition:无效请求有 目前用于此演示没有幻灯片放映视图。”}

这只发生在我设置属性StartingSlide时。如果我不这样做,介绍会从第一张到第四张幻灯片。

回答

1

您需要设置SlideShowSettings的多个属性对象:

using NetOffice.OfficeApi.Enums; 
using NetOffice.PowerPointApi.Enums; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 
using PowerPoint = NetOffice.PowerPointApi; 

namespace PlayPowerPoint 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var app = new PowerPoint.Application()) 
      { 
       var presentation = app.Presentations.Open(Path.GetFullPath("Test.pptx"), MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse); 

       var slideShowSettings = presentation.SlideShowSettings; 

       slideShowSettings.StartingSlide = 2; 
       slideShowSettings.EndingSlide = 4; 
       slideShowSettings.RangeType = PpSlideShowRangeType.ppShowSlideRange; 
       slideShowSettings.AdvanceMode = PpSlideShowAdvanceMode.ppSlideShowManualAdvance; 

       slideShowSettings.Run(); 

       var slideShowView = presentation.SlideShowWindow.View; 

       while (slideShowView.CurrentShowPosition < slideShowSettings.EndingSlide) 
       { 
        Thread.Sleep(2000); 
        slideShowView.Next(); 
       } 

       presentation.Saved = MsoTriState.msoTrue; 
       presentation.Close(); 

       app.Quit(); 
      } 
     } 
    } 
} 
+0

令人惊讶的后超过2年,我再次有同样的要求,你只回答了这个问题正确:) \ O/ –

+0

哈哈,多么幸运巧合的是,我应该随机浏览昨天的所有NetOffice问题,然后:-)祝您的项目顺利! – Jbjstam

相关问题