Ya hace un tiempo escribí unos pequeños ejemplos de tratamiento de hojas de cálculo Excel desde Ruby, que nos permitía importar y exportar datos.

Ahora acabo de probar roo, una gema para leer hojas de cálculo en formato ODS (OpenOffice), XLS (Excel) e incluso Google Spreadsheet. Para ODS y XLS sólo tiene soporte de lectura, pero para Google Spreadsheet también de escritura.

Aquí os dejo un ejemplo de cómo leer una hoja de cálculo de OpenOffice, sacar datos de ella y mostrarlo en formato YAML, que después podremos importar fácilmente desde Rails. Aunque la propia gema roo dispone de un método .to_yaml, no conseguí hacerlo funcionar así que lo pinté a pata.

# ods.rb
require 'rubygems'
require 'roo'

oo = Openoffice.new("plantas.ods")
oo.default_sheet = oo.sheets.first
2.upto(oo.last_row) do |line|
  nombre = oo.cell(line, 'A')
  familia = oo.cell(line, 'S')

  puts "planta#{line}:\n  nombre: #{nombre}\n  familia: #{familia}\n\n"
end

Para ejecutarlo y salvar el fichero YAML, directamente desde consola:

$ ruby ods.rb > plantas.yml

Leave a reply