徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2015年 5月
« 4月   6月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2015年5月27日(水曜日)

RoR (ruby 1.8.7) でXLSXを読む

カテゴリー: - flyman @ 23時03分37秒

Ruby on Rails でXLSX形式のExcelシート(OOXML)を読むべく、悪戦苦闘してしまった。
原因は、たぶん、環境が古いからだろう。
Ruby 1.8.7
Rails 3.2.13
という状況なので、最新のGEMはほぼ入らない。

まず試したのが[rubyXL]だ。バージョンは1.1.12を入れた。
これでXLSXファイルを読むと、あら不思議、所々指定外のセルを読み込んでしまう。これがまた、MS Officeのブックはダメで、LibreOfficeだとOKだったりする。正しく読めないファイルをLibreOfficeで保存し直すと読めるのだが。

次に、[spreadsheet]を試してみたが、もともとこれはXLSXには対応していない。XLS(BIFF)のブックは正常に読み込めたので、旧形式だけで良ければこれもアリかも。

で、[roo]を入れた。バージョンは1.10.1だ。これはなかなかよろしい。XLSXでもXLSでも、今のところ正しく読めている。拡張子がちゃんと付いていればファイル形式を自動認識してくれるので同じルーチンでBIFFもOOXMLも読めてしまうのだ。
なお、rooを入れるにあたり、rubyzip 0.9.9もインストールが必要だった。Gemfileに

gem 'rubyzip', '~> 0.9.9'
gem 'roo', '~> 1.10.1'

を追記して、Controllerでは

s = Roo::Spreadsheet.open(work_file)
s.default_sheet = s.sheets[0]  # 最初のシート
s.first_row.upto(s.last_row) do |i|
  # s.cell(i, 1) で Aカラムが読み出せる
end

みたいな感じ。


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/1081

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.018 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
nikkansports
IT Pro
レスポンス
テーマ選択

(4 テーマ)