RubyでExcel操作(spreadsheet)
Excelを読み取り内容をDBに格納するプログラムを書くのに
Javaのpoiで行こうかと思ったけれど、poiは数値フィールドをdoubleとして取得するため、
「23」という値が23.0となってしまう。
今回のデータでは「23.0」と「23」を明確に分けて取得する必要があるためpoiは却下。
Rubyのspreadsheetというgemを使ってみたらびっくりするぐらい簡単に取得できたのでメモ。
require 'rubygems' require 'spreadsheet' xls = Spreadsheet.open('excel.xls', 'rb') sheet = xls.worksheet(0) puts sheet[0, 0]
こんだけ。
まず、spreadsheetのgemをインストール
gem install 'spreadsheet'
Spreadsheet.openでエクセルを取得し、
xls.worksheet(0)で0番目のシートを取得。
sheet[0, 0]で0行0列を取得。
いとも簡単に「23」が取得できた。
で、OKかと思いきや今度はExcel内の関数評価に問題有り。
sheet[0, 0]でcellに関数が入っている場合はSpreadsheet:formulaが取得できるので、
formulaのメソッドvalueを叩けば良い。
sheet[0, 0].value
ただし、評価の仕方が問題で、cellに「=ROUNDUP(100/3, 3)」という関数が入っていた場合、
Excel上では「33.333」になるのに対して、spreadsheetで取得できた値は「33.333999999999996」。
コレでは使いものにならない....
次はPHPのPHPExcelを試そう。