2017-02-24 23 views
0

複数の画像を含むPPTスライドデッキがあります。私は各スライドと各図形を繰り返しています。私は画像のようなタイプmsoPictureの各形状を保存したいと思います:C#Office.Interopを使用してPPTシェイプ(msoPicture)を保存します。

  foreach (PPT.Slide slide in pptDoc.Slides) 
      { 
       foreach (PPT.Shape shape in slide.Shapes) 
       { 
        if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture) 
        { 

         Image img; 
         //???? Save shape as image 
         img.Save(filename); 
        } 
       } 
      } 

答えて

1

あなたは、個々の形状からイメージを作成するためにShape.Export() methodを使用することができます。このような例

foreach (PPT.Slide slide in pptDoc.Slides) 
{ 
    foreach (PPT.Shape shape in slide.Shapes) 
    { 
     if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture) 
     { 
      shape.Export(filename, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatPNG); 
     } 
    } 
} 
+0

それはむしろ、ファイルシステムよりも、ストリームに保存することができかしら? – JDR

+0

@JDR AFAIKこれは、COMオートメーションを使用して(つまり、 'Microsoft.Interop'を使用して)行うことはできません。しかし、OpenXMLのようなファイルを直接扱うためにライブラリを使用する場合は可能です(オフィスのファイル形式はかなり複雑なので、COM Automationよりも少し複雑かもしれません)。 – bassfader

+0

ありがとう、私はおそらくこれをもう少し調べた後、IO上に小さなビットを保存する価値があるよりもずっと面倒であるように見えるので、ファイルシステムに固執するだけです。 – JDR

関連する問題