Home > C# > 目的別資料 > Office文書の操作 > Libre Office > Libre OfficeをC#で操作する

Libre OfficeをC#で操作する

新規作成日 2022-03-21
最終更新日

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ディレクティブに追加すると、コードの記述を短くすることができます。

LibreOffice Calcを操作するC#のサンプルコード

(「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#で、操作するための情報に関するリンクのまとめです。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」