RubyでExcelを操作する
xlsデータを読み込むためにはいくつかの方法があるらしい。
Win32API、ParseExcelやSpreadsheetというライブラリがあるようだ。
Win32APIはWindows環境以外だと動かないらしい。
Win32API
- Excelのオブジェクトモデル
- Application オブジェクト
- Workbook オブジェクト
- Worksheet オブジェクト
- Range オブジェクト
- 説明
- Applicationオブジェクト⇒Excelアプリ自身、実行中の情報を取得できる
- Workbookオブジェクト⇒開いている特定のブック
- Worksheetオブジェクト⇒ブックの中の一枚のシート
- Rangeオブジェクト⇒セル・行・列・1つ以上のセルのブロックを含む範囲+複数のセルにまたがるグループを表現します。目的の範囲をRangeオブジェクトとして取得することでその値や、境界線、書式などを取得、変更できる
- Applicationオブジェクト⇒所有する⇒Workbookオブジェクト⇒所有する⇒Workbookオブジェクト⇒所有する⇒Worksheetオブジェクト⇒使用する⇒Range オブジェクト
- Excelファイルをパースする
require 'win32ole' def getAbsolutePath filename・・・(1) fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.GetAbsolutePathName(filename) end filename = getAbsolutePath("sample.xls") #引数:任意のファイル名・・・(1) xl = WIN32OLE.new('Excel.Application') book = xl.Workbooks.Open(filename)・・・(2) begin book.Worksheets.each do |sheet|・・・(3) #UsedRangeは何かしら操作がされているセル(罫線やセル結合など含む)がなくなるまで全部を範囲にする。 sheet.UsedRange.Rows.each do |row|・・・(4) # sheet.Range("B1:F20").Rows.each do |row| ⇒このように範囲指定も可。 record = [] row.Columns.each do |cell|・・・(4) record << cell.Value・・・(6) end puts record.join(",") end end ensure・・・(5) book.Close xl.Quit end
Spreadsheet
- 参照(わかり易くまとめてあるサイトがあったので直で参照してください。)