Mostrando entradas con la etiqueta exportar a excel. Mostrar todas las entradas
Mostrando entradas con la etiqueta exportar a excel. Mostrar todas las entradas

viernes, 18 de octubre de 2019

Cómo exportar un archivo txt a Excel

En el post Jcl: Generar un fichero para exportar a EXCEL vimos cómo generar un fichero host, el típico fichero de listado con los datos separados por el carácter ";" o separados por tabuladores, y se mencionaba que dicho fichero se podía descargar al equipo como txt para ser exportado a Excel posteriormente.

Pues bien, ahora vamos a ver esta parte.

¿Cómo se descarga un fichero host al equipo como archivo txt? Se realiza a través del File Transfer del propio host. Hay que indicar la siguiente información:
  • Nombre archivo sistema principal: Es el nombre del fichero host (se pone entre comillas). Ejemplo: 'XXX.YYY.JJJJJJJJ.PPPPPPPP.FLISTADO'
  • Nombre del archivo local: Se indica la ruta y el nombre del archivo txt (si no nos sabemos la ruta de memoria la podemos seleccionar pinchando en Examinar). Ejemplo: Ruta\listado.txt
  • Modalidad de transferencia: Nos da a elegir entre binario y ASCII (o texto). Seleccionamos ASCII (o texto) porque la información está editada en este tipo de ficheros, se elige binario en los ficheros en los que vienen datos numéricos comprimidos del tipo COMP-3.
  • Opciones: Pinchamos aquí y se abre una ventana cuya opción por defecto es la siguiente: ASCII CRLF RECFM(V) LRECL(133). Hay que realizar dos pequeños cambios. Uno de ellos es en RECFM(V) ya que hay que sustituir la V por FB (fijo bloqueado) que es la manera usual de crear los ficheros en host. El otro cambio a realizar es en LRECL(133) ya que hay que sustituir el 133 por la longitud del fichero host que será la que corresponda según lo indicado en el jcl donde se haya creado.
  • Pinchamos en "Añadir a la lista" y a continuación en "Enviar".

Tras realizar todos estos pasos tendremos el fichero host descargado como archivo txt en la ruta que se haya indicado.

Tenemos el archivo txt, ¿cómo se exporta a Excel? Lo primero de todo es abrir una hoja Excel. Desde el menú Inicio > Todos los programas > Office Applications pinchamos en Microsoft Excel y ya tenemos una Excel abierta.

Lo siguiente es pinchar en Abrir en la hoja Excel que tenemos abierta:



A continuación aparece una pantalla:


En donde se elige Todos los archivos (*.*) para así poder seleccionar el archivo listado.txt y a continuación pinchamos en Abrir.

Ahora aparece la siguiente pantalla:

          Aparece marcada por defecto la opción "Delimitados".
          No tocamos nada y pinchamos en Siguiente.

          En esta pantalla podemos seleccionar entre dos posibles opciones:
               Punto y coma - los datos del archivo están separados por ";".
               Tabulación - los datos del archivo están separados por tabuladores.
          Tras seleccionar lo que corresponda pinchamos en Siguiente.

          Aparece marcada por defecto la opción "General".
          No tocamos nada y pinchamos en Siguiente.
          Tras hacer todo esto veríamos lo siguiente:
           Ya tenemos los datos del archivo txt exportados en la Excel.

Y para guardar la Excel sólo tenemos que hacer lo siguiente:


En "Tipo" se elige la opción que indique Libro de Excel y la terminación .xls

Pues ya hemos exportado un archivo txt a Excel.

viernes, 1 de abril de 2016

Jcl: Generar un fichero para exportar a EXCEL

En ocasiones tenemos que generar por jcl un fichero para exportar posteriormente a Excel.

Podemos hacer dos cosas:

1º) Generar el fichero sin cabecera
2º) Generar el fichero con cabecera

Optar por el primer punto es lo más fácil porque sólo tendríamos que preparar un programa que generase un fichero de salida cuya copy o estructura sería algo como lo siguiente:

     01 W-REG-SALIDA.
          05 W-CAMPO1         PIC X(10).
          05 W-FILLER1          PIC X(01) VALUE ';'.
          05 W-CAMPO2         PIC X(10).
          05 W-FILLER2          PIC X(01) VALUE ';'.
           :
           :
          05 W-CAMPO9         PIC X(10).
          05 W-FILLER9          PIC X(01) VALUE ';'.

