excel Ruby

rubyでexcel操作 win32ole

rubyでエクセルを操作したいので、まずは簡単なものから試してみる。

環境
■OS
Windows10pro

■Ruby
>ruby -v
ruby 2.4.4p296 (2018-03-28 revision 63013) [x64-mingw32]

1.エクセルブックの作成

require 'win32ole'

#Excel VBA定数のロード
module Excel; end

excel = WIN32OLE.new('Excel.Application')
excel.visible = true #Excelを表示する。
excel.displayAlerts = true #アラートメッセージを表示する
WIN32OLE.const_load(excel, Excel)

#■上記のコメント除く6行のコードは、おまじないとして、意味は理解していなくても記述しておく。

指定のパスにtext.xlsxを作成する。
#Excelブックの新規作成
book = excel.workbooks.add

#指定のパスにtest.xlsxを作成する(保存する)
book.saveAs('C:\Users\test\win32ole\test.xlsx')

#Excelを閉じる
book.close

excel.quit()

2.エクセルブックを開く

指定のパスのtest.xlsxを開く

#おまじない
require 'win32ole'
module Excel; end
excel = WIN32OLE.new('Excel.Application')
excel.visible = true 
excel.displayAlerts = true 
WIN32OLE.const_load(excel, Excel)

#Excelブックを開く
book = excel.Workbooks.Open('C:\Users\test\win32ole\test.xlsx')

3.セルへの書き込み

A1セルに文字を書き込む

#おまじない
require 'win32ole'
module Excel; end
excel = WIN32OLE.new('Excel.Application')
excel.visible = true 
excel.displayAlerts = true 
WIN32OLE.const_load(excel, Excel)

#Excelブックを開く
book = excel.Workbooks.Open('C:\Users\test\win32ole\test.xlsx')

#Excelの一番左端のシートを取得
sheet = book.worksheets(1)

#A1セルへ書き込み(rowsが行の番号、columnsが列の番号)
sheet.rows[1].columns[1].value = 'rubyでエクセルを操作しよう'

-excel, Ruby