0

次のコードがあります

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 は同じです。

4

1 に答える 1