Cuando se ejecutase el programa en cuestión tendríamos un fichero del tipo:

     CAMPO1;CAMPO2;.....;CAMPO9;

De manera que podríamos descargar dicho fichero como un txt, y pasarlo a Excel de una vez que lo tuviéramos descargado en el equipo como txt.

Aunque optar por la segunda opción no significa mayor dificultad ni complejidad  pero sí habría que tener en cuenta alguna cosa. Veamos este caso en profundidad.

En este caso también tenemos que tener un programa que genere un fichero de salida con una estructura similar a la que acabamos de ver para la primera opción. Pero en este caso tenemos que tener en cuenta la longitud del fichero, y ¿por qué? Muy fácil, la respuesta está en relación al fichero que generemos con la cabecera. Es decir, tras ejecutar el programa que genere el fichero de salida con la estructura antes vista (contiene los datos separados por puntos y coma) se ejecutará el siguiente paso:

//PASOCAB     EXEC PGM=SORT
//SORTIN    DD *
//SORTOUT DD DSN=<<FICHERO-CABECERA>>,
//                DISP=(,CATLG,DELETE)
//                SPACE=(TKK,(10,1),RLSE),
//                DCB=(RECFM=FB,LRECL=621,BLKSIZE=27945)
//SYSOUT   DD SYSOUT=*
//SYSIN      DD *
   SORT FIELDS=COPY
   OUTREC FIELDS=(C'NOMB-COL1;',C'NOMB-COL2;',...C'NOMB-COLN;')



En el paso de SORT que acabamos de ver se genera un fichero con la cabecera que posteriormente tendrá la Excel. Cabe destacar lo siguiente: en el OUTREC FIELDS tenemos que, para incluir una nueva cabecera para encabezar una determinada columna, se debe poner

             C'NOMBRE-CABECERA;'

Y aquí viene lo importante: te tienes que fijar con qué longitud se genera este fichero. La longitud con la que se genere este fichero te la tienes que apuntar. Si has leído con atención, el fichero de salida generado en el programa ejecutado con anterioridad al paso antes mostrado debe tener la misma longitud que el fichero de cabecera generado en el paso de SORT que acabamos de ver.

Llegados a este punto tenemos dos ficheros:

  • Fichero de datos: generado por programa en el que tenemos la información requerida separada por puntos y comas, teniendo algo como lo siguiente CAMPO1;CAMPO2;.....;CAMPO9;
  • Fichero de cabecera: generado mediante un paso de SORT (ver el paso de SORT incluido), teniendo algo como lo siguiente CAB1;...;CAB9;

Lo último que tenemos que hacer es unir ambos ficheros en uno solo mediante un paso de SORT como el siguiente:


//PASOFEX     EXEC PGM=SORT
//SORTIN    DD DSN=<<FICHERO-CABECERA>>,DISP=SHR
//                 DD DSN=<<FICHERO-DATOS>>,DISP=SHR
//SORTOUT DD DSN=<<FICHERO-EXPORTAR-EXCEL>>,
//                 DISP=(,CATLG,DELETE)
//                 SPACE=(TKK,(10,1),RLSE),
//                 DCB=(RECFM=FB,LRECL=621,BLKSIZE=27945)
//SYSOUT   DD SYSOUT=*
//SYSIN      DD *
   SORT FIELDS=COPY

El resultado es un fichero en el que la primera línea es la cabecera (CAB1;...;CAB9;) y el resto de filas son los datos (CAMPO1;...;CAMPO9;). En este punto podríamos descargar el fichero resultante como un txt, y pasarlo a Excel de una vez que lo tuviéramos descargado en el equipo como txt.

En lugar de separar cada uno de los campos con el símbolo ; también existe otra variante que consiste en separar los campos mediante tabuladores. Para realizar esto tendríamos que definir el símbolo tabulador (X'05') de manera que en el programa cobol que generase el correspondiente fichero de datos tendríamos que tener una estructura como la siguiente:

     01 W-REG-SALIDA.
          05 W-CAMPO1         PIC X(10).
          05 W-FILLER1          PIC X(01) VALUE X'05'.
          05 W-CAMPO2         PIC X(10).
          05 W-FILLER2          PIC X(01) VALUE X'05'.
           :
           :
          05 W-CAMPO9         PIC X(10).

          05 W-FILLER9          PIC X(01) VALUE X'05'.

Esto ha sido todo por hoy. Espero que os haya resultado de utilidad.