rubyでエクセルファイルを作成

とりあえず、rubyから

  • セルへの記入
  • 色づけ(背景色)
  • フォント変更(bold, italic)
  • 名前の定義
  • 名前へのリンクの作成

をやってみました。

require 'excel'
require 'file-win32'

def addName(doc, name, cell)
  doc.names.add(name, "=%s!%s" % [cell.worksheet.name, cell.address])
end

Excel.runDuring(true, true) do |excel|
  doc = excel.workbooks.add
  doc.worksheets(1).name = "LL"

  ruby = doc.worksheets(1).cells(1,1)
  ruby.value = 'Ruby'
  
  perl = doc.worksheets(1).cells(2,1)
  perl.value = 'Perl'
  perl.interior.colorindex = 3
  
  python = doc.worksheets(1).cells(1,2)
  python.value = 'Python'
  python.font.italic = true
  python.interior.colorindex = 6
  
  php = doc.worksheets(1).cells(2,2)
  php.value = 'PHP'
  php.interior.colorindex = 7
  php.font.bold = true
  
  [ruby, perl, python, php].each do |cell|
    addName(doc, cell.value, cell)
  end
  
  sht2 = doc.worksheets(2)
  sht2.name = "link"
  nms = doc.names
  for row in 1..nms.count
    sht2.hyperlinks.add(sht2.cells(row, 2), "", nms.item(row).name, "linkto: #{nms.item(row).name}", nms.item(row).name)
    sht2.cells(row, 3).value = nms.item(row).referstorange.address
  end
  
  doc.saveas(FileSystemObject.instance.getAbsolutePathName("Hoge.xls"))
end

rubyからoleを使うことについては、
http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/ruby-win32ole/excel-1.html
などを参考に。
また、色については、
http://www.microsoft.com/japan/technet/scriptcenter/resources/officetips/mar05/tips0329.mspx
などを参考に。


意外に、rubyからexcel操作するの面白いですねw
まあ、スクリプト起動中にexcel弄っていると落ちたり、なんか凄く時間が掛かったりするけどね。。。