備忘録

備忘録

C#でPowerPoint(ppt, pptx)ファイルから文字列を抽出する方法

Ⅰ. はじめに

タイトルの通り「C#PowerPoint(ppt, pptx)ファイルから文字列を抽出する方法」です。

Ⅱ. やり方

1. サンプルファイルを用意する

http://www.mediafire.com/file/b66k4kxskc2agl1/sample.pptx/file
f:id:kagasu:20190201182119p:plain

2. 参照を追加する

画像の2つのCOM参照を追加する事で「Microsoft.Office.Core」と「Microsoft.Office.Interop.PowerPoint」が追加されます。
f:id:kagasu:20190201182006p:plain

3. サンプルプログラムを書く
using System;
using Microsoft.Office.Core;
using PPT = Microsoft.Office.Interop.PowerPoint;

namespace GetPowerPointText
{
  class Program
  {
    static void Main(string[] args)
    {
      var file = new PPT.Application().Presentations.Open("c:\\sample.pptx", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
      var slideCount = file.Slides.Count;
      Console.WriteLine($"スライド数:{slideCount}");

      foreach (PPT.Shape shape in file.Slides[1].Shapes)
      {
        if (shape.HasTextFrame == MsoTriState.msoTrue)
        {
          if (shape.TextFrame.HasText == MsoTriState.msoTrue)
          {
            Console.WriteLine(shape.TextFrame.TextRange.Text);
          }
        }
        else if (shape.HasTable == MsoTriState.msoTrue)
        {
          // インデックスを指定する場合
          // Console.WriteLine(shape.Table.Columns[2].Cells[3].Shape.TextFrame.TextRange.Text);
          foreach (PPT.Column column in shape.Table.Columns)
          {
            foreach (PPT.Cell cell in column.Cells)
            {
              Console.WriteLine(cell.Shape.TextFrame.TextRange.Text);
            }
          }
        }
      }
      file.Close();
    }
  }
}

実行結果

f:id:kagasu:20190201182625p:plain