Fecha actual Lun Jun 17, 2024 12:44 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 5 mensajes ] 
Autor Mensaje
 Asunto: XML Y EXCEL...
NotaPublicado: Lun Abr 28, 2008 4:21 am 

Registrado: Jue Ago 23, 2007 2:47 pm
Mensajes: 23
Saludos...

Estoy creando hojas excel en el formato XML... me ha resultado facil. Primero creo la hoja en excel y luego la guardo en formato xml, luego la edito con cualquier editor de texto y voy analizando el contenido del archivo. Posteriormente tomo lo que me sirve y construyo el archivo xml a traves de C3. Si ya se como Excel guarda la informacion en formato XML, luego solo tengo que replicar el asunto.

Hasta ahi todo facil.. puedo jugar con los formatos, puedo crear mas de una hoja en el mismo archivo, en fin.. facil y bonito.... pero me he topado con el problema de las "Ñ".

Abro excel con una hoja en blanco. Luego me pongo a digitar lo que sea... incluyo por supuesto palabras con Ñ y ñ. Luego lo grabo como archivo XML. Abro el archivo XML con el editor de texto y... .ahi estan las condenadas Ñ, tal cual las escribi en excel (esperaba que apareciese algun caracter raro, pero no... estaban las Ñ tal cual las redacte).

Tomo el programa en C3, replico el archivo construido que previamente habia construido en excel. Lo abro con el editor de texto y ahi estan las Ñ. Luego procedo a leerlo en excel y sorpresa... ninguna de las Ñ aparecio, solo caracteres extraños, que dificilmente puedo asociarlo con una Ñ.

Jugando con el editor de texto... encontre que al abrir el archivo (y veo la Ñ) me da la opcion de grabarlo como ANSI, UNICODE, UTF-8... opto por grabarlo como UNICODE y.... lo abro con EXCEL y aparecieron las Ñ.

Pues bien... deduzco que es la forma en que genero el archivo XML el que me esta dando problemas... desconozco de que forma pero siempre que grabo, lo grabo como ANSI (da lo mismo si uso OEMTOCHAR o no), y esa es la forma en la que EXCEL no reconoce la Ñ.

Para generar el archivo uso la funcion FCreate()... PUes bien, existe alguna forma para guardar el archivo como UNICODE en lugar de ANSI...???

Bueno eso.. sigo investigando...
Rodrigo Soto
Santiago Chile


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Abr 28, 2008 6:52 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Rodrigo,

En alguna parte de la cabecera del archivo xml debes definir la codificación, algo así:

<?xml version="1.0" encoding="utf-8"?>

En UTF-8 estos son los caracteres que debes escribir como dobles, es decir dos caracteres para representar uno (habrá más, yo he necesitado estos):

Á Chr( 195 ) + Chr( 129 )
É Chr( 195 ) + Chr( 137 )
Í Chr( 195 ) + Chr( 141 )
Ó Chr( 195 ) + Chr( 147 )
Ú Chr( 195 ) + Chr( 154 )
Ñ Chr( 195 ) + Chr( 145 )
á Chr( 195 ) + Chr( 161 )
é Chr( 195 ) + Chr( 169 )
í Chr( 195 ) + Chr( 173 )
ó Chr( 195 ) + Chr( 179 )
ú Chr( 195 ) + Chr( 186 )
ñ Chr( 195 ) + Chr( 177 )
± Chr( 194 ) + Chr( 177 )

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Abr 28, 2008 3:29 pm 

Registrado: Jue Ago 23, 2007 2:47 pm
Mensajes: 23
Saludos...

Investigando he hecho lo siguiente....

a) Cree el archivo xml a traves de C3. (Test001.xlm)
b) Tome ese archivo con el editor de texto y lo guarde en formato UNICODE. (Test002.xlm)

Al comparar los tamaños de los archivos, el archivo en UNICODE casi duplica en tamaño al escrito en ASCII.

Tome un editor hexadecimal, para ver el contenido y se observe que el contenido entre ambos archivos es "casi" similar... el archivo en unicode "intercala" (creo) un caracter entre cada caracter del ASCII... en fin...


Voy a probar aquello del UTF-8.


Lo que estoy haciendo es construir linea a linea el archivo XML (para que lo lea Excel), luego deduzco de lo que indicas, que debo tomar la linea y buscar dentro de ella los caracteres "conflictivos" y reemplazarlos por las combinaciones que me indicas. ¿Cierto...?

cLinea := Convertir_a_UTF( cLinea ) y luego..
fWrite( ::hFile, cLinea , Len(cLinea) )

y ya que estamos en el asunto... ¿Donde puedo encontrar una tabla de conversion, donde aparezca el codigo en ASCII y su correspondiente representacion en UTF-8?????


Bueno... solo eso
Saludos
Rodrigo - Soto


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Abr 28, 2008 4:08 pm 

Registrado: Jue Ago 23, 2007 2:47 pm
Mensajes: 23
Saludos...

Encontre en esta direccion una tabla para el asunto UTF-8


http://www1.tip.nl/~t876506/utf8tbl.html


Saludos...
Rodrigo Soto


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Abr 28, 2008 5:13 pm 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Rodrigo, C3 ya lo tiene implementado, mira en http://www.c3compiler.com/Es/Tools32Man ... ml?toutf8().htm

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 5 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron