lib/eco/api/common/people/default_parsers/xls_parser.rb in eco-helpers-2.0.29 vs lib/eco/api/common/people/default_parsers/xls_parser.rb in eco-helpers-2.0.30

- old
+ new

@@ -4,21 +4,36 @@ attr_accessor :already_required attr_reader :file def parser(file, deps) @file = file - rows.tap {|r| @file = nil} + rows.tap do |rws| + @file = nil + rws.each do |row| + to_string!(row) + end + end end def serializer(array_hash, deps) raise "Not implemented. TODO: using axlsx or rubyXL gems. See: https://spin.atomicobject.com/2017/03/22/parsing-excel-files-ruby/" end private + def to_string!(row) + row.transform_values! do |val| + next nil unless val + next val if val.is_a?(String) + val.to_s + end + end + + def headers - raise "You should implement this method" + logger.warn("Headers detection is using your fields_map.json file (native behaviour)") + session.fields_mapper.list(:external).uniq end def sheet_name 0 end @@ -32,10 +47,10 @@ workbook.sheet(name_or_index) end def rows(target = headers) begin - spreadheet.parse(header_search: target) + spreadheet.parse(header_search: target, clean: true) rescue Roo::HeaderRowNotFoundError => e missing = JSON.parse(e.message) logger.warn("The input file is missing these headers: #{missing}") present = target - missing rows(present)