(更新日: 2017年9月18日 )
測定データなどがExcelにまとめられているのを、csvファイルに分離するruby scriptです。Windows上で実行します。
下のソースをsplit-each-sheet.rb(例)として保存して、split-each-sheet.rb hoge.xls という風に実行します。私はたいていCygwin上のrubyで実行させています。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
#
require 'nkf'
require 'win32ole'
def getAbsolutePath filename
fso = WIN32OLE.new('Scripting.FileSystemObject')
return fso.GetAbsolutePathName(filename)
end
def read_xls(xls)
filename = getAbsolutePath(xls)
xl = WIN32OLE.new('Excel.Application')
book = xl.Workbooks.Open(filename)
begin
book.Worksheets.each{|sheet|
str = ""
name = NKF.nkf("-w", sheet.name)
puts csv_name = "#{name}.csv"
sheet.UsedRange.Rows.each{ |row|
record = []
row.Columns.each{ |cell|
record << cell.Value
}
str += record.join(",") + "\n"
}
open(csv_name, "w"){|f| f.puts str}
}
ensure
book.Close
xl.Quit
end
end
def main
ARGV.each{ |xls|
read_xls(xls)
}
end
main











