エクセルファイルを読み書きするのって、xlsならspreadsheetがあるわよね。
けど、xlsxを読み書きしたいなら、どうするのかしら?
回答はいくつかあるけど、こんなのもあるのよ。
sudo gem install rubyXL
#!/usr/bin/ruby -EUTF-8 require 'rubyXL' class XLSFile def initialize(fn) @book = RubyXL::Workbook.new @sheet = @book[0] # 最初からシートが1つある @sheet.sheet_name = fn.gsub(/\.+$/,'') end def dump begin @sheet.each do |row| puts "#{row[0].value} #{row[1].value} #{row[2].value} #{row[3].value}" end rescue => ex p ex end end def write(fn) @book.write(fn) end attr_accessor :book,:sheet end
最初の行は内容を示しておく。あとで配列でなくハッシュでアクセスできるように。
c = XLSFile.new("test") c.sheet.add_cell(0, 0, '名前') c.sheet.add_cell(0, 1, '身長') c.sheet.add_cell(0, 2, '体重') c.sheet.add_cell(0, 3, '身長-100') c.sheet.add_cell(1, 0, 'イリヤスフィール・フォン・アインツベルン') c.sheet.add_cell(1, 1, 133) c.sheet.add_cell(1, 2, 30) c.sheet.add_cell(1, 3, '', 'B2-100') c.sheet.add_cell(2, 0, '陣内美緒') c.sheet.add_cell(2, 1, 118) c.sheet.add_cell(2, 2, 22) c.sheet.add_cell(2, 3, '', 'B3-100') # 中略 c.sheet.add_cell(2, 0, '計') c.sheet.add_cell(2, 1, '', 'SUM(B2:B3)') c.sheet.add_cell(2, 2, '計') c.sheet.add_cell(2, 3, '計') c.dump c.write("test2.xlsx")