2017-08-18 53 views
1

我是ruby和rubyXL的新手,並且有(也許)一個簡單的問題。 我有一個Excel文件,我用RubyXL解析。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