LibreOfficeでは、StarBasic、VBA互換Basic、Java、pythonなど、さまざまなマクロ言語が利用できます。
LibreOffice SDKを別途ダウンロードし、インストールする事で、マクロではなく、開発言語を使ってLibreOfficeを操作することができます。LibreOfficeでは、「Java」,「C#」,「C++」,「Python」から操作できる仕組みが用意されています。
LibreOfficeをC#から操作する方法を確認します。
ユニバーサル・ネットワーク・オブジェクト「Universal Network Objects」 (UNO)
LibreOffice(そして、OpenOffice)を操作することは、ユニバーサル・ネットワーク・オブジェクト「Universal Network Objects」 (UNO) を操作することです。
LibreOfficeは、マクロや開発言語をUNOブリッジ(ラッパー?)で、UNOと接続する仕組みです。C#やVisual BasicとUNOを接続するUNOブリッジは、CLIブリッジです。
CLI アセンブリを使用する方法とReflectionとInterop テクノロジーを使用する方法がある
LibreOfficeをC#から操作するには、LibreOffice SDKのCLI アセンブリを使用する方法とReflectionとInterop テクノロジーを使用する方法があります。CLI アセンブリを使用する方法は、情報が多いものの64bit版のLibreOffice では利用できない(方法がわからない)ことに注意が必要です。
C#から、LibreOfficeを利用する例 CLI アセンブリを使用する方法
LibreOffice SDKには、LibreOffice Calcを操作するC#のサンプルコードが含まれています。
C#から、LibreOfficeを操作するために、コードに追加する参照と名前空間
LibreOfficeをC#で操作するためには、dllを参照として追加し、LibreOfficeを操作するコードを記述します。名前空間をusingディレクティブに追加すると、コードの記述を短くすることができます。
(「C:\Program Files\LibreOffice\sdk\docs」(64bit版の場合の所在))
また、インターネット上(「Index of /examples/CLI/CSharp/Spreadsheet/」)からも入手できます。
このサンプルコードには、MakeFileが含まれており、このMakeFileは、ネイティブWindows用に構築されたGNUMakeによって、実行されることを仮定しています。
Visal Studioで、LibreOffice Calcを操作するプログラムを作成する
LibreOffce Calcを起動して、A1セルに、「Hello World!」という文字列を入力するアプリケーションを作成して、C#から、LibreOffce Calcが操作できることを確認します。
LibreOffice 7.3.1 向けのLibreOffice SDK7.3.1で、CliフォルダのDllのタイムスタンプが変化していたので、新たに、プロジェクト作成し、Windows10 64bt、LibreOffice(x64)環境で、実行できるか確認を行ったが、今まで通り、LibreOffice(x64)は、C#では操作できなかった。
LibreOfficeをC#でReflectionとInterop テクノロジーを使用して操作する
LibreOfficeをC#コードから操作する方法には、LibreOffice SDKを使用する方法の他に、ReflectionとInterop テクノロジーを使用する方法があります。Reflectionを使用する方法では、LibreOffice(x64)を問題なく操作でき、C#のコードを32bitでビルドしなければいけないという制約もありません。(Reflectionを使用すると、処理が遅くなると言われていますが、考えないことにします。)
Libre OfficeをC#で、操作するための情報
Libre OfficeをC#で、操作するための情報に関するリンクのまとめです。