Cargar archivo CSV en un arreglo (CSV.to_a)
En la empresa para la cual trabajo, se realizaba un proceso manual muy tedioso que consistía entre otras cosas en cargar dos archivos CSV a Excel y luego hacer una cantidad filtros, cálculos y conversiones (sin comentarios...).
Un día la persona encargada de este proceso, no lo pudo realizar y me lo asignaron a mi con un documento donde se explicaba paso a paso lo que había que realizar.
Como soy alérgico a los proceso manuales, entonces escribí un script en Ruby para que hiciera todo por mi.
Lo primero que necesité fue llenar dos arreglos con unos códigos que estaban formados por campos en unos archivo CSV; un archivo para cada arreglo.
De manera que quiero compartirles el código de un método que carga el contenido de un archivo CSV en un arreglo. Es fácil de entender así que eso se los dejo a ustedes:
require 'csv' def CSV.to_a(file, fs = ',', rs =nil, headers = true) arr = Array.new reader = CSV.open(file, 'r', fs) reader.shift if headers # quitar los encabezados reader.each do |row| if block_given? res = yield row else res = row end arr << res if res end return arr end
Acá les pongo un par de ejemplo de como se utiliza:
ordenes_arr = CSV.to_a('ordenesSW.csv','|') do |row|
"#{row[0]}-#{row[1]}#{row[2]}#{row[3]}"
end
ordenes_ips_arr = CSV.to_a('ordenesIPS.csv') do |row|
row[3] unless row[3] == '0'
end
ordenes_xx_arr = CSV.to_a('ordenesIPS.csv')
Saludos,