2017-08-18 41 views
1

私はrubyとrubyXLが初めてで、簡単な質問があるかもしれません。 私はRubyXLで解析するExcelファイルを持っています。ruby​​XL xslxから特定の列を繰り返し処理する

次に、列Bのすべての値を配列に保存します。そして私はこれをどうやってやるかわからない。多分誰かが私を助けることができますか?

@workbook = RubyXL::Parser.parse(path) 
. 
. 
. 
@excelColumnB = Array.new 
#only iterate column B (1)  
@workbook.worksheets[0].each[1] { |column| 
    column.cells.each { |cell| 
    val = cell && cell.value 
    excelColumnB.push(val) 
    puts val 
    } 
} 
return excelColumnB 

この例は間違っています。私は多くのことを試みました。

答えて

1

each[1]が主な問題です。そのように反復子を索引付けすることはできません。構文的には間違っています。ブロック変数には、列ではなく行が含まれます。

これを試してみてください:

@workbook.worksheets[0].each { |row| 
    val = row[1].value 
    @excelColumnB << val 
    puts val 
} 

しかし、私はあなたの配列を作成するために、より簡潔な方法をお勧めします。

@col_b = workbook.worksheets[0].collect {|row| row[1].value} 
+0

が、私は長い待ち時間のためにごめんなさい。それは完璧に働いた。また、私はこれがどのように機能するか理解しています。どうもありがとう。 – Frost

関連する問題