2021-02-20に投稿

JRubyでLibreOffice Calcのfodsファイルを読み書きするサンプル 2019

(2021-01-02) 2021年版書きました: JRubyでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021


以前 JavaScript(Rhino/jrunscript)で書いたものを今さらながら Nashorn 向けに書きなおそうとして調べたところ、非推奨になっていました。

2018-06-07 JavaでJavaScriptを実行する「Nashorn」が非推奨に、ECMAScriptの速い進化に追いつけないと。代替案はGraalVM - Publickey

去年のニュースですね。全然気づいてませんでした。GraalVM を使えとあり、それも面白そうではありますが時期尚早な感じもします。ちょっと考えて JRuby で書き直してみることにしました。

(※ 2019-12-02 に書いた記事のクロスポストです)


sonota88/libreoffice-jruby-sample (tag: 20191202)
https://github.com/sonota88/libreoffice-jruby-sample/tree/20191202

Ubuntu で動かす前提のサンプルになっていて、 libreoffice-java-common をインストールしておく必要があります。ライブラリまわりについては一つ前の記事なども参考にしてください。Windows などでもライブラリのパスの修正だけで動くんじゃないかと思います。

なんかデッドロックが発生してプログラムが終了しなかったのでサンプルスクリプトでは明示的に exit しています。jstack を使ってデッドロックしているなーというとこまで調べたあたりで気力が尽きました。また気が向いたら調べるかも……。


今回はじめて JRuby を使ってみましたが、 zip をダウンロードして展開して bin/ にパスを通すだけで使えて、いいですね。分かりやすい。

JRuby から Java のライブラリなどを使う場合、下記は必読でした。まずこれを読みましょう。

CallingJavaFromJRuby · jruby/jruby Wiki


次のようにシートをダンプしてくれる dump.rb もおまけで追加しました。値が入っている最大の行・列の取り方が分からなかったため、いったん100行・100列まで見るようにしました。サンプルということで許してください……。

$ jruby dump.rb foo.fods {シート名}
["a1", "b1"]
["a2", "b2"]

参考: もっとお手軽な機械可読テキストテーブルフォーマット - memo88

Originally published at memo88.hatenablog.com
ツイッターでシェア
みんなに共有、忘れないようにメモ

sonota486

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント