次のコードがあります
require 'rubygems'
require 'roo'
class ExcelReader
dataarray = Array.new();
dataarray_new = Array.new();
workbook = Roo::Spreadsheet.open('C:\data\testexcel.xlsx')
worksheets = workbook.sheets
worksheets.each do |worksheet|
num_rows = 0
workbook.sheet(worksheet).each_row_streaming do |row|
if(num_rows>0) #skipping header
row_cells = row.map do |cell|
cell.value
end
dataarray.push(row_cells)
end
num_rows += 1
end
puts dataarray.to_s;
dataarray1, dataarray2 = dataarray.partition { |element|
for index in (0...dataarray.size)
element[index].first == dataarray1[index].first if(dataarray1!=nil)
dataarray_new.push(element[index]) if(element[index]!=nil)
end
}
end
puts dataarray_new.to_s;
end
電流出力
[1, "Mia", 2, "Isha", 1, "Mia", 2, "Isha", 1, "Mango", "Apple", 2, "Banana", "Cashew"]
実際、Excelは次のようになります。
sheet 1
No Name
1 Mia
2 Isha
Sheet 2
No Fruit1 Fruit2
1 Mango Apple
2 Banana Cashew
私はルビーに不慣れです出力を期待しています
[[[1, "Mia"], [[1, "Mango", "Apple"]], [[2, "Isha"], [2, "Banana", "Cashew"]]]
シート 1 の行 1 とシート 2 の行 1 を、パーティションで試した配列としてクラブする必要があります。シート 1 とシート 2 の列 1 は同じです。