PDA

Ver la Versión Completa : [Duda] Exportar a Excel


Roger
4 de mayo de 2020, 01:56
Necesito al exportar un campo envié a la columna en excel de esta forma
CODIGO PRODUCTO EN EXCEL CODIGO PRODUCTO
127 ACONDICIONADOR 000127 ACONDICIONADOR

Manualmente lo puedo hacer pero necesito que sea automático por programa intente poniendo campo alfanumérico y no funciona.

Hrmcobol
4 de mayo de 2020, 03:32
Hola Roger, disculpa pero no entiendo.

Saludos
H

Roger
4 de mayo de 2020, 04:13
en la primera imagen asi lo exporta y el la segunda asi deseo

Josber
4 de mayo de 2020, 09:02
intente poniendo campo alfanumérico y no funciona

prueba de la siguiente manera a ver si te vale


01 EXPORTADO.
03 PIC X VALUE "'".
03 NUM PIC 9(6) USAGE IS DISPLAY.
.
.
.
PROCEDURE DIVISION.
.
.
.
MOVE NUMERO_A_EXPORTAR TO NUM.
INSPECT EXPORTADO
REPLACING ALL " " BY "0".
.
.
.
.... RUTINA_DE_EXPORTAR_A_EXCEL donde envíamos la variable EXPORTADO, no la variable NUM.

Un saludo.-

Roger
4 de mayo de 2020, 15:45
@Josber no funciona da el mismo resultado sin los ceros.

Gusaiello
4 de mayo de 2020, 15:51
Yo creo que deberías pasarlo como si fuera texto desde una variable PIC X(6).

No sirve definir en excel la columna con formato texto, por que igual te quitará los ceros.

O sea que en el ejemplo de @Josber, cambiar PIC 9(6) por PIC X(6).

JCantero
4 de mayo de 2020, 15:58
Para poder ayudarte, debes de poner aqui la parte del programa donde montas la linea ( o flla ) para pasarlo a excel.

Asi como la estructura de los campos utilizados.

---------- Post añadido : 15:58 ---------- Post anterior : 15:52 ----------

Como dice @Gusaiello,

si tienes:

01 referencia-n pic 9(6).
01 referencia-a pic x(6).
*
*
*
move 5 to referencia-n
move referencia-n to referencia-a

en referencia-a tienes 000005

Roger
4 de mayo de 2020, 18:31
Amigos para ponerlo en contexto este programa me sirve para imprimir códigos de barras a través de una impresora Zebra GC420T que esta relacionada con un archivo excel generado por powercobol, si en la hoja excel el código se exporta "127" las barras seran diferentes a "000127"
para hacer mas complicada el campo de lectura de barras lee campos alfa numéricos de hasta 16 caracteres por ese motivo no puedo poner un campo de recepción numérica de 6 caracteres que seria la solución .

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT LEXCEL
ASSIGN TO "d:\VET-SIS\BARRAS.XLS"
ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.

