Forum: Rails-ES Spreadsheet-Excel y codificación de car acteres

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jaime I. (Guest)
on 2007-03-13 19:16
(Received via mailing list)
Hola, ¿alguno ha probado la gema spreadsheet-excel?

Permite crear archivos XLS, es muy sencilla de usar. Incluso puede
generar varias hojas en un mismo archivo Excel, muy útil.

En esta página [1] hay un ejemplo muy sencillo, y en esta otra [2] uno
más complejo... Funcionan bien, pero me encuentro con un problema con la
codificación de caracteres. Lo típico, si meto tildes, eñes y tal, se ve
raro al abrirlo con la hoja de cálculo.

¿Sabéis cómo se hace para especificar el juego de caracteres a emplear
para guardar el archivo?

Gracias!

[1] http://raa.ruby-lang.org/project/spreadsheet/
[2] http://rorpaste.com/paste/details/619
javier ramirez (Guest)
on 2007-03-13 20:33
(Received via mailing list)
Hola Jaime!!

> En esta página [1] hay un ejemplo muy sencillo, y en esta otra [2] uno
> más complejo... Funcionan bien, pero me encuentro con un problema con
> la codificación de caracteres. Lo típico, si meto tildes, eñes y tal,
> se ve raro al abrirlo con la hoja de cálculo.
>
> ¿Sabéis cómo se hace para especificar el juego de caracteres a emplear
> para guardar el archivo?
Yo lo de los caracteres con excel sólo he conseguido verlo en el
encoding que quiero si hago el viejo truco de no guardar la hoja como
excel sino directamente guardar un xml con el formato excel y luego
ponerle extensión xls.

Cuando he guardado directamente en formato xls con alguna gema siempre
he tenido que convertir via iconv. Creo que el encoding nativo que traía
excel era UTF-16. De todas formas si abres con parseexcel cualquier
excel y vas a una celda concreta, puedes llamar a "encoding" para sacar
el nombre del encoding que tiene, y es al que deberías convertir tus
cadenas.

Saludos,

javier
David A. (Guest)
on 2007-03-13 20:42
(Received via mailing list)
On 3/13/07, javier ramirez <removed_email_address@domain.invalid> wrote:
> Yo lo de los caracteres con excel sólo he conseguido
> verlo en el encoding que quiero si hago el viejo truco de no guardar la hoja
> como excel sino directamente guardar un xml con el formato excel y luego
> ponerle extensión xls.

¿Has probado a abrir un xls generado por ese método con Open Office?

Yo con Microsoft Excel no tengo problemas para abrirlo, pero Open
Office me muestra el xml como texto plano :-S

--
David A., el único desarrollador con una orden de alejamiento de
Jeffrey Zeldman
Simplelogica.net, ahora con un 33,3% más de intromisión en listas de correo

Cuando no hago otra cosa escribo en mildiez.net
Jaime I. (Guest)
on 2007-03-14 05:55
(Received via mailing list)
Muchas gracias Javier, lo he conseguido solucionar guardando los datos
codificándolos con iconv:

Iconv.conv("ISO-8859-1","UTF-8", e.nombre)

Curiosamente con parseexcel me decía que la codificación era UTF-16LE,
pero con esa no rulaba...

Gracias de nuevo...

Jaime


El mar, 13-03-2007 a las 19:31 +0100, javier ramirez escribió:
javier ramirez (Guest)
on 2007-03-14 12:00
(Received via mailing list)
> ¿Has probado a abrir un xls generado por ese método con Open Office?
>
> Yo con Microsoft Excel no tengo problemas para abrirlo, pero Open
> Office me muestra el xml como texto plano :-S
>
Así es.. es un truco válido sólo para excel (al menos hasta donde yo
sé). Tiene la ventaja de que es más ligero de montar y más tratable, así
que si el target es MSExcel a veces viene bien. Si también quieres tirar
contra openoffice no queda más remedio que ir por xls nativo, o pasar
por OpenDocument (en ese caso excel no lo lee). Estaría también la
opción de tirar por el nuevo estándar de documento xml de MS, pero le
eché un ojo y es intratable.. además no sé si openoffice lo reconoce o no.

La única pega que le veo a generar un xls nativo es que o tiras de OLE,
y entonces el servidor donde corra la aplicación debe tener excel
instalado y además es muy lento, o sólo tienes acceso a un subconjunto
de la funcionalidad de excel. Para los casos normales ya va bien, pero a
veces hace falta alguna cosilla más.

saludos,

j

--
--------
Estamos de estreno... si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!
David A. (Guest)
on 2007-03-14 12:26
(Received via mailing list)
On 3/14/07, javier ramirez <removed_email_address@domain.invalid> wrote:
> Así es.. es un truco válido sólo para excel (al menos hasta donde yo
> sé). Tiene la ventaja de que es más ligero de montar y más tratable, así
> que si el target es MSExcel a veces viene bien. Si también quieres tirar
> contra openoffice no queda más remedio que ir por xls nativo, o pasar
> por OpenDocument (en ese caso excel no lo lee). Estaría también la
> opción de tirar por el nuevo estándar de documento xml de MS, pero le
> eché un ojo y es intratable.. además no sé si openoffice lo reconoce o no.

Muchas gracias Javier, empezaba a pensar que era un error nuestro :-)

--
David A., el único desarrollador con una orden de alejamiento de
Jeffrey Zeldman
Simplelogica.net, ahora con un 33,3% más de intromisión en listas de correo

Cuando no hago otra cosa escribo en mildiez.net
Jaime I. (Guest)
on 2007-03-14 12:33
(Received via mailing list)
Hola Javier...

El mié, 14-03-2007 a las 10:55 +0100, javier ramirez escribió:

> Si también quieres tirar
> contra openoffice no queda más remedio que ir por xls nativo, o pasar
> por OpenDocument (en ese caso excel no lo lee). Estaría también la

Ya tenemos cubiertos los frentes CSV y XLS entonces... para quedarme
satisfecho del todo con mis necesidades exportadoras me gustaría poder
generar también hojas en formato OpenDocument... ¿Sabéis si hay alguna
gema para hacer esto? ¿O se trata de generarlo a pelo, tirando de XML y
demás?
Jatsu A. (Guest)
on 2007-03-14 17:14
(Received via mailing list)
Hola a todos,

Yo tengo otra pregunta al respecto.
Se puede abrir un excel con un determinado estilo, y rellenarlo con los
datos de mi base de datos?
Con Spreadsheet::Excel.new se crea, yo quiero abrir uno existente, y
modificarlo.
Gracias.

Jatsu



Jaime I.(e)k dio:
Jaime I. (Guest)
on 2007-03-15 14:56
(Received via mailing list)
Sip, también se puede. Para eso necesitas además la gema
spreadsheet-parseexcel, que es la que te permite leer Excel y recoger
sus datos.

Aquí tienes más información:

http://raa.ruby-lang.org/project/parseexcel/

A ver si me marco un ejemplito en el blog porque ultimamente estoy
obsesionado con los excel :)

Jaime


El mié, 14-03-2007 a las 16:12 +0100, Jatsu A. escribió:
Jaime I. (Guest)
on 2007-03-15 14:57
(Received via mailing list)
Puntualizando: la gema se llama "parseexcel". Te permite leer Excel,
pero creo que si lo que quieres es modificarlo, supongo que tendrás que
jugar con las dos gemas: con parseexcel lees y con spreadsheet-excel
generas.

Jaime

El mié, 14-03-2007 a las 16:12 +0100, Jatsu A. escribió:
javier ramirez (Guest)
on 2007-03-16 11:42
(Received via mailing list)
> Ya tenemos cubiertos los frentes CSV y XLS entonces... para quedarme
> satisfecho del todo con mis necesidades exportadoras me gustaría poder
> generar también hojas en formato OpenDocument... ¿Sabéis si hay alguna
> gema para hacer esto? ¿O se trata de generarlo a pelo, tirando de XML
> y demás?
Yo para OpenDocument estuve buscando una vez gemas y no vi nada
desarrollado (había una entrada en rubyforge sin naca subido). De todos
modos, como openoffice puede leer de excel, siempre que no tengas algo
demasiado complicado supongo que con XLS ya funcionaría bien.

También vi en algún sitio en su día que puedes utilizar OpenOffice
directamente para convertir desde línea de comandos entre excel y
openoffice.

Lo que hacían para eso era poner una macro en openoffice y luego
aprovecharse de que en OO puedes pasarle una macro como parámetro en
línea de comandos y la ejecuta. En ese caso necesitarías OO en tu
servidor. La ventaja es que con diferentes macros puedes convertir
también a pdf, por ejemplo.


saludos,

j

--
--------
Estamos de estreno... si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!
David D. (Guest)
on 2009-04-17 13:52
Jaime I. wrote:
> Muchas gracias Javier, lo he conseguido solucionar guardando los datos
> codificándolos con iconv:
>
> Iconv.conv("ISO-8859-1","UTF-8", e.nombre)
>
> Curiosamente con parseexcel me decía que la codificación era UTF-16LE,
> pero con esa no rulaba...
>
> Gracias de nuevo...
>
> Jaime
>
>
> El mar, 13-03-2007 a las 19:31 +0100, javier ramirez escribió:

Buenas,

Se que el post es algo antiguo pero bueno. A ver si me podéis echar una
mano con este tema.

Hasta donde contáis he llegado sin problema pero ahora me surgen errores
con Iconv. El tema es que cuando no reconoce un carácter por algun
motivo falla la aplicación y claro, conociendo a la gente se que cada 2
por 3 me van a estar metiendo datos copiados de Word con sus carácteres
y ya he visto que me joden la marrana.

He leido por ahir que le puedes especificar a Iconv los carácteres que
quieres que ignore y tal para no tener este error. El problema es que no
puedo meter con este método todos los carácteres que se me ocurran
porque seguro que siempre habrá algun usuario de vete a saber donde que
me meta un carácter extraño que no he tenido en cuenta y me desmonte la
aplicación.

¿Como habéis solucionado el problema? ¿Alguna sugerencia?

Supongo que me he explicado bien...

Un saludo.
David D. (Guest)
on 2009-04-21 13:22
Nadie ha solucionado el tema? :-(
Xavier N. (Guest)
on 2009-04-21 13:40
(Received via mailing list)
Iconv.conv("ISO-8859-1//IGNORE","UTF-8", e.nombre)
Rafa (Guest)
on 2009-04-21 14:21
(Received via mailing list)
Hola,

Para muchos de vosotros esto será trivial, pero no he encontrado si se
puede definir en RoR un campo de entrada que sólo acepte números (Si
teclean otra tecla que ignore la entrada, por ejemplo para validar
códigos de cliente y cosas de esas) y si puedo definir mis propias
funciones de validación de los campos de entrada (ya sé que existe
validates_numericality_of), pero quiero validar que no me tecleen
números.

Muchas gracias.
Andrés G. (Guest)
on 2009-04-21 14:26
(Received via mailing list)
Si por validar, te refieres a impedir en el mismo momento que el usuario
pulsa la tecla no escribrir nada o decirle "sólo puedes poner números"
la solución pasa por usar javascript. Creo que cualquier cosa que valide
rails implica una llamada al server ya sea al pulsar el boton submit o
mediante una llamada AJAX (que es javascript)


El 21 de abril de 2009 12:20, Rafa <removed_email_address@domain.invalid> 
escribió:
Manuel González Noriega (Guest)
on 2009-04-21 14:41
(Received via mailing list)
2009/4/21 Rafa <removed_email_address@domain.invalid>

> Muchas gracias.
>
>
No sé si has mirado la documentación de los métodos validate_* (espero
que
sí) Uno de ellos es validates_format_of, que, combinado con una
expresión
regular adecuada, hace lo que esperas. Como dice Andrés, si quieres
evitar
el viaje al servidor, deberás complementarlo con javascript, sea dhtml o
ajax.


http://api.rubyonrails.org/classes/ActiveRecord/Va...
Sergio Gil Pérez de la Manga (Guest)
on 2009-04-21 17:54
(Received via mailing list)
Andrés G. (Guest)
on 2009-04-21 18:16
(Received via mailing list)
LiveValidation mola!!!
Y que Sergio lo haya hecho Super-rails friendly...no tengo palabras :-)

Gracias
El 21 de abril de 2009 15:53, Sergio Gil Pérez de la Manga <
removed_email_address@domain.invalid> escribió:
Rafa (Guest)
on 2009-04-22 15:40
(Received via mailing list)
Muchas gracias por las respuestas dadas hasta ahora.


Lo que no consigo encontrar en RoR un campo de entrada, por ejemplo, que
sólo acepte números (por ejemplo para un código de cliente) y si pulso
cualquier otro caracter lo ignoré, ¿hay que hacer dicha función en
javascript?

Salu2. Rafa.
Andrés G. (Guest)
on 2009-04-22 15:43
(Received via mailing list)
Usa el plugin de Sergio. Leetelo bien y conseguirás validación en lado
de
cliente y en lado de servidor (2x1 :-)
Miratelo bien, y cualquier duda vuelves

Un saludo

El 22 de abril de 2009 13:39, Rafa <removed_email_address@domain.invalid> 
escribió:
Manuel González Noriega (Guest)
on 2009-04-22 15:56
(Received via mailing list)
2009/4/22 Rafa <removed_email_address@domain.invalid>

>
Hola Rafa,

Para proseguir una conversación constructiva, sería necesario que,
aparte de
agradecer las respuestas, que está bien, te explayases un poco más sobre
si
has probado las soluciones y si te han servido, o no, y por qué en este
caso. Por lo que explicas, entiendo que ya estás utilizando
validates_format_of y te sirve. Entiendo también que necesitas que al
teclear en un campo ciertos caracteres no se vean reflejados. Para esto,
sí,
necesitarás javascript.

Como reflexión extra, que espero que te sirva realmente de algo, creo
que te
será realmente dificil realizar una aplicación web, sea en Rails o en
cualquier otro lenguaje/plataforma, sin comprender los principios
básicos
del desarrollo web, como puede ser la arquitectura de la web, la
comunicación entre navegador y servidor (al menos con los trazos más
gruesos), o los distintas capas implicadas, por ejemplo, qué cuestiones
afectan a la programación en servidor y cuáles a la programación en
cliente.

Mucha suerte en cualquier caso.
Rafa (Guest)
on 2009-04-22 18:20
(Received via mailing list)
Hola Manuel,

  Si tienes algo que decirme a mi directamente, sobre mi o mis
conocimientos, te recuerdo que en tu herramienta de correo dispondrá del
botón responder o responder a todos, la educación no esta reñido con el
conocimiento y viceversa.

  Saludos.
Manuel González Noriega (Guest)
on 2009-04-22 18:39
(Received via mailing list)
2009/4/22 Rafa <removed_email_address@domain.invalid>

> Hola Manuel,
>
>        Si tienes algo que decirme a mi directamente, sobre mi o mis
> conocimientos, te recuerdo que en tu herramienta de correo dispondrá del
> botón responder o responder a todos, la educación no esta reñido con el
> conocimiento y viceversa.
>
>        Saludos.
>

Hola Rafa,

En realidad, tanto el "responder" como el "responder a todos" causan el
mismo efecto con la configuración de la lista, pero entiendo lo que
quieres
decir.

 Mi reflexión sobre la necesidad de manejar con soltura ciertos
conceptos
fundamentales antes de poder desarrollar una aplicación web, por
ejemplo,
entendiendo de forma intuitiva qué se maneja y qué no se maneja con
javascript, me parece lo bastante general como para poder hacerla en
público. No trato de poner orejas de burro a nadie, sino de evitar que
se
intenten construir casas por el tejado (1). Disculpas si te he ofendido.

Un saludo

(1) Y disculpas a todos por esta frase horrible, construida con dos
muletiilas.
Rafa (Guest)
on 2009-04-22 18:59
(Received via mailing list)
Hola,

  No hay nada que disculpar. Creo que viendo el tema del correo cada uno
decide si quiere entrar o no en el hilo, para compartir sus
conocimientos y experiencias.

  Volviendo al hilo de los correos, había probado la validación numérica
que proporciona el Active Record, pero me gustaría añadir la de teclear
sólo números.

  Salu2. Rafa.
Andrés G. (Guest)
on 2009-04-22 19:05
(Received via mailing list)
Hola Rafa, parece que te has tomado de forma personal lo que te ha dicho
manuel. Yo soy sólo un usuario más de esta lista. Pero bajo mi opinión
está
bien que lo que te ha dicho manuel lo diga de forma pública, así todos
podemos leerlo y darnos por enterados de como deben de ser las preguntas
que
deberíamos hacer al conjunto de usuarios de la lista para que nos puedan
responder de una forma más ajustada. En definitiva, yo lo veo bien.

Un saludo

El 22 de abril de 2009 16:20, Rafa <removed_email_address@domain.invalid> 
escribió:
Andrés G. (Guest)
on 2009-04-22 19:13
(Received via mailing list)
Sigues sin aportar nada más al hilo. Yo te sigo dando la misma
respuesta,
porque creo sinceramente que te lo puede solucionar.

MI SOLUCIÓN:
mirate el plugin de Sergio, que el mismo Sergio te recomienda en este
mismo
hilo. Por lo poco que lo mire, lo que hace este plugin esta muy bien ya
que
tira de un javascript que esta currado para hacer las validaciones en el
lado del cliente (navegador). Sólo tienes que instalar su plugin y el js
de
LiveValidation. Creo que te gustará.

El 22 de abril de 2009 16:58, Rafa <removed_email_address@domain.invalid> 
escribió:
Sergio Gil Pérez de la Manga (Guest)
on 2009-04-22 19:29
(Received via mailing list)
ojo, el plugin (el mío al menos, el otro que enlacé no lo sé) no hace
*exactamente* lo que quieres, aunque sí algo que puede ser suficiente.

el plugin muestra un aviso al lado de cada campo con datos inválidos,
y con algo de javascript adicional, impide enviar el formulario
mientras haya algún campo en ese estado. entiendo que lo que tú
quieres es adicionalmente ignorar las pulsaciones de teclas que no
sean números. eso es javascript puro y no tiene nada que ver con
rails. independientemente de que pueda haber entre los miembros de
esta lista gente bastante buena con javascript (no es mi caso), estoy
seguro de que hallarás mejor respuesta a tu pregunta mediante recursos
especializados en javascript.

un saludo,



2009/4/22 Andrés gutiérrez <removed_email_address@domain.invalid>:
>> Hola,
>>        Salu2. Rafa.
>> >         dispondrá del
>> > el mismo efecto con la configuración de la lista, pero entiendo lo que
>> > Un saludo
>> > Ror-es mailing list
> Ror-es mailing list
> removed_email_address@domain.invalid
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>



--
Sergio Gil Pérez de la Manga
e-mail > removed_email_address@domain.invalid
blog > http://www.lacoctelera.com/porras
now > http://twitter.com/porras
This topic is locked and can not be replied to.