QA@IT

RubyでExcelをcsvに変換するライブラリは何がいいでしょうか。

6704 PV

ruby-toolbox.comで下記のspreadsheetライブラリを見つけたのですが、JavaのApache POIのようなデファクトライブラリはありますでしょうか。

https://www.ruby-toolbox.com/gems/spreadsheet

単純にcsvに変換したいだけですので、下記の操作がライブラリで出来る必要はありません。
・セルへ値の書き込み
・罫線設定
・書式設定
・数式設定

利用しているRubyのバージョンは1.9.2です。OSはUbuntuです。
Excelはxls, xlsxのファイルをcsvに変換したいです。

  • spreadsheetはxlsのファイルは読み書きできますが、xlsxには対応していませんでした。 -

回答

有名なExcelを扱うライブラリはいくつがあります。
しかし、どのライブラリも今のところデファクトとまでには至ってない思います。

csvへの変換が目的であれば、rooというライブラリがいいように思います。
http://roo.rubyforge.org/

openしてto_csvするだけでcsv出力ができてしまいます。

以下に使い方を書きます。

Installing

gem install roo

usage

require 'rubygems'
require 'roo'

book = Excelx.new("test.xlsx")
#book = Openoffice.new("test.ods")
book.default_sheet = book.sheets.first
book.to_csv("test.csv")

※私の環境にはExcelがないのでOpen-office spreadsheets (.ods)でしか試せていません。
※動かなかったらごめんなさい。
試した環境 : ruby 1.9.3p194

編集 履歴 (1)
  • xls, xlsxどちらも読み書き出来る事が確認できました。

    rooはxlsについてはspreadsheetのgemに委譲をしていて、xlsxを実装してあるようです。

    xlsについてはspreadsheetでいいかなと思っています。xlsxはいくつかライブラリがあるようなので引き続き検証しています。
    -

Windows Serverもしくは、Windowsクライアント上で作業するためのスクリプトということなら、win32ole を使うというのでいかがでしょうか?

Rubyist Magazine: Win32OLE 活用法 【第 2 回】 Excel
http://jp.rubyist.net/magazine/?0004-Win32OLE

編集 履歴 (0)
  • linux環境で動作するものを探していたためwin32oleは選択できませんでした。

    環境について追記しておきます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。