Siguiendo con esta serie de tutoriales en la semana de la amistad entre Excel y Rails
, vamos a ver ahora cómo podemos leer un archivo Excel desde una aplicación Ruby on Rails.
Para ello necesitamos la gema “parseexcel”, que podemos instalar mediante gem:
-
jaime@zimpa:~$ sudo gem install parseexcel
-
Password:
-
Bulk updating Gem source index for: http://gems.rubyforge.org
-
Successfully installed parseexcel-0.5.1.1
A continuación, veremos un ejemplo de cómo abrir un fichero Excel que se llama “datos.xls” y está en el directorio “/public/xls”, coger la primera hoja y mostrarlo como una tabla HTML. En primer lugar, el controlador:
-
class ExportadorController < ApplicationController
-
require ‘parseexcel’
-
include Spreadsheet
-
def parse_xls
-
# Prueba de leer un archivo Excel
-
workbook = Spreadsheet::ParseExcel.parse("#{RAILS_ROOT}/public/xls/datos.xls")
-
# Cogemos la primera hoja
-
@worksheet = workbook.worksheet(0)
-
end
-
end
Y en segundo lugar la vista, que recorre la hoja por filas y columnas y lo muestra en forma de tabla HTML:
-
<table border="1"><% for f in @worksheet %>
-
<tbody>
-
<tr><% for c in f %>
-
<td><%= c.to_s %></td>
-
<% end %></tr>
-
<% end %>
-
</tbody></table>
-
Eso es todo amigos… Otro día podemos pensar en cómo haríamos para modificar un archivo Excel desde una aplicación Ruby on Rails… parece que la solución pasará por conjuntar las dos gemas, una para leer (parseexcel) y otra para generar (spreadsheet-excel).
4 comments ↓
Muy bueno,
Me gustaría saber, como unir las dos gemas, sobre todo usar un excel como plantilla con sus estilos etc… y añadir desde mi BD las filas de datos que me convengan, y generar un nuevo excel.
Hola Jatsu… básicamente la idea es combinar este post con el anterior… por un lado vas leyendo el excel con parseexcel, y por otro lado vas escribiendo una nueva versión en otro archivo excel con spreadsheet-excel… finalmente borras el archivo excel y renombras el nuevo y ya lo tienes.
Ahora bien, lo de conservar los estilos del excel original ya no se si lo podrás hacer o no…
El problema que le veo yo a eso, es que tanto los workbook, como los worksheet, son de clases diferentes. Podria sacar los datos, de acuerdo, pero yo lo que quiero es utilizar un excel como plantilla, y añadir a esa plantilla mis datos
Pues será cuestión de investigar las posibilidades de ambas gemas. Por lo que he cubierto en mis posts anteriores, sólo explico la posibilidad de leer y guardar los datos, y no el formato, pero creo que sí se puede también trabajar con formatos (fuentes, colores, etc…)… Si lo llego a ver, descuida que lo publicaré. ¡Haz tu lo mismo!
Leave a Comment