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.

<typo:code lang=ruby> 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