Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LibreOffice API について

LibreOffice mini Conferrence 2016 Osaka/Japan での発表資料

  • Login to see the comments

LibreOffice API について

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

×