#author("2017-02-16T14:16:27+09:00","default:yakumo_murakami","yakumo_murakami")
[[Ruby]]
エクセルファイルを読み書きするのって、xlsなら[[spreadsheet>xlsを読み込む。]]があるわよね。
けど、xlsxを読み書きしたいなら、どうするのかしら?~
回答はいくつかあるけど、こんなのもあるのよ。
* rubyXL [#le2ca00e]
** 導入方法(例) [#k29f9472]
sudo gem install rubyXL
** 使い方(1) [#r26b1a7e]
#!/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
** 使い方(2) [#n3458403]
最初の行は内容を示しておく。あとで配列でなくハッシュでアクセスできるように。
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")