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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS