2011-02-14 88 views
6

某些Powerpoint演示文稿包含嵌入的電影。 如何使用C#(VSTO或Oficce COM Api)將演示文稿導出(或獲取電影文件的路徑)?從Powerpoint導出電影到C#文件

+0

由於電影是嵌入式的,沒有路徑給他們。它們是PPTX文件本身的一部分。您可以通過解壓縮來獲取PPTX中的嵌入式媒體(電影和聲音)。深入到解壓縮文件的文件夾結構中,將會有一個媒體文件夾。聲音/ vids會在裏面。但是,他們不會擁有原始文件名。相反,他們將擁有像Media1.mov等名稱。 – 2012-12-16 19:29:43

回答

5

下面是簡單的演示做到這一點:

不要忘記加上參考的PowerPoint COM API ( Microsoft PowerPoint 12.0對象庫)。

using PowerPoint = Microsoft.Office.Interop.PowerPoint; 
using Office = Microsoft.Office.Core; 

那麼你就可以得到這樣

private void button1_Click(object sender, EventArgs e) 
    { 
     PowerPoint.Application app = new PowerPoint.Application(); 
     app.Visible = Office.MsoTriState.msoTrue; 
     //open powerpoint file in your hard drive 
     app.Presentations.Open(@"e:\my tests\hello world.pptx"); 

     foreach (PowerPoint.Slide slide in app.ActivePresentation.Slides) 
     { 
      PowerPoint.Shapes slideShapes = slide.Shapes; 
      foreach (PowerPoint.Shape shape in slideShapes) 
      { 
       if (shape.Type == Office.MsoShapeType.msoMedia && 
        shape.MediaType == PowerPoint.PpMediaType.ppMediaTypeMovie) 
       { 
        //LinkFormat.SourceFullName contains the movie path 
        //get the path like this 
        listBox1.Items.Add(shape.LinkFormat.SourceFullName); 
        //or use System.IO.File.Copy(shape.LinkFormat.SourceFullName, SOME_DESTINATION) to export them 
       } 
      } 
     } 
    } 

我希望這將幫助電影路徑。

[編輯:]

關於史蒂夫評論,如果你只想嵌入的電影,你只需要解壓就像任何其他的zip文件中的.pptx文件(例如,使用DotNetZip)

,並期待在嵌入式視頻此路徑([PowerPoint_fileName] \ ppt \ media)

+2

不幸的是,它不會。原始問題指定視頻已嵌入。此示例將提供鏈接(但不嵌入)視頻的路徑。 – 2012-12-16 19:27:17