Fork me on GitHub
Hoopla! - now with extra whiz-bang home

I seem to have a limitless stream of excel files coming at me from clients. Most of them are of the same format: first line is the column name and the rest of the lines are data.

Ruby has excellent baked-in capabilities for handling files, data, and even CSV stuff. Still, it was pretty hard for me to figure out how to turn a CSV file into an array of hashes where each cell was named with the correct column name.

So here y’are folks: an easy way to turn CSV files into an array of hashes.

    def csv_to_array(file_location)
      csv = CSV::parse(File.open(file_location, 'r') {|f| f.read })
      fields = csv.shift
      csv.collect { |record| Hash[*(0..(fields.length - 1)).collect {|index| [fields[index],record[index].to_s] }.flatten ] }
    end
blog comments powered by Disqus