Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Cocina Casera Cocina PowerCOBOL
Cocina PowerCOBOL Rutinas y ejemplos codificados por nuestros foreros.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
Exportar informacion desde un archivo a Excel Roberto PowerCOBOL (ActiveX, v4 - v11) 0 20 de agosto de 2023 15:46
[Sintaxis] Actualizar libro de excel desde Powercobol dmosca PowerCOBOL (ActiveX, v4 - v11) 1 22 de agosto de 2020 15:14
[Duda] Traspaso de Excel a ListView Socavi Fujitsu COBOL 16 7 de abril de 2020 19:39
[Sintaxis] Programación CmTable jmeza PowerCOBOL (ActiveX, v4 - v11) 6 13 de diciembre de 2018 13:51
[Sintaxis] Destacar una celda en un Cmtable Breew PowerCOBOL (ActiveX, v4 - v11) 3 14 de septiembre de 2017 23:20

Respuesta
 
Herramientas

  #31
Antiguo 5 de diciembre de 2022, 12:42
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Hola @Socavi,

A ver si con éste ejemplo te aclaras más
Supón que tienes una hoja de cálculo como la que adjunto en la imagen, y quieres traspasar los datos a un fichero, que se llama en éste caso FICHERO.DAT, lo primero es que en tu Form, has de insertar con ExcelControl, que se llame CmExcel1, el código para traspasar los datos, que supongo que irá en un ButtomControl, (un botón), sería así:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  INPUT-OUTPUT    SECTION.
  3.  FILE-CONTROL.
  4.      SELECT OPTIONAL FICHERO
  5.             ASSIGN TO "FICHERO.DAT"
  6.             ORGANIZATION IS INDEXED
  7.             ACCESS MODE  IS DYNAMIC
  8.             FILE STATUS  IS STFIC
  9.             LOCK         IS AUTOMATIC WITH LOCK ON RECORD.
  10.  DATA            DIVISION.
  11.  FILE          SECTION.
  12.  FD  FICHERO IS GLOBAL
  13.      LABEL RECORD IS STANDARD
  14.      DATA  RECORD IS REG_FIC.
  15.  01  REG_FIC.
  16.      03  FICCP          PIC 9(05).
  17.      03  FICPOB         PIC X(30).
  18.      03  FICPRO         PIC X(20).
  19.      03  FICPAI         PIC X(20).
  20.  WORKING-STORAGE SECTION.
  21.  01  ESTILO         PIC S9(5) COMP-5.
  22.  01  RETORNO            PIC S9(5) COMP-5.
  23.  01  LIN                PIC  9(9) COMP-5.
  24.  01  STFIC          PIC XX.
  25.  PROCEDURE       DIVISION.
  26. *
  27.  INICIO.
  28.      OPEN I-O FICHERO.
  29.      INITIALIZE REG_FIC.
  30.  
  31.      INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  32.             USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
  33.                   1                *> <------ Aquí el número de hoja que queremos abrir
  34.             RETURNING RETORNO
  35.      END-INVOKE.
  36.  
  37.  
  38.      IF RETORNO NOT = 0
  39.         ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  40.         INVOKE POW-SELF "DisplayMessage"
  41.                USING "*Error: No exsite la hoja de cálculo ..."
  42.                      "ERROR"
  43.                      ESTILO
  44.         END-INVOKE
  45.         CLOSE FICHERO
  46.         INVOKE POW-SELF "CloseForm"
  47.         EXIT PROGRAM
  48.      END-IF.
  49.  
  50.      MOVE 2 TO LIN.                *> <------ Empezamos en la linea 2, porque suponemos que la 1 contiene el encabezado de las celdas
  51.      PERFORM WITH NO LIMIT
  52.  
  53. *
  54. * Como en PWV, no hay ninguna función, que nos indique el final de los datos en una hoja de cálculo
  55. * vamos a suponer que si la celda nnn:1, vale 0 o está en blanco, hemos llegado al final de la hoja
  56. *
  57. * y empezamos a traspasar los datos, leemos las celdas, y las pasamos directamente a los campos del
  58. * fichero que a continuación grabaremos
  59. *
  60.              MOVE "Numeric" (LIN 1) OF CmExcel1 TO FICCP
  61.  
  62.              IF FICCP = 0
  63.                 EXIT PERFORM
  64.              END-IF
  65.  
  66.              MOVE "Text"    (LIN 2) OF CmExcel1 TO FICPOB
  67.              MOVE "Text"    (LIN 3) OF CmExcel1 TO FICPRO
  68.              MOVE "Text"    (LIN 4) OF CmExcel1 TO FICPAI
  69.  
  70.              WRITE REG_FIC         *> <----- Grabamos los datos en el fichero
  71.                    INVALID KEY     *> <----- Si da error, los regrabamos, por si acaso
  72.                            REWRITE REG_FIC
  73.                                    INVALID KEY     *> Si da error, informamos del número de FILE-STATUS
  74.                                            ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  75.                                            INVOKE POW-SELF "DisplayMessage"
  76.                                                   USING "Error al Grabar ..."
  77.                                                         STFIC
  78.                                                         ESTILO
  79.                                            END-INVOKE
  80.                            END-REWRITE
  81.              END-WRITE
  82.  
  83.              ADD 1 TO LIN
  84.  
  85.      END-PERFORM.
  86.  
  87.      ADD POW-DMICONINFORMATION POW-DMOK GIVING ESTILO.
  88.  
  89.      INVOKE POW-SELF "DisplayMessage"
  90.             USING "Fin del traspaso ..."
  91.                   " ¡ Atención ... !"
  92.                   ESTILO
  93.      END-INVOKE.
  94.  
  95.      INVOKE CmExcel1 "CloseBook".
  96.      CLOSE FICHERO.

