El mié, 24-03-2010 a las 21:46 -0600, Mauricio Baeza escribió: > El 24 de marzo de 2010 08:23, José Jesús <[email protected]> escribió: > > > El mar, 23-03-2010 a las 16:46 -0500, Eivar Montenegro Mosquera > > escribió: > > > > > Hola José, > > > Puedes usar el siguiente código de ejemplo para leer un archivo texto > > > caracter por caracter en java, espero que te sea de ayuda: > > > [...] > > > > > > Gracias Eivar, > > > > Al menos de momento tengo solucionado como leer el archivo troceándolo > > cada 500 caracteres, con el código que me paso Mauricio en python. > > Investigare esta alternativa que me pasas, aunque eso me lleva a > > adentrarme en el mudo java y tengo que reconocer que desde el 95-98, > > cuando java era un bebe que no lo he vuelto a tratar. Pero en fin, como > > le dije a Mauricio si no se puede hacer con OOo Basic pues habrá que > > buscar otra alternativa. > > Como todos habéis podido intuir, no solo se trata de leer el fichero > > cada 500 caracteres. para partirlo me hubiera bastado con un comando por > > consola como: > > sed -e 's/(.{500})/\1\n/g' prueba.txt > salida.txt > > > > Para resolver el problema completo y elegantemente para el usuario, será > > necesario abrir un cuadro de dialogo para permitir que seleccione o > > busque el archivo a tratar. Presentarlo de forma comprensible. > > Permitirle modificar datos y generar el archivo final que tiene que ser > > una sucesión continua de caracteres similar al de entrada. > > > > Si al final es de alguna utilidad prometo publicar la solución. > > > > Gracias a todos. > > JJ > > > > > Hola... > > Todo lo que describes lo puedes hacer perfectamente desde OO Basic, excepto > claro cargar el archivo completo, el cual lo hacemos llamando a la función > de Python (desde OOo Basic) y terminas de nuevo con OOo Basic, pues para > guardar el archivo no tienes la limitante del tamaño... > > Saludos > Tras unos días un poco liado, os haré un resumen final a modo de colofón sobre este tema.
La macro que me paso Mauricio en python ha funcionado a la perfección. Tan solo unos detalles a tener en cuenta. El primero que efectivamente se puede portar directamente a Windows sin tener que instalar nada, pero cuidado con la "ruta" del archivo. Si se incluye la ruta completa del archivo con los caracteres de separación de directorio "\", esto puede que no de errores si el nombre del archivo empieza por un carácter alfabético pero generará un error si el nombre del archivo comienza por un número. Parece que en este caso el interprete toma la secuencia "\'número'", por ejemplo "\0", ó "\2", etc... por un carácter de control y genera un error. Así pues en Windows es mejor poner la ruta al archivo como: "\\directorio1\\directorio2\ \...", de este modo no hay riesgo de error. Por otro lado, existe un problema con los caracteres especiales como la "ñ", "Ñ". Cuando existe un carácter de este tipo el resultado es que el carácter especial lo cuenta como doble y lee en realidad un carácter menos (499 en lugar de 500). Si es en los primeros 500 caracteres, es decir el primer registro, todos los registros siguientes aparecerán desplazados un carácter. La solución a este problema la desconozco. Habrá quien se pregunte, que o quien puede generar un fichero de datos tan "particular", bueno pues es un formato que aquí en España se emplea para transmisión de datos telemáticos fiscales con la administración. Existe una publicación oficial y pública del formato del fichero, por si alguien esta interesado. En la especificación oficial expresamente se cita el carácter "Ñ" como el decimal 209 ó D1 en Hexadecimal. Cuando envías el fichero un validador (parser) comprueba que el fichero este correctamente construido. Ahí es donde se generan los problemas y la necesidad de validar previamente el fichero. Prácticamente todos los programas actuales de contabilidad y gestión generan estos ficheros adecuadamente, pero en ocasiones te encuentras que alguien tiene un programa tan antiguo que no lo hace o que la empresa debe declarar a la agencia nacional pero también a la, o las autonómicas y así el desmadre es mayor. En cualquier caso creo que es muy instructivo tener que lidiar con un caso así, desde el punto de vista docente. Yo al menos he aprendido bastante. Sigo investigando,... si existe un método de leer bytes (que seguro que lo hay pero yo no he sido capaz de realizarlo) mediante OOo Basic y como arreglar lo de las eñes, además de no escribiéndolas. Gracias a todos, JJ P.D. Mauricio: al final no te envíe el fichero de muestra, por problemas que no vienen al caso, creo que ya no es necesario, pero si te interesa puedo enviártelo directamente. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
