1
require 'gchart'
require 'rubygems'
require 'roo'

oo = Excelx.new("datav.xlsx")
oo.default_sheet = oo.sheets.first
2.upto(47) do |line|
  data_a = [oo.cell(line,'B')]
  data_b = [oo.cell(line,'E')]

  chart_a = Gchart.new( :type => 'line',
                        :title => "A",
                        :theme => :keynote,
                        :width => 600,
                        :height => 500,
                        :data => data_a, 
                        :line_colors => 'e0440e',
                        :axis_with_labels => ['x', 'y'], 
                        :axis_range => [[0,50,20], [0,3000,500]],
                        :filename => "tmp/chart_a.png")

  chart_b = Gchart.new( :type => 'line',
                        :title => "B",
                        :theme => :keynote,
                        :width => 600,
                        :height => 500,
                        :data => data_b, 
                        :line_colors => 'e62ae5',
                        :axis_with_labels => ['x', 'y'], 
                        :axis_range => [[0,50,20], [0,3000,500]],
                        :filename => "tmp/chart_b.png")

  # Record file in filesystem
  chart_a.file
  chart_b.file

end

これにより、列BとEのすべてのセルの内容が引数:dataのみになります。配列として返す方法は?rooが配列を返すことができない場合、他にこれを行うgemはありますか?

4

2 に答える 2

1

column指定された列の値を配列として返すメソッドがあります。呼び出すoo.column(2)と、列Bの値が返されます。oo.column('B')これも機能する可能性があります。それをテストしていません。

于 2012-06-04T14:00:51.417 に答える
0

FasterCSVに使用したロジックと互換性を持たせるために、ハッシュとして行を戻す必要がありました。これにより、最初の行のハッシュがキーとして、現在の行が値として提供されます。

def row_from_excel(s, line)
  row = {}
  s.first_column.upto(s.last_column) do |col|
    cell_name = s.cell(1, col)
    logger.debug "************* #{col} => #{cell_name} => #{s.cell(line, col)}"
    row[cell_name] = s.cell(line, col)      
  end

  row    
end

s = Excelx.new(path_to_file) # or Excel.new(path_to_file)
2.upto(s.last_row) do |line|
  row = row_from_excel(s, line)
end
于 2012-11-27T14:44:57.280 に答える