SlideShare a Scribd company logo
1
LibreOffice API について
2016/01/09
LibreOffice mini Conference 2016 Osaka/Japan
Sansan 株式会社 辰濱健一
2
Agenda
自己紹介
LibreOffice API について
サンプルを実行する
サンプルを読み解く
API を使いやすくするライブラリ
3
自己紹介
4
自己紹介
辰濱健一
https://www.facebook.com/kenichi.tatsuhama
徳島県生まれ、奈良県育ち
就職以来、3社連続徳島勤務
現在は、 Sansan 株式会社 Sansan 神山ラボ勤務
サテライトオフィスでのリモートワークです
趣味は、音楽・旅行
徳島県内の温泉のイベントで、エレクトーンソロでの出演依頼
神山町内のイベントで、管楽器のアンサンブルで出演
昨年は八丈島、石垣島、北海道に行った
徳島でモバイルアプリの勉強会を主催している
5
業務経歴
1社目@徳島
Java, VC++ にて PC のクライアントアプリケーション開発
パフォーマンス改善や UI 自動テスト導入も実施
2社目@徳島
iOS, Android, Windows8 のスマホ・タブレット向けアプリ開発
3社目@徳島
Android アプリ開発、 iOS コードレビュー
スマホアプリの自動テスト導入
リモートワーク
6
Sansan 神山ラボ&リモートワーク
7
LibreOffice API について
8
LibreOffice API とは?
ざっくり言うと、プログラムから LibreOffice を操作する手段
API … Applicatioin Programming Interface
マウス操作などは GUI ( Graphical User Interface )
http://api.libreoffice.org/ に情報やサンプルがある
色んなプログラミング言語から
扱うことが可能
9
マクロとの違い
プログラムの場所が違う
マクロは、 LibreOffice の文書内のプログラムから
LibreOffice API は、 LibreOffice 外のプログラムから
10
サンプルを動かす
11
API を利用するための準備
(Windows & Eclipse, Java)
Windows & Eclipse から Java で API を呼び出す準備
LibreOffice をインストール
LibreOffice SDK をインストール
Eclipse をインストール
…コマンドラインでもできますが、統合開発環境でやりたい派なので
Eclipse にプロジェクトを作って、サンプルコードを取り込む
12
LibreOffice のインストール
公式サイトからダウンロードして、
インストーラでインストール
https://ja.libreoffice.org/dow
nload/libreoffice-fresh/
13
LibreOffice SDK のインストール
メインインストーラの下の方にある
https://ja.libreoffice.org/down
load/libreoffice-fresh/
14
Eclipse のインストール
https://eclipse.org/downloads/
Java …が動けばどれでも
15
Eclipse にサンプルを取り込む
任意の場所に workspace を作成
File > New > Java Project
Project Name …は適当に
エクスプローラで、 ${LibreOffice}/sdk/examples/java/Spreadsheet
を開き、ファイルを全て選択して、 Eclipse プロジェクトの src フォルダ
へ D&D する
16
Eclipse にサンプルを取り込む
ダイアログが出たら、 Copy files を選択
17
Eclipse にサンプルを取り込む
エラーが出てるはず
18
Eclipse にサンプルを取り込む
プロジェクトを右クリックして、 Properties を開く
Java Build Path を開き、 Libraries タブの Add External JARs…
をクリック
19
Eclipse にサンプルを取り込む
${LibreOffice}/classes 以下の *.jar ファイルを全て選択
上記フォルダ内に、
https://forum.openoffice.org/en/forum/viewtopic.php?t=2520
からダウンロードした、 bootstrapconnector.jar も入れて、パスにも含
めてください
20
Eclipse にサンプルを取り込む
SCalc.java を右クリック
Run As > Java Application
エラーが出るはず
※CalcAddins.java …のエラーの消し方がまだわかっていない
21
エラーの対処
BootstrapSocketConnector を使った方法に書き換える
( SCalc.java )
import 文の追加
xContext の
取得方法を変更
22
実行結果
Calc が起動して、値が入り、スタイル設定して、グラフができた
23
サンプルを読み解く( SCalc.java )
24
ざっと読んでみる
起動
25
Calc を開く
26
スタイル定義
”My Style” は背景色 6710932 、文字色 16777215
27
シートのセルに値を入れる
28
スタイル設定
29
グラフ挿入
A1:N4 がデータ範囲、グラフ挿入位置を Rectangle で指定
30
グラフ設定の変更
3D グラフにして、タイトル設定
31
実行結果
32
モデル
シートのセルに値を入れる
Doc
Sheets
Sheet[0] Sheet[N]・・・
モデルとコードの対応が
イメージできますか??
33
API Reference
import 文を見ると、 API Reference で探しやすい
http://api.libreoffice.org/docs/idl/ref/annotated.html
34
XSpreadsheets
http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_
1_1star_1_1sheet_1_1XSpreadsheets.html
シートの追加や削除・コピーの機能があることがわかる
35
サンプルを読んだ感想
コードが長い
難しそう
QueryInterface しないといけないのが直感的じゃない
static おじさん
36
簡単に使えるライブラリを作りました
…まだ作りかけ
ある程度まとまったら、 Github で公開する予定
37
Before
Doc から 0 番目の Sheet …をとるだけなのに
Doc
Sheets
Sheet[0] Sheet[N]・・・
38
After
これだけ
Doc
Sheets
Sheet[0] Sheet[N]・・・
XXSpreadsheet xSheet = myDoc.getSheet(0);
※XSpreadsheet をラップした XXSpreadsheet 型になっている
39
Before
スタイル定義
”My Style” は背景色 6710932 、文字色 16777215
40
After
スタイル定義
”My Style” は背景色 6710932 、文字色 16777215
※XPropertySet をラップした XXCellPropertySet 型になっている
※ プロパティの getter / setter を提供
41
Before
グラフ挿入と変更
42
After
グラフ挿入と変更
43
ライブラリを使った簡単なサンプル
新規作成だけじゃなく、既存ファイル
を開くことも可能
範囲指定 (A2:C2 など ) で値設定
可能
実行結果
44
LibreOffice API を使ったシステム連携
帳票出力(領収書など)
Web などから、データを受け付ける
帳票テンプレートを Calc で読み込んで、データ入力
PDF 保存
メールで送信
顧客リストから一斉メール送信
Calc の顧客リストを開く
メールアドレス列に書かれているメールアドレスを収集
メール送信
このように、 LibreOffice API を使うことによって、
システムの一部に LibreOffice を取り入れることができます。
ここの処理が
LibreOffice
45
まとめ
46
まとめ
LibreOffice API を使うと、外部プログラムから LibreOffice を利用
することができる
Java, Python, C++ などのプログラミング言語から扱うことができる
サンプルを見る限り、ラッパーライブラリを使わないと難易度は高い
LibreOffice API を通して、システムの一部に LibreOffice を取り入
れることができる
47
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License
(unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos
and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.
ご清聴ありがとうございました
48
質疑応答

More Related Content

PDF
マイクロサービス 4つの分割アプローチ
PDF
ソフトウェア開発のやり方の改善
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PPTX
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
PDF
Redmine にいろいろ埋め込んでみた
PDF
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
マイクロサービス 4つの分割アプローチ
ソフトウェア開発のやり方の改善
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
新入社員のための大規模ゲーム開発入門 サーバサイド編
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
Redmine にいろいろ埋め込んでみた
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門

What's hot (20)

PPTX
Redisの特徴と活用方法について
PPTX
MLOps入門
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
PDF
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
RESTful Web アプリの設計レビューの話
PDF
最近のストリーム処理事情振り返り
PDF
マイクロにしすぎた結果がこれだよ!
PDF
MQTTとAMQPと.NET
PDF
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
PDF
それはYAGNIか? それとも思考停止か?
PDF
2022_sakura-yube_ddd.pdf
PDF
ドメイン駆動設計 本格入門
PDF
例外設計における大罪
PDF
DDD sample code explained in Java
PPTX
LIFULL HOME'SでのSolrの構成と運用の変遷
PDF
ドメイン駆動設計 分析しながら設計する
Redisの特徴と活用方法について
MLOps入門
SPAセキュリティ入門~PHP Conference Japan 2021
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
マルチテナント化で知っておきたいデータベースのこと
Apache Arrow - データ処理ツールの次世代プラットフォーム
RESTful Web アプリの設計レビューの話
最近のストリーム処理事情振り返り
マイクロにしすぎた結果がこれだよ!
MQTTとAMQPと.NET
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
それはYAGNIか? それとも思考停止か?
2022_sakura-yube_ddd.pdf
ドメイン駆動設計 本格入門
例外設計における大罪
DDD sample code explained in Java
LIFULL HOME'SでのSolrの構成と運用の変遷
ドメイン駆動設計 分析しながら設計する
Ad

Viewers also liked (10)

PDF
"Hello World!" から始める Calc で LibreOffice Basic
PDF
高校教科「情報」におけるLibreOfficeの適用可能性検討
PDF
LibreOffice導入のポイント10
PDF
「ワープロソフト」のセオリーを押さえよう! Writer 編
PPTX
SI-Toolkit for Web Testing ハンズオン勉強会
PDF
文系ITエンジニア育成教育におけるRubyの活用
PDF
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
PDF
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
PDF
React.jsでクライアントサイドなWebアプリ入門
PPTX
今からでも遅くない! React事始め
"Hello World!" から始める Calc で LibreOffice Basic
高校教科「情報」におけるLibreOfficeの適用可能性検討
LibreOffice導入のポイント10
「ワープロソフト」のセオリーを押さえよう! Writer 編
SI-Toolkit for Web Testing ハンズオン勉強会
文系ITエンジニア育成教育におけるRubyの活用
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
React.jsでクライアントサイドなWebアプリ入門
今からでも遅くない! React事始め
Ad

Similar to LibreOffice API について (15)

PDF
LibreOffice for NPO 20121104
PDF
オープンソースの統合オフィスソフトLibreOfficeの最新動向 OSC2012 Fukuoka
PDF
LibreOfficeの最新動向 in OSC 2015 Hiroshima
PDF
LibreOfficeをビルドしてみよう(Windows)
PDF
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
PDF
2015/8/8 関西 オープンソースカンファレンス 勉強会 スライド
PDF
LibreOffice No coding extention(ClipArt)
PDF
Recent Information about LibreOffice
PDF
LibreOfficeとモバイルデバイス
PDF
Excelとの違いを意識することから始めるCalc入門
PDF
POI4XPagesを使ったword-excelへの簡単エクスポート
PDF
収支の把握と共有を圧倒的に楽にする「プロジェクト管理freee」とAPIの活用例
PPT
Firefox勉強会 2nd gigs_資料
PDF
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
ODP
LibreOffice開発活動 (オープンソースカンファレンス2018 Osaka)
LibreOffice for NPO 20121104
オープンソースの統合オフィスソフトLibreOfficeの最新動向 OSC2012 Fukuoka
LibreOfficeの最新動向 in OSC 2015 Hiroshima
LibreOfficeをビルドしてみよう(Windows)
What's new in 4.0 of LibreOffice / LibreOffice 4.0の新機能
2015/8/8 関西 オープンソースカンファレンス 勉強会 スライド
LibreOffice No coding extention(ClipArt)
Recent Information about LibreOffice
LibreOfficeとモバイルデバイス
Excelとの違いを意識することから始めるCalc入門
POI4XPagesを使ったword-excelへの簡単エクスポート
収支の把握と共有を圧倒的に楽にする「プロジェクト管理freee」とAPIの活用例
Firefox勉強会 2nd gigs_資料
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
LibreOffice開発活動 (オープンソースカンファレンス2018 Osaka)

More from Kenichi Tatsuhama (20)

PDF
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01
PDF
地方創生ワカモノ会合
PDF
Google Analytics のデータ分析ハンズオン
PDF
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
PDF
知っておきたいFirebase の色んな上限について
PDF
Android 開発の昔と今
PDF
Firebase Extensions はじめの一歩
PDF
Firebase & BigQuery で Android アプリの成⻑を支える
PPTX
GDG DevFest Tokyo 2019 Day2 Special Hands-on
PPTX
Firebase Summit 2019 Recap
PPTX
Cloud Firestore を使って、Polling をやめたい話
PPTX
Firebase hands on in Matsuyama
PPTX
インドのインターネット環境 との戦い方
PPTX
インドの低速なネットワーク環境の攻略法
PPTX
DroidKaigi 2018 参加報告会 Closing
PPTX
企業スポンサー
PPTX
参加したセッションの ピックアップ
PPTX
CFP(Call For Paper) を出す話
PPTX
DroidKaigi 2018 参加報告会
PPTX
DroidKaigi アプリの内部を見る
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01
地方創生ワカモノ会合
Google Analytics のデータ分析ハンズオン
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
知っておきたいFirebase の色んな上限について
Android 開発の昔と今
Firebase Extensions はじめの一歩
Firebase & BigQuery で Android アプリの成⻑を支える
GDG DevFest Tokyo 2019 Day2 Special Hands-on
Firebase Summit 2019 Recap
Cloud Firestore を使って、Polling をやめたい話
Firebase hands on in Matsuyama
インドのインターネット環境 との戦い方
インドの低速なネットワーク環境の攻略法
DroidKaigi 2018 参加報告会 Closing
企業スポンサー
参加したセッションの ピックアップ
CFP(Call For Paper) を出す話
DroidKaigi 2018 参加報告会
DroidKaigi アプリの内部を見る

LibreOffice API について