En éste caso, cuando llegue a la línea 17 de la hoja de cálculo, el programa terminará.

Un saludo.-

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  Excel.jpg
Vistas: 43
Tamaño:  125,9 KB  
Josber is offline   Responder Con Cita
  #32
Antiguo 5 de diciembre de 2022, 16:40
Socavi
Forero
Última Actividad 05.07.2022 17:01
Posts Posts: 78
Likes enviados Enviados: 49
Likes recibidos Recibidos: 18

Buenas tardes Josber: He modificado los campos correspondientes de acuerdo con los ficheros, he compilado y no detecta errores, pero al iniciar el programa y presionar el BT de realizar el traspaso, me da un solo error
Cita:
" The EXCEL Open command cannot be executed"
. deduzco que se trata de una sola instrucción
Código COBOL:
  1.  
  2.  INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  3.              USING "C:\ESCRITORIO\2852.XLS"
  4. *            USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
  5.                   1                *> <------ Aquí el número de hoja que queremos abrir
  6.             RETURNING RETORNO
  7.      END-INVOKE.

Lo adjunto porque a mi me parece correcto, pero tal vez no lo es, espero impaciente tus indicaciones. Muchas gracias.
Socavi is offline   Responder Con Cita
  #33
Antiguo 5 de diciembre de 2022, 18:37
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Sí, es una sola instrucción. No lo sé seguro @Socavi, porque yo lo tengo siempre instalado pero, creo que tienes que tener instaladas las librerías de Excel, o sea, si no el paquete de Office, sí al menos lo que era el antiguo visor de Excel, no sé seguro si es así, a ver si @Kuk @Nitzer o alguien un poco más versado, puede aclararlo.

Un salu2.-
Josber is offline   Responder Con Cita
  #34
Antiguo 5 de diciembre de 2022, 18:45
Socavi
Forero
Última Actividad 05.07.2022 17:01
Posts Posts: 78
Likes enviados Enviados: 49
Likes recibidos Recibidos: 18

tengo el paquete de Office, bueno haber si podemos solucionrlo.
Socavi is offline   Responder Con Cita
  #35