FD LEXCEL
LABEL RECORD IS STANDARD.
01 REC-LEXCEL PIC X(500).
WORKING-STORAGE SECTION.
01 EXCEL OBJECT REFERENCE COM IS GLOBAL.
01 WORKBOOK OBJECT REFERENCE COM IS GLOBAL.
01 COM-TRUE PIC 1(1) BIT VALUE B"1" IS GLOBAL.
01 APPLICATION PIC X(20) VALUE "EXCEL.APPLICATION" IS GLOBAL.
01 EXCEL_FILE PIC X(35) VALUE "d:\VET-SIS\BARRAS.XLS".
01 L-1.
02 PIC X(6) VALUE "<BODY>".
02 PIC X(15) VALUE "<TR><TH> ".
01 L-2.
02 PIC X(7) VALUE "<TABLE>".
01 L-3.
02 PIC X(10) VALUE "<TR><TH> ".
02 NOM-I PIC X(85).
02 PIC X(4) VALUE "<TD>".
02 COD-I PIC X(6) VALUE "000000".
02 PIC X(4) VALUE "<TD>".
02 PRECIO-I pic ZZZ,ZZ.99.
01 GRUPO.
02 G1 PIC 999.
02 G2 PIC X(17).
01 COD pic X(6) VALUE "000000".
01 RUTA PIC X(256).
01 REDD GLOBAL EXTERNAL.
02 RED PIC X(256).
01 RUTA-ETI PIC X(256) VALUE "C:\Program Files (x86)\Zebra Technologies\ZebraDesigner Pro 2\bin\Design.exe".
PROCEDURE DIVISION.
INICIO.
OPEN OUTPUT LEXCEL CLOSE LEXCEL.
OPEN EXTEND LEXCEL.
MOVE POW-FALSE TO ENABLED OF CTPUSH3.
GRAVAEXCEL.
WRITE REC-LEXCEL FROM L-1.
WRITE REC-LEXCEL FROM L-2.
INICIO.
MOVE SPACES TO RUTA.
STRING RED DELIMITED BY SPACES
"Artic.DAT" DELIMITED BY SIZE
INTO RUTA.
MOVE RUTA TO WF-ARTIC.
OPEN INPUT ARTIC.
MOVE " " TO DESCRIPCION-AR.
START ARTIC KEY NOT < DESCRIPCION-AR INVALID KEY
GO LEE.
LEE. READ ARTIC NEXT AT END GO FIN.
MOVE GRUPO-AR TO GRUPO.
IF G1 = 002 GO LEE.
IF G1 = 007 GO LEE.
IF G1 = 008 GO LEE.
MOVE CODIGO-AR TO COD.
INSPECT COD REPLACING ALL " " BY "0".
move COD to COD-I.
MOVE DESCRIPCION-AR TO NOM-I.
MOVE PRECIO-AR TO PRECIO-I.
WRITE REC-LEXCEL FROM L-3.
GO LEE.
FIN.
CLOSE ARTIC.
CLOSE LEXCEL.
INVOKE COM "CREATE-OBJECT" USING APPLICATION RETURNING EXCEL.
* INVOKE EXCEL "SET-VISIBLE" USING COM-TRUE.
INVOKE EXCEL "GET-WORKBOOKS" RETURNING WORKBOOK.
INVOKE WORKBOOK "Open" using EXCEL_FILE.
invoke pow-self "THRUEVENTS".
INVOKE POW-SELF "executesync" USING RUTA-ETI.
INVOKE EXCEL "QUIT".
EXIT PROGRAM.



(ojo) CODIGO-AR PIC 9(6).

JCantero
4 de mayo de 2020, 19:57
El problema que veo es que generas un html y llamas a Excel.

Excel te lo convierte.

Si abres el fichero con un explorador, se veria bien
, Como tú quieres. ( Seguramente cambiando la extensión a .html )

En powercobol no te puedo ayudar, pero sería crear un Excel (no html), marcando todas las columnas como alfanuméricas.

¿ Admite la impresora, en vez de Excel , un CSV o un fichero texto con tabuladores ?

Roger
5 de mayo de 2020, 02:47
@JCantero revisando las opciones de base de datos de Zebra encontre que podia ser txt, cvs, excel probe con .txt y funciona de maravillas.

Josber
5 de mayo de 2020, 09:52
El problema que veo es que generas un html y llamas a Excel.

@Roger, JCantero tiene razón porque, el código que puse yo debe de funcionar sin problemas, porque el poner una comilla simple ('), en un campo numérico, le indica a excel que el campo debe de tratarse como un texto obligatoriamente, a no ser que sea una importación, como es este caso, que lo trata como un número.

Un salu2.-

JCantero
5 de mayo de 2020, 20:43
@JCantero revisando las opciones de base de datos de Zebra encontre que podia ser txt, cvs, excel probe con .txt y funciona de maravillas.

A veces las cosas sencillas son las que mejor funcionan.

Y en este caso, encima debe de ir mas rápido.

Además no hay que instalar excel, si no hace falta para otra cosa.

Me alegro.
:bien: