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)