Ruby で OpenOffice.org Calc

 2011-01-07
MS Office は、とっても高価なものなので、持っていない人もいるよね?
そこで、今回は OpenOffice の表計算ソフトの使い方を調べてみました!

Ruby から操作できれば、ツクールのデータを CSV などに変換する必要も無いので、
配列などが存在するデータでも楽に相互変換することができます。
あー、でも Table とかの値は操作できないなー。

まだ、全然わかってないんですけど、
最低限の値の書き出しくらいならできたんで、サンプル載せときます。

require 'win32ole'

module CellContentType
EMPTY = 0 # 未記入
VALUE = 1 # 数値
TEXT = 2 # 文字列
FORMULA = 3 # 関数
end

def RGB(red, green, blue)
return red << 16 | green << 8 | blue
end

ServiceManager = WIN32OLE.new("com.sun.star.ServiceManager")
StarDesktop = ServiceManager.createInstance("com.sun.star.frame.Desktop")

# 表計算ソフトの新規起動
document = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, [])
# ドキュメントのタイトルを変更
document.title = "テスト中"
# シートの取得 (以下、どちらも同じ処理)
sheet = document.sheets.getByName("Sheet1")
sheet = document.sheets.getByIndex(0)
# セルの取得 (以下、どちらも同じ処理)
cell = sheet.getCellRangeByName("A1")
cell = sheet.getCellByPosition(0, 0)
# セルの値を変更
sheet.getCellRangeByName("A1").string = "数値A"
sheet.getCellRangeByName("B1").string = "数値B"
sheet.getCellRangeByName("C1").string = "合計値"
sheet.getCellRangeByName("A1").value = 123
sheet.getCellRangeByName("B1").value = 321
sheet.getCellRangeByName("C1").formula = "=A1+B1"
sheet.getCellRangeByName("C2").formula = "=A1&B1"
# セルの値を判定
if sheet.getCellRangeByName("A1").type == CellContentType::EMPTY
sheet.getCellRangeByName("A1").value = "ここは実行されない"
end
# セルの背景色を変更
sheet.getCellRangeByName("A1:C1").CellBackColor = RGB(100, 255, 80)
sheet.getCellRangeByName("C2").CellBackColor = RGB(255, 255, 0)


参考文献:
 OpenOffice.org BASIC プログラミングガイド

コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/493-f989a72a
≪ トップページへこのページの先頭へ  ≫
カレンダー
01 << 2017/02 >> 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -

カテゴリー
最近の記事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事
08/08 お返事

最近のコメント
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事
02/24 お返事

タグクラウド

リンク