C#(CLI系の開発言語)で、LibreOfficeを操作するためには、LibreOfficeがインストールされたフォルダ内の、dllファイルを使用します。
※C#やVBなど.NET には、共通言語ランタイムと呼ばれるランタイム環境が用意されています。 LibreOffice(やOpenOffice)は、「Common Language Infrastructure (CLI) 」 という仕組みで、すべてのUNO型をCLI型にマッピングすることで、 LibreOfficeをC#などの.Net言語から操作できるようにしています。
参考
- 型のマッピング(原文(英語):Type Mapping)
- 共通言語ランタイム (CLR) の概要
LibreOffice操作するために追加する参照と使用する名前空間を紹介します。
LibreOffceを操作するためのdllは、LibreOffice SDKで提供されています。予め、インストールしておく必要があります。
LibreOfficeを操作するC#プロジェクトに参照として追加する必要があるdll
次の6つのファイルを参照に追加する必要があります。
具体的には、Visual Studioのプロジェクト内のソリューションエクスプローラーで、参照に追加しておく必要があります。
LibreOffice本体内のファイル
- cli_uno.dll
C:\Program Files\LibreOffice\program (64bit版の場合の所在)
LibreOffice SDK内のファイル
- cli_basetypes.dll
- cli_cppuhelper.dll
- cli_oootypes.dll
- cli_ure.dll
- cli_uretypes.dll
C:\Program Files\LibreOffice\sdk\cli (64bit版の場合の所在)
参照として追加する必要のあるDllの説明
OpenOfficeのドキュメントに、参照として追加する必要のあるdllの説明が記載されていたので、転記しておきます。
- cli_basetypes.dll
名前が示すように、それは、既に、cli_basetypes.dll内の作成されたUNO型のために必要な、いくつかの基底型を提供します。 それは、Any型が含まれるので、おそらく、すべてのプログラムは、このライブラリを必要とします。また、cli_uretypes.dllとcli_oootypes.dllは、それに依存しています。
- cli_cppuhelper.dll
ネイティブUNOを起動するために、ブートストラップ・コードを提供します。すなわち、別の言語で実装されるさまざまなUNOサービスを利用します。このアセンブリの型は、常にクライアント・プログラムで使われます。
- cli_oootypes.dll
(OOo 3.0以降)オフィス型を提供します。これらの型は、OOo 3.0以前では、cli_types.dllに含まれていました。
- cli_ure.dll
UNOインターフェイスを実装するために役に立つヘルパー・クラスが、含まれています。このアセンブリの型は、必ずしも使用されているわけではありません。
- cli_uretypes.dll
(OOo 3.0以降)URE型を提供します。これらの型は、OOo 3.0以前では、cli_types.dllに含まれていました。
引用
- CLI言語結合(原文(英語):The Language Binding DLLs)
C#で使用する名前空間
C#のコード内で名前空間を使用することで、UNOオブジェクトの記述を短くすることができます。
using uno.util;
using unoidl.com.sun.star.frame;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.sheet;
using unoidl.com.sun.star.table;
using unoidl.com.sun.star.uno;
using unoidl.com.sun.star.beans;
using unoidl.com.sun.star.util;
LibreOffice(x64)とLbreOffice SDKは、バージョン7.3.0,、7.3.1、7.5.2では、例外が発生して、動作しませんでした。7.5.2では、C#コードをx86でビルドしても例外が発生して動作しないことを確認しました。
私の認識している範囲では、バージョン 7.5.2まででは、C#で、LibreOfficeを操作するためには、LibreOffice(x86)つまり、LibreOfficeは、32bit版を使用する必要があるようです。