Antiguo 5 de diciembre de 2022, 19:17
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Citación del post de Socavi Ver Mensaje
Buenas tardes Josber: He modificado los campos correspondientes de acuerdo con los ficheros, he compilado y no detecta errores, pero al iniciar el programa y presionar el BT de realizar el traspaso, me da un solo error
" The EXCEL Open command cannot be executed". deduzco que se trata de una sola instrucción
Código COBOL:
  1.  
  2.  INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  3.              USING "C:ESCRITORIO2852.XLS"
  4. *            USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
  5.                   1                *> <------ Aquí el número de hoja que queremos abrir
  6.             RETURNING RETORNO
  7.      END-INVOKE.

Lo adjunto porque a mi me parece correcto, pero tal vez no lo es, espero impaciente tus indicaciones. Muchas gracias.
Hola @Socavi seguramente de error por que no existe la carpeta o directorio en tu disco duro C:ESCRITORIO...
Si queres hacer referencia a un archivo que esta ubicado en el
Código:
escritorio
de Windows esta mal la direccion y dara el error
Código:
The EXCEL Open command cannot be executed
Si es asi genera un directorio o carpeta con algun nombre Eje : "Datos" y copia el archivo en la carpeta y las lineas serian
Código COBOL:
  1.     INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  2.              USING "C:Datos2852.XLS"
  3.                   1                *> <------ Aquí el número de hoja que queremos abrir
  4.             RETURNING RETORNO
  5.      END-INVOKE.

Esto debe funcionar
Saludos...
fastpho is offline   Responder Con Cita
  #36
Antiguo 6 de diciembre de 2022, 10:17
Socavi
Forero
Última Actividad 05.07.2022 17:01
Posts Posts: 78
Likes enviados Enviados: 49
Likes recibidos Recibidos: 18

Muchas gracias fastpho, siguiendo tu sugerencia, he abierto la carpeta DATOS y en esta ocasión el programa ha respondido con "fin del traspaso" perfecto !!!
Socavi is offline   Responder Con Cita
  #37
Antiguo 6 de diciembre de 2022, 16:14
Socavi
Forero
Última Actividad 05.07.2022 17:01
Posts Posts: 78
Likes enviados Enviados: 49
Likes recibidos Recibidos: 18

Pero la sorpresa ha sido grande pues me he dado cuenta de que he sido muy optimista ya que a pesar de haber salido el letrero de que se habia realizado el traspaso, no era cierto, unicamente a localizado el fichero, sin haber traspasado ningún dato, es decir que hemos dado un pasito, pero lo mas esencial que serían pasar los datos del Excel al programa, no se ha realizado.

Desde ese momento estoy intentando encontrar el motivo por el cual no se realiza la funcion deseada y solicito de nuevo ayuda al colega que me la pueda prestar. Saludos cordiales.-
Socavi is offline   Responder Con Cita
  #38
Antiguo 6 de diciembre de 2022, 17:48
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

@Socavi, si no es muy grande la hoja de cálculo, quiero decir, si son menos de 100 ó 200 registros, pon después del
Código COBOL:
  1. ADD 1 TO LIN
un
Código COBOL:
  1. DISPLAY STFIC
o como se llame el FILE-TATUS de tu fichero a ver que te pone, si no es 00, haces una captura de pantalla y la pasas por aquí, que veamos qué número es para saber que pasa

Un salu2.-

- - - Updated - - -

@Socavi, si no es muy grande la hoja de cálculo, quiero decir, si son menos de 100 ó 200 registros, pon después del
Código COBOL:
  1. ADD 1 TO LIN
un
Código COBOL:
  1. DISPLAY STFIC
o como se llame el FILE-TATUS de tu fichero a ver que te pone, si no es 00, haces una captura de pantalla y la pasas por aquí, que veamos qué número es para saber que pasa

Un salu2.-
Josber is offline   Responder Con Cita
  #39
Antiguo 7 de diciembre de 2022, 12:41
Socavi
Forero
Última Actividad 05.07.2022 17:01
Posts Posts: 78
Likes enviados Enviados: 49
Likes recibidos Recibidos: 18

Muchas gracias por vuestra ayuda, sin vuestras indicaciones no hubiera podido culminar con éxito mi objetivo.

Ahora me queda la tarea de ir pasando datos, que confieso la satisfacción que produce comprobar que se realizan con éxito. Muchas grascias!!!
Socavi is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:39.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.