diff --git a/app/models/repository.rb b/app/models/repository.rb index 349651882..809876bab 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -132,8 +132,7 @@ class Repository < ActiveRecord::Base end total_nr += 1 - # Creek XLSX parser returns Hash of the row, Roo - Array - row = row.is_a?(Hash) ? row.values.map(&:to_s) : row.map(&:to_s) + row = SpreadsheetParser.parse_row(row, sheet) record_row = RepositoryRow.new(name: row[name_index], repository: self, diff --git a/app/models/team.rb b/app/models/team.rb index 62423b35d..62517b0d2 100644 --- a/app/models/team.rb +++ b/app/models/team.rb @@ -80,8 +80,7 @@ class Team < ActiveRecord::Base next end total_nr += 1 - # Creek XLSX parser returns Hash of the row, Roo - Array - row = row.is_a?(Hash) ? row.values.map(&:to_s) : row.map(&:to_s) + row = SpreadsheetParser.parse_row(row, sheet) sample = Sample.new(name: row[sname_index], team: self, diff --git a/app/services/spreadsheet_parser.rb b/app/services/spreadsheet_parser.rb index 73e04b119..622881f77 100644 --- a/app/services/spreadsheet_parser.rb +++ b/app/services/spreadsheet_parser.rb @@ -52,4 +52,15 @@ class SpreadsheetParser end return header, columns end + + def self.parse_row(row, sheet) + # Creek XLSX parser returns Hash of the row, Roo - Array + if row.is_a?(Hash) + row.values.map(&:to_s) + elsif sheet.is_a?(Roo::Excelx) + row.map { |cell| cell.value.to_s } + else + row.map(&:to_s) + end + end end