OpenOfficeをC#で使う ~Impressを自動表示~


C#でOpenOfficeを操作するソースコードをいくつかご紹介します。
今回はプレゼンテーション用のImpressをC#で自動表示させる為のコードを紹介します。
※OpenOfficeのダウンロードはこちらからどうぞ。



事前準備

C#からOpenOfficeを操作するためには「uno」と呼ばれるCOM APIを使用する必要があります。
こちらから事前にThe Apache OpenOffice Software Development Kitを取得して、下記のdllを参照へ追加しておきましょう。

  • cli_basetypes.dll
  • cli_cppuhelper.dll
  • cli_oootypes.dll
  • cli_ure.dll
  • cli_uretypes.dll
  • cli_uno.dll

※「cli_uno.dll」はOpenOfficeのインストールフォルダ内に存在しています

ソースコード

ヘッダ部には下記のとおり名前空間を追加しておきましょう。

using unoidl.com.sun.star.uno;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.frame;
using unoidl.com.sun.star.beans;
using unoidl.com.sun.star.presentation;
using unoidl.com.sun.star.util;

 

プレゼンテーションの起動は下記のコードとなります。

// コンポーネントコンテキストの取得
XComponentContext xContext = uno.util.Bootstrap.bootstrap();
// サービスマネージャの取得
XMultiServiceFactory xMsf = (XMultiServiceFactory)xContext.getServiceManager();
// コンポーネントローダの取得
XComponentLoader xLoader = (unoidl.com.sun.star.frame.XComponentLoader)xMsf.createInstance("com.sun.star.frame.Desktop");
// Impressの起動 ※"strImpressfile"はファイル名のURI
XComponent component = xLoader.loadComponentFromURL(strImpressFile, "_blank", 0, new PropertyValue[0]);
// Presenationオブジェクト取得
XPresentationSupplier xSupplier = (XPresentationSupplier)component;
XPresentation xPresentation = xSupplier.getPresentation();
// プレゼンテーション開始
xPresentation.start();

 

プレゼンテーションの切り替えは下記のコードです。

// コントローラの取得
XPresentation2 xP2 = (XPresentation2)xPresentation;
// プレゼンテーションの切り替え
xP2.getController().gotoSlideIndex(pageNo);  //※pageNo・・・スライド番号

 

プレゼンテーションの終了は下記のコードです。

// プレゼンテーションの終了
xPresentation.end();

 

まとめ

CALCやWRITERなどのソースコードは紹介されていますが、IMPRESSはなかなか見つからなかったので書いてみました。
参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA