Spreadsheet-Excel y codificación de car acteres


#1

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


#2

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


#3

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ó:


#4

¿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!!


#5

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 :slight_smile:


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


#6

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?


#7

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


#8

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:


#9

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ó:


#10

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 :slight_smile:

Jaime

El mié, 14-03-2007 a las 16:12 +0100, Jatsu A. escribió:


#11

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!!


#12

Nadie ha solucionado el tema? :frowning:


#13

Iconv.conv(“ISO-8859-1//IGNORE”,“UTF-8”, e.nombre)


#14

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.


#15

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.


#16

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ó:


#17

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/Validations/ClassMethods.html#M002111


#18

Más opciones:

http://livevalidation.com/
http://github.com/porras/livevalidation/tree/master (autobombo)
http://github.com/augustl/live-validations/tree/master


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


#19

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.


#20

LiveValidation mola!!!
Y que Sergio lo haya hecho Super-rails friendly…no tengo palabras :slight_smile:

Gracias
El 21 de abril de 2009 15:53, Sergio Gil Pérez de la Manga <
removed_email_address@domain.invalid> escribió: