Ruby

エクセルファイルを読み書きするのって、xlsならspreadsheetがあるわよね。

けど、xlsxを読み書きしたいなら、どうするのかしら?
回答はいくつかあるけど、こんなのもあるのよ。

rubyXL

導入方法(例)

sudo gem install rubyXL

使い方(1)

#!/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)

最初の行は内容を示しておく。あとで配列でなくハッシュでアクセスできるように。

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")

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-16 (木) 14:16:27