これまでタブ区切りのCSVファイルでデータ出力していたのだけど,先日タブ区切りCSVをエクセルにドラッグしたらきちんと読み込んでくれず悲しくなった.そんな不幸な目に合わない為に,Rubyから直接xlsファイルを書き出す方法.(っていうか,皆がOpenOffice.org使ってくれればいいのに……)
RubyからExcelファイルを書き出すには,Spreadsheetライブラリを使う.インストールはgemを使えば一発OK.
# gem install spreadsheet
使い方は以下の通り.bookの中にworksheetがあって,データはworksheetの各セルに書き込むという作り.Excelで文字化けしないように,書き込む文字列のエンコーディングSpreadsheet.client_encodingで指定するのが安全.
$KCODE = 'utf-8'
require 'rubygems'
require 'spreadsheet'
Spreadsheet.client_encoding = 'UTF-8'
workbook = Spreadsheet::Workbook.new
worksheet = workbook.create_worksheet(:name => 'test1')
# worksheet[行番号,列番号] で書き込める
worksheet[0, 0] = "hello"
# 行を纏めて書き込むには,worksheet.row(行番号).replaceにArrayを叩き込む
worksheet.row(1).replace ["Matz", "Guido", "Larry"]
# セル内改行もできます
worksheet[2, 0] = "日本語\nです"
workbook.write('tests.xls')
簡単な使い方はこちらのガイドにも載っています.
spreadsheetライブラリがでてから大分たつので,情報を更新しました@2011-09-13