Manual Api Excel

FIXME PROVISIONAL: es un manual pegado de iWriter! FIXME pendiente formatearlo

Manual de Usuario de CPI API Office (ApiExcel)

INTRODUCCION

API Excel CPI es un producto que permite la conectividad de Hojas de Calculo MS Excel y programas de AS/400 sin necesitar procesos de definición ni transferencia de ficheros.

API Excel CPI puede ser usada para mejorar aplicaciones actuales de AS/400, así como en nuevos desarrollos pudiendo obtener desde simples listados hasta sofisticados informes.

Además de la obtencion del informe se obtiene un fichero Excel, por lo que puede ser cambiado, enviado por correo electronico, diskette, etc.

Esta programado sobre un entorno absolutamente Cliente/Servidor, con la ventaja de que las tareas de elaboración, impresión, etc. pueden ordenarse totalmente desde un PC pero también desde programas normales de AS/400. Esto es de utilidad a la hora de diseñar o cambiar Aplicaciones para que la obtención de informes se realice con destino a Hojas de Cálculo.

Pueden establecerse multiples modelos de interface sobre Hojas Excel partiendo de diseños de Hojas de Calculo con todos sus atributos naturales como calculos, formateo, colores, etc. Al mover información desde AS/400 a las hojas estas no pierden sus atributos, con lo que se pueden conservar las hojas diseñadas sin necesitar reelaboración de datos ni atributos.

API Excel CPI puede usarse en combinación con programas normales de AS/400, estos programas de AS pueden leer y procesar N fuentes de datos y solo determinadas informaciones de interes pueden ser movidas a elementos de Hojas de Calculo, sin miedo a que por ello se pierda el formato diseñado.

CREANDO INFORMES DESDE PC

Se define una interface en el fichero general CPI@XLIN.INI con I@XL00.EXE y se declara un fichero.INI con el nombre de esa interface. El fichero.INI puede crearse nuevo o copiarse de otro haciendo los cambios oportunos.

Cuando definimos la interface en el fichero general y la solicitamos haciendo doble click, se procede a crear un fichero con nombre interface.INI de manera automática. También podemos crearlo copiandolo de otro y dándole el nombre de la nueva interface. Entonces la solicitar la interface se abre este fichero.

Siempre que se solicita una interface podemos modificar este fichero. Si deseamos que algunas características de la interface como si la hoja debe o no ser visible, si el procedimiento se debe o no ejecutar completo, si se desea imprimir la hoja etc… pueden cambiarse de manera temporal marcando y desmarcando las casillas destinadas a ello.

Al solicitar aunque sea sin procesar una interface se crea un fichero con nombre interface.@XW en el directorio WINDOWS/SYSTEM Local, que es el que buscan los programas API EXCEL para encontrar las definiciones de la interface. Este fichero tiene el mismo contenido del interface.INI mas las respuestas para la ejecución (respuestas a preguntas, imprimir Si/No…etc).

Se puede obligar a una ejecución de programas en el AS/400 que se desea de la siguiente manera:

                     path\I@XL00.exe *SN=nameAS

Al solicitarse la interface desde el PC se ejecuta el programa asociado de 400.

Una interface puede no tener asociada la ejecución de un programa de 400 (pgmMode=N en el fichero interface.INI), o puede procesarse una interface en modo no completo. En el primer caso no se procesa ningún programa de 400 sino que solo se toman los datos para actualizar la excel desde el miembro 'interface' fichero QAPIXCPI biblioteca TEXTCPIU. Esto permite p.e. que procesos batch nocturnos pongan (usando las API'S) información en QAPIXCPI para ser usada cuando se procese la interface de PC.

Los programas del AS/400 relacionados con una interface deben recibir los parámetros siguientes:

      &MBRI  *CHAR 8   --> Nombre de Interface.
      &MODO  *CHAR 1   --> Modo de Ejecución
      &RESP  *CHAR 240 --> 8 Respuestas de 30 caracteres cada una
      &STS   *CHAR 8   --> Estado

Y añadir las bibliotecas necesarias (CPI@API, CPI@PUB), así como las bibliotecas de los ficheros que procese el programa.

En el programa de 400 se deben incluir las instrucciones necesarias para las funciones API Excel. Las veremos más adelante en el apartado Funciones API Excel CPI.

Fichero interface.INI

El fichero interface.INI debe tener el mismo nombre de interface declarada en el archivo CPI@XLIN.INI, fichero general de interfaces.

En interface.INI se permiten hasta 8 preguntas que se pasan a los programas de 400 como parámetros. Tiene cada uno una longitud máxima de 30 caracteres.

Este fichero contiene las siguientes partes:

[General]

Pgm=El nombre del programa que se ejecuta en el 400

pgmlib=La biblioteca en la que se encuentra el programa anterior

pgmMode='Y' o 'Full' significa que la interface se realiza de forma completa: al ejecutar la interface desde PC se ejecutan los programas de 400 y se envian los datos a la hoja Excel declarado en la etiqueta Target explicadas en el apartado Start. 'N' o ' ' significa que cuando se ejecuta la interface desde el PC tan solo se procede a tomar los datos que un procedimiento anterior dejó preparados.

[Questions]

QXnn=Dato alfanumérico de nn posiciones. Ej: QX10=Nombre de la interface

QXUnn=Dato alfanumérico de nn posiciones que devuelve mayúsculas. EJ: QXU30=Teclee la 1° Cabecera del Informe

QXXnn=Dato alfanumérico de nn posiciones. EJ: QXX25=Teclee la 2° Cabecera del Informe

QLC=Lista de constantes. Los valores permitidos se separan con comas. Ej: QLC=Seleccione Mes a procesar, Enero, Febrero, Marzo

QYN=Cuestiones que se contestan marcándolas para seleccionarlas o desmarcándolas en caso contrario. Se presenta una casilla con una cruz por omisión. Al 400 se envía 'Y' o 'N'. Ej: QYN=Desea los importes en miles?

QNY=Como la anterior pero por omisión la casilla no presenta una cruz. Si se seleccionan, al 400 llega una 'Y', en caso contrario una 'N'. Ej: QNY=Desea Edición?

QNNnn=Admite solo números de nn posiciones y rellena a la izquierda con ceros. Ej: QNN04=Año

QNRnn=Verifica un rango para un dato numérico de nn posiciones permitiendo un valor por omisión. Se indican entre comas siendo el primer valor la omisión. Ej: QNR02=Digite Mes de Proceso,07,01,12

QHELP=Es un texto de ayuda para preguntas. Sin uso de momento.

QDatexxxnne=Admite fechas desde calendario haciendo doble click. Siendo xxx 'DMY' o 'YMD', nn '08' o '06', y e 'E' (Editada) o 'N' (Sin editar). Ej: QDateDMY08E=Fecha de Proceso

  • Esta fecha se selecciona desde el calendario en formato DD/MM/YYYY

QDateYMD05E=Admite fecha en formato Año/Mes editada. Ej: QDateYMD05E=Fecha de Proceso en Año/Mes

  • Esta fecha se selecciona desde el calendario en formato YYYY/MM

QDateYMD04N=Admite fecha en formato Año/Mes sin editar. Ej: QDateYMD04N=Fecha de proceso

  • Esta fecha se selecciona desde el calendario en

formato YYYYMM

[Start]

Source=Path de la Hoja Excel base.

Target=Path de la Hoja Excel Destino que contendrá el resultado.

Sheet=N° de Hoja del libro Excel. 1 por omisión.

Visible='Y' muestra la Hoja Excel en la ejecución, 'N' no la muestra.

[Move]

Ordenes fijas para aminorar código en 400 (Pendiente).

[End]

Print='Y' imprimir al finalizar, 'N' No imprime. '?' se pregunta.

Close='Y' cierra la hoja, 'N' deja abierta la hoja, '?' pregunta.

Pause=Proceso terminado. Emite una pausa.

Ejemplo1 de fichero Interface.INI

[General]
Pgm=MODEL1CL
pgmLib=CPI@CG2
pgmMode=Y

[Questions]
QXN10=Nombre de la interface
QXU30=Teclee la 1° Cabecera del Informe
QXX25=Teclee la 2° Cabecera del Informe
QLC=Seleccione Mes a Procesar, Enero,Febrero,Marzo
QYN=Desea los cálculos en Miles?
QNY=Desea Edición?
QNR02=Digite Mes de Proceso,01,01,12
QNN04=Código de Cliente

[Start]
Source=C:\EXCELCPI\modelA.xls
Target=C:\EXCELCPI\modelAc.xls
Sheet=1
Visible=Y

[End]
Print=N
Close=Y
Pause=Proceso terminado

Ejemplo2 de fichero Interface.INI

[General]
Pgm=MODEL2CL
pgmLib=CPI@CG2
pgmMode=Y

[Questions]
QDATEDMY08N=Fecha en formato DDMMYYYY
QDATEDMY08E=Fecha en formato DD/MM/YYYY
QDATEYMD08N=Fecha en formato YYYYMMDD
QDATEYMD08E=Fecha en formato YYYY/MM/DD
QDATEDMY06N=Fecha en formato DDMMYY
QDATEDMY06E=Fecha en formato DD/MM/YY
QDATEYMD06N=Fecha en formato YYMMDD
QDATEYMD06E=Fecha en formato YY/MM/DD

[Start]
Source=C:\EXCELCPI\modelB.xls
Target=C:\EXCELCPI\modelBc.xls
Sheet=1
Visible=Y

[End]
Print=Y
Close=N
Pause=Proceso terminado

FUNCIONES API Excel CPI PARA PROGRAMAS ADP

Funciones que se incluyen en programas ADP 400:

@XL_Start Data('Auto') Data2(mbrscrpt)
Orden de Comienzo de API.

  • Data= 'Auto' siempre que se soliciten interface desde PC, y desde 400 cuando se busca el fichero interface.@XW 'noAuto' desde 400 cuando no se busca fichero interface.@XW
  • Data2= 'nombre de script' desde 400

@XL_Action('Start') Data('noAuto') Data2(mbrscrpt)
Apertura desde 400.

  • Data y Data2 tienen el mismo significado que en la función @XL-Start

@XL_End
Orden de Cierre de API.

@XL_MoveX o @XL_MoveN Row('rrr') Col('ccc') Data(dato) Dec('n')
Mueve un dato o el último de un grupo.

  • X para dato alfanumérico o N para numéricos. En el caso de constantes (X) se omite Dec.

@XL_MoveXA o @XL_MoveNA Row('rrr') Col('ccc') Data(dato) Dec('n')
Inicia el movimiento de un grupo de datos a la derecha.

  • Debe finalizarse con una función MOVEX o MOVEN. Desde que comienza el grupo hasta que se finaliza no se debe incluir otro tipo de funciones.
  • X para dato alfanumérico o N para numéricos. En el caso de constantes (X) se omite Dec.
  • Row y Col a blancos significa la fila o columna activa o la siguiente columna a la derecha en el caso de un grupo. Row y Col admiten '+n' que significa la activa más n. Si en Row se indica '*NAME' o '*NAMETX' en Col se pone un nombre de celda o texto.

@XL Action('Pos') Data('nomCelda') Data2(' ')
Pone como activa una celda con el nombre indicado (Pos).

@XL Action('Sheet') Data('n') Data2(' ')
Pone como activa una hoja del libro excel (Sheet).

  • n es el número de la hoja

@XL Action('Insert') Data('nomCelda') Data2(' ')
Inserta una fila (Insert).

  • Inserta una fila antes de la fila de la celda con el nombre que se indica. La fila insertada toma los atributos de la fila anterior a la de la celda con ese nombre.

@XL Action('Font') Data(wfont1) Data2(wfont2)

  • Definición de Font, Atributos y Colores (Font).
    • wfont1 tiene una longitud de 14 posiciones siendo:
      • 01-04 Nombre de Font (ARI- o TNR- o MSS- MSSS CNEW WING o —- para no cambiar)
      • 05-05 - (un guión)
      • 06-07 sizeFont. Admite entre 05 y 50 (00 para no cambiar). Admite también +n y -n para aumentar o disminuir el tamaño.
      • 08-10 Atributos N=Negrita, I=Itálica, S=Subrayado, F=Relleno iz/dcha C=Centrar, R=Dcha, L=Izq, CV=Ajuste horiz + vert.
      • 11-12 colorTexto de 00 a 15 ó – para no cambiar
      • 13-14 colorFondo de 00 a 15 ó – para no cambiar. Colores válidos: 00=Negro 01=Azul 02=Verde 03=Cy 04=Rosa 05=Mag 06=Ama 07=Blan 08=Gris 09=Az+ 10=Ver+ 11=Cy+ 12=Ros+ 13=Mag+ 14=Bl+
    • wfont2 tiene una longitud de 5 posiciones siendo:
      • 01-02 Columna desde (como 01,04…)
      • 03-04 Columna hasta (07, 09…)
      • 05-05 C para cambiar atributos a una columna (o columnas) entera. Si esta posición está a blancos el Font es para la celda activa

@XL Action('Borde') Data(wbord1) Data2(wbord2)
Borde alrededor de una o varias celdas de una fila (Borde).

  • wbord1 tiene una longitud de 5 posiciones siendo:
    • 01-01 - (un guión)
    • 02-03 Color del borde. mismo código de color que Font
    • 04-04 Grosor del Borde. De 1 a 4.
    • 05-05 Estilo. . 1=Continuo 2=Rayas 3=Puntos 7=Doble 4=2+3 5=2+3+2 6=Gris 8=Auto
  • wbord2 Columna desde hasta 'ddhh' como wfont2.
    • Puede combinarse una orden de Borde con otra de FONT para el fondo del texto.

@XL Action('bordeA') Data(wbord1) Data2(wbord2)

. Borde sin verticales entre el ámbito de celdas (alrededor) (bordeA).
  • wbord1 tiene una longitud de 5 posiciones siendo:

01-01 - (un guión)

    02-03 -- (dos guiones) No hay uso de color en bordeA
    04-04 - (un guión). No hay uso de Grosor.
    05-05 Estilo. Solo se usan los códigos 1 y 7. . También 2 y 3.
    Puede combinarse con Font de Fondo. 
  • wbord2 Columna desde hasta 'ddhh' como wfont2.

@XL Action('Pausa') Data(campo) Data2(' ')

. Emite una Pausa en el PC mostrando el contenido de campo (Pausa).

@XL Action('Format') Data(codedi) Data2(coldh)

. Edición en contenido de celdas (Format).
  • codedi es un código de edición en modo Excel, por ejemplo:

“#,##0” ó “#,##0.00” (Se permite ¤ a izqda o dcha)

         "#,##0¤);[Red](#,##0)" (pone negativos en rojo)
  • Data2 Columna desde hasta como wfont2 (C en pos 05-05 edita la

columna o columnas enteras indicadas)

@XL Action('sizeCol') Data(size) Data2(coldh)
Aumento o Disminución del Ancho de columnas (sizeCol).

  • size admite n, y +n, -n para aumentar/disminuir tamaño. Una columna tipo de Excel tiene un tamaño de 12 aproximadamente. Si se pone '00' se ajusta al dato.
  • coldh Columna desde hasta.

@XL Action('crtTx') Data(nombre) Data2('079015')

  • Crear cuadro de texto (crtTx).
    • Data: el nombre que se le quiere dar al cuadro de texto que se crea.
    • Data2: contiene las dimensiones del cuadro en formato wwwhhhh (siendo www el ancho y hhh el alto, 79 y 15 en el ejemplo). Este cuadro de texto tiene ajuste automático al contenido del dato que se le mueva.

@XL Action('Image') Data(file) Data2(' ')

  • Pegar una Imagen (Logos,Fotos…etc) (Image).
    • file es un nombre de fichero que contiene la imagen. Si no se da extensión se asume .BMP.
    • Data2 puede contener
      • blancos= el fichero está en el directorio de los programas API
      • *USER = el fichero está en el directorio USER bajo los programas
      • 'algo'= el fichero está en este path

@XL Action('sizeRow') Data(size) Data2(' ')
Cambiar el Alto de una fila (sizeRow)

  • Data= admite n, y +n para aumentar tamaño

@XL Action('delRow') Data(nomcelda) Data2(' ')
Supresión de la fila que tiene una celda con ese nombre (delRow).

@XL Action('delCol') Data(nomcelda) Data2(' ')
Supresión de una columna (delCol).

  • Data= admite Nombre de Celda y n° de columna.

@XL Action('delTx') Data(nomcelda) Data2(' ')
Supresión de un TextBox con ese nombre (delTx).

@XL Action('Open') Data(TipoAper) Data2(Numhoja)
Función de apertura de una hoja (Open).

  • Especialmente indicado en apertura modo 'noAuto'.
  • Data= admite 'VISIBLE', 'MIN', 'HIDE' o ' '.
  • Data2= admite n (n° de hoja), ' ' o '*NEW' cuando se crea una hoja completamente nueva desde el AS/400.

@XL Action('Close') Data('Y/N/?') Data2(' ')
Función de cierre de una hoja (Close). Especialmente indicado en apertura modo 'noAuto'.

  • Data= Y cierra la hoja, N la deja abierta, ? pregunta al usuario

@XL Action('saveAs') Data(Path) Data2(nomhoja)
Salva una hoja Excel dandole un nombre (saveAs).

  • Especialmente indicado en la creación de hojas de cálculo completamente nuevas desde AS/400.
    • Data= '*SOURCE', *TARGET', '*PGM', '*EXCEL' o un path
    • Data2= Nombre de hoja excel sin extensión.

@XL Action('Save') Data(' ') Data2(' ')
Salva la hoja en el path del TARGET del fichero interface.INI. (Save).

  • Salva la hoja abierta (no en aperturas '*NEW')

@XL Action('setPrint') Data(posic) Data2(' ')
Alineación vertical u horizontal (SetPrint). Data admite 'PORT' Vertical o 'LAND' Horizontal

@XL Action('setPrint') Data(centra) Data2(' ')
Centrado al imprimir (SetPrint). Data admite 'CenterV' Vertical o 'CenterH' Horizontal

@XL Action('setPrint') Data(texto) Data2(cabepie)
Cabeceras y pies de la hoja (SetPrint).

  • Data=texto de las cabeceras o pies del documento Excel. Se admiten los siguientes controles:
    • I&=Itálica &B=Bold &U=Underline &D=Date &T=Time &F=File &A=TabName &P=Page &N=Pages *PATH=Dir *USER1=EmpreReg *USER2=UsuarReg
  • Data2=Nombres de cabeceras o pies:
    • 'cab1' cabecera izquierda 'pie1' pie de página izquierdo 'cab2' cabecera central 'pie2' pie de página central 'cab3' cabecera derecha 'pie3' pie de página derecho

@XL Action('SetPrint') Data('BW') Data2(' ')

. Imprimir solo Black&White (no grises) (SetPrint).

@XL Action('SetPrint') Data('Grid') Data2('Y')

. Activar/Desactivar Impresión de Grid (SetPrint).
  • Data2= 'Y' Sí, 'N' No.

@XL Action('SetPrint') Data('RepCab') Data2('Rn:Rn')

. Repite cabeceras (SetPrint).
  • Data2= ambito de filas a repetir. Se puede indicar de diferentes

formas: 'Rn:Rn' o 'Ln:Ln' o '$n:$n'.

@XL Action('SetPrint') Data('RepCol') Data2('A:C')

. Repite columnas (SetPrint).
  • Data2= ambito de columnas a repetir. Se puede indicar de la

siguiente manera: 'A:C'.

@XL Action('SetPrint') Data('Marg?') Data2(número)

. Definir Margenes del  papel (SetPrint).
  • Data= 'Marg?' cambiando la ? por los siguientes valores en el

sentido de las agujas del reloj:

          1=Izquierdo  2=Arriba  3=Derecho  4=Abajo
  • Data2= medición en 1/72 de pulgada:

72=pulgada (2.4 cm) 36=media (1.2 cm) 18=cuarto (0.6 cm)

@XL Action('Print') Data('Y') Data2(' ')

. Imprimir la Hoja activa (Print).
  • Data= 'Y', Sí. Admite también 'N'=No, '?' Pregunta al usuario

CREANDO INFORMES DESDE AS/400

Ademas de arrancar una interface desde PC se puede también solicitar la creación de informes desde el 400, llevando los datos a una hoja con diseño previo o bién crear en ese momento una hoja completamente nueva.

Se necesita el siguiente entorno de trabajo:

  1. Añadir las bibliotecas CPI@API, CPI@PUB
  1. Crear un miembro en TEXTCPIU/QAPIXCPI (script), al que luego se hace

una alteración temporal. Es donde se recogerá la información de

  la hoja Excel a crear.

En los programas de as400 se incluiran las funciones API Excel.

Si se va a crear una hoja totalmente nueva, se debe usar la función de comienzo @XL_Start en modo 'noAuto'. Si se busca el fichero interface.@XW se usa esta función en modo 'Auto'. Siempre indicando el miembro script.

Si se crea una hoja nueva se debe indicar además un modo especial de apertura, '*NEW', con la función @XL_Action('Open'). Si se va a alimentar una hoja base (cuando se busca fichero interface.@XW) no es necesaria aunque se puede usar para cambiar valores como que la hoja sea visible, minimizada u oculta durante el proceso de la interface.

Cuando se crea una hoja de cálculo nueva desde AS/400 es necesario darle un nombre un path. Se debe pues usar la función^@XL Action('SaveAs')^.

Una vez finalizada la funcionalidad API Excel con la función^@XW¤End^, para procesar la interface es necesario ejecutar el programa TFXL99CL con un parámetro de 80 posiciones. El contenido de este parámetro es variable según la funcionalidad deseada:

  1. Las posiciones 1 a 8 deben contener el nombre de la interface,

(cuando se busca fichero interface.@XW). Si no hay una interface PC

  asociada  (no  hay  fichero  interface.@XW)  se puede poner cualquier
  cosa.
  1. Si el nombre de la interface y el script son diferentes, debe llevar

además en las posiciones 11 a 18 nombre del script.

  1. Para ejecutar N interfaces debe incluirse *LIST, interface1,

interface2…etc comenzando en la posición 1.

  1. Comenzando en la posición 20 una indicación de ubicación del fichero

interface.@XW: ^'*XW=PU'^para buscar el fichero en el directorio USER

  del  path de los programas API de PC.^'*XW=NO'^indica que no se busca
  este  fichero.  Esto  sería  en  hojas  creadas por completo desde el
  AS/400.^Nada^ indica que se busca el fichero en el WIN/SYSTEM local.
  1. Se puede obligar a ejecutar programas desde un Host determinado

poniendo despues de la información anterior, dejando un blanco al

  menos, la instrucción: *SN=nameAS

Los programas API Excel de PC se buscan según la información del path que contenga la dtaara TEXTCPIU/CPI@XL en las posiciones de la 101 a la 50. Por ejemplo:

DEFINICION/EJEMPLO DE SCRIPT

Las interfaces guardan la información elaborada por los programas de AS/400 mediante las funciones API Excel en un miembro del fichero QAPIXCPI en la biblioteca TEXTCPIU.

En los casos de interfaces solicitadas desde PC, este miembro al que llamamos script, toma el nombre del fichero interface.INI sin la extensión.

En las interfaces arrancadas desde AS/400 puede buscarse el fichero interface.@XW para tomar definiciones de SOURCE y TARGET de la hoja o puede definirse totalmente la hoja de cálculo desde AS/400. En estos casos el nombre del script puede ser el del fichero interface.INI o no.

Vea un ejemplo de script de una interface que se arranca desde AS/400 y crea una hoja de cálculo excel completamente nueva:

*API's de Conectividad AS/400 con Excel (c) CPI SOFTWARE 1996.
+STARTM,241096,123751,NM045902,NOAUTO
Control,CPIX1,Excel
OPEN,VISIBLE,*NEW
MOVE,01,02,'DEMOSTRACION CPI SOFTWARE'
FONT,TNR--12N,0202
SIZECOL,-6,0101
SIZECOL,+40,0202
MOVE,01,03,'RELACION DE TRABAJADORES POR  GRUPO DE TRABAJO'
FONT,TNR--12N,
MOVE,02,03,'Percepciones Categorias y Trabajador'
FONT,TNR--12N,
MOVE,04,02,'NOMBRE','DEP','GRT','Salario  Base',' Antig.  Base','Complem.'
FONT,TNR--10NC,0110
BORDE,---21,0210
SIZECOL,-6,0303
SIZECOL,-6,0404
SIZECOL,+1,0510
MOVE,06,01,'*','Total grupo trabajo','  01','',9138546,96784,340490,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,07,01,'*','Total grupo trabajo  DES. S/36','  01','',1193102,4600,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,08,01,'*','Total grupo trabajo ( DES. PC','  01','',684652,10000,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,09,01,'**','Total dependencia. MATATERO','  01','',11016300,101384,''
FONT,TNR--10N  --14,0110
BORDEA,-  21,0110
MOVE,10,01,'*','Total grupo trabajo (','  02','',1337315,20600,55674,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,11,01,'*','Total grupo trabajo ( S/36','  02','',2209136,6000,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,12,01,'**','Total dependencia.. COMANA','  02','',3546451,20600,''
FONT,TNR--10N  --14,0110
BORDEA,-  21,0110
MOVE,13,01,'*','Total grupo trabajo (','  03','',486202,8600,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,14,01,'**','Total dependencia.... PIPENSA','  03','',486202,8600,''
FONT,TNR--10N  --14,0110
BORDEA,-  21,0110
MOVE,15,01,'*','Total grupo trabajo (','  98','',127629,''
FONT,TNR--10N  --11,0110
BORDEA,-  21,0110
MOVE,16,01,'**','Total dependencia.... DEPEND.HORAS','  98','',127629,''
FONT,TNR--10N  --14,0110
BORDEA,-  21,0110
MOVE,17,01,'****','Total Empresa','  98','',15176582,121984,445764,''
FONT,TNR--10N  --10,0110
BORDEA,-  21,0110
SETPRINT,&I&F,CAB1
SETPRINT,Fecha: &D Hora: &T,CAB2
SETPRINT,Pagina &P de &N,CAB3
CLOSE,Y,
SAVEAS,C:\EXCELCPI\,NMPRU
+ENDM,241096,123752
EndAPI

Las líneas que comienzan con asterisco son comentarios.

Las líneas de comienzo y fin de API llevan en la primera posición un '+' seguido del nombre de la función (STARTM, comienzo; ENDM, fin).

El resto de las líneas comienzan por el nombre de la función, le sigue la acción y los datos, siempre separados por comas.

La función STARTM, en la segunda línea, lleva información de la fecha en que se solicitó la interface, la hora, el nombre del script, y el modo de apertura o comienzo de API. En este caso la apertura es en modo NOAUTO porque no se busca fichero interface.@XW.

La función OPEN, en la cuarta línea, lleva a su derecha información sobre visibilidad de la hoja durante el proceso de la interface y con *NEW indica creación de una hoja nueva.

La función MOVE, en la línea 5, se traduce por: escribe en la celda correspondiente a la fila 01, columna 02, el dato 'DEMOSTRACION CPI SOFTWARE'.

En la línea 13 hay una función más potente de escritura, mueve todos los datos que se indican entre comas en la misma línea. Es decir, comenzando en la celda de la fila 04, columna 02 se escribe 'NOMBRE', en la celda de la derecha 'DEP'…

La función FONT de la línea 14 va a asociar los siguientes atributos a la línea anterior: hay una orden para establecer el tipo de fuente en TNR, Negrita y Centrado, comenzando en la columna 01 y finalizando en la 10.

La función BORDE de la línea 15 pone un borde de grosor 2 continuo (estilo 1), a las celdas del ámbito columna 02 a 10. Estas funciones requiere una escritura previa, es decir, se esta poniendo borde a los datos de la línea 13.

La línea 16 tiene una función SIZECOL para disminuir el tamaño de la columna 03 en 6 veces menos.

La función SETPRINT hemos visto que tiene varias posibilidades, este caso en la línea 56, incorpora la Fecha y Hora a la cabecera central de la hoja.

En la línea 59 la función SAVEAS da el nombre 'NMPRU' a la hoja y la salva en el path: C:\EXCELCPI\.

FUNCIONES API EXCEL PARA PROGRAMAS NO ADP

Todos los programas deben incluir una rutina principal cuya misión es la de guardar la información de cada función API Excel. Esta información se indica en los parámetros del programa TFXL07B. A continuación se muestra dicha rutina y se explica cada parámetro:

     CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+
     C           XL@SR1    BEGSR                           API Excel CPI
     C                     MOVE XL@MBI    XL@MBI  8
     C                     CALL 'TFXL07B'                  API Excel CPI
     C                     PARM           XL@ACC  8        ACCION
     C                     PARM           XL@ROW 80        ROW - FILA
     C                     PARM           XL@COL 80        COLUMNA
     C                     PARM           XL@TIP  1        TIPO DE DATO
     C                     PARM           XL@ALF250        DATO ALFA
     C                     PARM           XL@NUM 152       DATO NUMERICO
     C                     ENDSR

Cada parámetro contendrá un tipo específico de información:

     . XL@ACC  contendrá el tipo de función ('*START@' para comienzo de
       Api,  '*ENDPGM@'  en finalización de Api, '*ACTION' en funciones
       de atributos, '*ADD' en escritura de datos..etc).
     . XL@ROW contendrá la fila.
     . XL@COL contendrá la columna.
     . XL@TIP  deberá  llevar  una  'X'  para datos alfanumérico, y 'n'
       número de decimales en el caso de datos numéricos.
     . XL@ALF contendrá los datos alfanuméricos.
     . XL@NUM contendrá los datos numérico.

Si se solicita una interface desde PC los programas de AS/400 necesitan conocer las respuestas del usuario en el fichero interface.INI. Por ello se reciben los parámetros:

     CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+
     C           *ENTRY    PLIST
     C                     PARM           XL@MBI  8        MBR INTERF
     C                     PARM           XL@MPG  1        MODO PGM
     C                     PARM           XL@R             RESPUESTAS
     C                     PARM           XL@STS  8        ESTADO

donde:

       . XL@MBI  contiene  el nombre de la interface.
       . XL@MPG  contiene  el  modo  de  ejecución (pgmMode del fichero
         interface.INI).
       . XL@R  contiene  las  respuestas (8 respuestas de 30 caracteres
         cada una).
       . XL@STS de uso reservado.

Para facilitar la tarea declaramos XL@R como una serie:

     E....Arch(de)Arch(a)+NombreN/rN/tbLonPDSNommatLonPDSComentarios+++
     E                    XL@R        8 30

De esta manera bastarán con moves de XL@R,n a campos que definiremos con las posiciones adecuadas a la longitud del dato respuesta.

Describiremos a continuación los valores de los campos definidos en la rutina XL@SR1 según las diferentes funciones Api Excel:

Comienzo de Api Excel

XL@ACC –> '*START@'

XL@ALF –> 'AUTO' siempre que se soliciten interface desde PC, y desde400

         cuando se busca el fichero interface.@XW.
         'NOAUTO'  desde  400  cuando  no  se  busca  el  fichero
         interface.@XW.

XL@ROW –> ' ' para interfaces desde PC. 'script' script= miembro

         QAPIXCPI cuando la interface se arranca desde 400.

Fin de Api Excel

Después de la última función Api Excel del programa.

XL@ACC –> '*ENDPGM@'

Mover un dato.

XL@ROW –> '*NAME' cuando en XL@COL hay nombre de celda.

         '*NAMETX' cuando en XL@COL hay nombre de cuadro de texto.
         'rrr' rrr=fila.
         ' ' la fila activa.
         '+n' la fila activa más n.

XL@COL –> 'ccc' ccc=columna.

         ' ' la columna activa.
         '+n' la columna activa más n.
         un nombre de celda.
         un nombre de cuadro de texto.

XL@TIP –> 'X' cuando el dato es alfanumérico.

         'n' número de deimales en datos numéricos.

XL@ALF –> dato alfanumérico

XL@NUM –> dato numérico.

XL@ACC –> '*WRITE' mueve el dato

         '*ADD  '  inicia  el  movimiento  de  un  grupo  de datos a la
         derecha.  Debe  finalizarse  con  una  acción  '*WRITE'

Activar una celda

XL@ACC –> '*ACTION'

XL@COL –> 'POS'

XL@ALF –> nombre de celda

XL@ROW –> '*BLANKS'

Activar una hoja

XL@ACC –> '*ACTION'

XL@COL –> 'SHEET'

XL@ALF –> 'n' número de hoja.

XL@ROW –> '*BLANKS'

Insertar una fila

Insertar una fila antes de la fila que tenga una celda con el nombre indicado en XL@ALF.

XL@ACC –> '*ACTION'

XL@COL –> 'INSERT'

XL@ALF –> nombre de celda.

XL@ROW –> '*BLANKS'

Definir un Font, atributos y colores

XL@ACC –> '*ACTION'

XL@COL –> 'FONT'

XL@ALF –> variable de 15 posiciones que se desglosan de la siguiente

         manera:
           
            01-04 Nombre de Font (ARI- o TNR- o MSS- MSSS CNEW WING o
                  ---- para no cambiar)
            05-05 - (un guión)
            06-07 sizeFont. Admite entre 05 y 50 (00 para no
                  cambiar). Admite también +n y -n para aumentar
                  o disminuir el tamaño.
            08-10 Atributos N=Negrita, I=Itálica, S=Subrayado,
                  F=Relleno izda/dcha, C=Centrar, R=Dcha, L=Izq,
                  CV=Ajuste horiz + vert.
            11-12 colorTexto de 00 a 15 ó -- para no cambiar
            13-14 colorFondo de 00 a 15 ó -- para no cambiar.
                  . Colores válidos:
                    00=Negro  01=Azul  02=Verde  03=Cy  04=Rosa
                    05=Mag  06=Ama  07=Blan  08=Gris  09=Az+
                    10=Ver+  11=Cy+  12=Ros+  13=Mag+  14=Bl+  

XL@ROW –> una variable de 5 posiciones que se desglosa de la siguiente

         manera:
         
*            01-02 Columna desde (como 01,04...)
*         03-04 Columna hasta (07, 09...) .
*          05-05  'C'  para cambiar atributos a una columna (o columnas) entera  si  esta  posición  está a blancos el Font es para la celda activa

Borde alrededor de una o varias celdas de una fila

XL@ACC –> '*ACTION'

XL@COL –> 'BORDE'

XL@ALF –> variable de 5 posiciones desglosadas de la siguiente forma:

  • 01-01 - (un guión)
  • 02-03 Color del borde. mismo código de color que Font
  • 04-04 Grosor del Borde. De 1 a 4.
  • 05-05 Estilo. 1=Continuo 2=Rayas 3=Puntos 7=Doble 4=2+3 5=2+3+2 6=Gris 8=Auto

XL@ROW –> variable de 4 posiciones conteniendo 'ddhh', columna desde

         hasta.  Puede  combinarse una orden de Borde con otra de FONT
         para el fondo del texto.

Borde alrededor sin verticales entre las celdas

XL@ACC –> '*ACTION'

XL@COL –> 'BORDEA'

XL@ALF –> variable de 5 posiciones desgolsadas de la siguiente forma:

  • 01-01 - (un guión).
  • 02-03 – (2 guiones). No hay uso de color en bordeA.
  • 04-04 - (un guión). No hay uso de grosor en bordeA.
  • 05-05 Estilo. 1=Continuo 2=Rayas 3=Puntos 7=Doble. Puede combinarse con un Font de fondo.

XL@ROW –> variable de 4 posiciones conteniendo 'ddhh', columna desde

         hasta.

Pausa

XL@ACC –> '*ACTION'

XL@COL –> 'PAUSA'

XL@ALF –> Contenido del mensaje.

XL@ROW –> '*BLANKS'

Edición en contenido de celdas

XL@ACC –> '*ACTION'

XL@COL –> 'FORMAT'

XL@ALF –> código de edición en modo Excel, por ejemplo:

  • “#,##0” ó “#,##0.00” (Se permite ¤ a izqda o dcha)
  • “#,##0¤);[Red](#,##0)” (pone negativos en rojo)

XL@ROW –> columna desde hasta 'ddhhC' si en la 5° posición se incluye

         una 'C' se formatea la columna o columnas indicadas. Sin la 'C'
         se formatea la celda o celdas correspondiente a la columna o
         columnas indicadas en la fila activa.

Aumento o Disminución del Ancho de columnas

XL@ACC –> '*ACTION'

XL@COL –> 'SIZECOL'

XL@ALF –> Admite n, +n y -n para aumentar disminuir tamaño. Y '00' para

         ajuste al dato.

XL@ROW –> Columna desde hasta 'ddhh'. Una columna tipo de Excel tiene

         un tamaño de 12 aproximadamente.

Crear cuadro de texto

XL@ACC –> '*ACTION'

XL@COL –> 'CRTTX'

XL@ALF –> nombre del cuadro de texto.

XL@ROW –> '079015' dimensiones iniciales.

Cuando se le mueve contenido al cuadro se dispone de ajuste automático.

Pegar una imágen (Logos, Fotos…)

XL@ACC –> '*ACTION'

XL@COL –> 'IMAGE'

XL@ALF –> nombre del fichero sin extensión que contiene la imágen.

XL@ROW –> '*BLANKS' el fichero está en el directorio de los programas

         API,            '*USER' el fichero está en el directorio USER que se encuentra
         debajo del de los programas.            'algo' path del fichero.

Aumento del Alto de una fila

XL@ACC –> '*ACTION'

XL@COL –> 'SIZEROW'

XL@ALF –> admite n, y +n, para aumentar el alto de una fila.

Supresión de una fila

Supresión de una fila que tiene una celda con el nombre que se indica:

XL@ACC –> '*ACTION'

XL@COL –> 'DELROW'

XL@ALF –> nombre de celda.

XL@ROW –> '*BLANKS'

Supresión de una columna

Se puede suprimir una columna en la que hay una celda con nombre indicado en XL@ALF o se puede indicar el n° de columna directamente en dicho parámetro.

XL@ACC –> '*ACTION'

XL@COL –> 'DELCOL'

XL@ALF –> nombre de celda, o n° de columna

XL@ROW –> '*BLANKS'

Supresión de un cuadro de texto

XL@ACC –> '*ACTION'

XL@COL –> 'DELTX'

XL@ALF –> nombre del cuadro de texto.

XL@ROW –> '*BLANKS'

Apertura de una hoja

XL@ACC –> '*ACTION' XL@COL –> 'OPEN'

XL@ALF –> 'VISIBLE' la hoja permanece visible durante la interface. 'MIN' la hoja permanece minimizada durante la interface. 'HIDE' la hoja permanece oculta durante el proceso.

XL@ROW –> '*NEW' obligatorio en hojas creadas completamente nuevas desde

         el AS/400.          '*BLANKS' en el resto.

Cierre de una hoja

XL@ACC –> '*ACTION' XL@COL –> 'CLOSE'

XL@ALF –> 'Y' Se cierra la hoja al finalizar la interface. 'N' Se deja la hoja abierta al finalizar la interface. '?' Pregunta al usuario la acción a tomar.

XL@ROW –> '*BLANKS'

Salvar la hoja Excel

XL@ACC –> '*ACTION' XL@COL –> 'SAVEAS'

XL@ALF –> '*SOURCE' se salva en el path de la hoja base indicado en el

         fichero interface.INI. '*TARGET' se salva en el path del TARGET. '*PGM' se salva en el path de los programas API de PC. '*EXCEL' se salva en el directorio Excel. 
         'algo' se salva en este path.

XL@ROW –> Nombre de hoja excel sin extensión.

Salvar la hoja en el TARGET

XL@ACC –> '*ACTION' XL@COL –> 'SAVE' XL@ALF –> '*BLANKS' XL@ROW –> '*BLANKS'

Opciones de Impresión

XL@ACC –> '*ACTION' XL@COL –> 'SETPRINT'

XL@ALF –>

  • 'PORT' si en XL@ROW hay *BLANKS se efectua alineación vertical.
  • 'LAND' “ ” “ horizontal.
  • 'CENTERV' ” “ centrado vertical.
  • 'CENTERH' ” “ ” horizontal.
  • 'BW' “ ” imprime solo Black & White
  • 'GRID' “ hay 'Y' activa impresión de Grid. 'N' no.
  • 'PRINT' ” hay 'Y' imprime. 'N' no. '?' pregunta.
  • 'REPCAB' O 'REPITECAB' Repite cabeceras del ámbito indicado en XL@ROW.
  • 'REPCOL' O 'REPITECOL' Repite columnas del ámbito indicado en XL@ROW.
  • 'MARG?' cambiando la ? por los valores de 1 a 4 en el sentido de las agujas del reloj: 1=Izquierda 2=Arriba 3=Derecho 4=Abajo
         un texto para encabezados y pies de página de la hoja. Se
          admiten los siguientes controles: 
           I&=Itálica  &B=Bold   &U=Underline    &D=Date
           &T=Time     &F=File   &A=TabName      &P=Page
           &N=Pages    *PATH=Dir *USER1=EmpreReg *USER2=UsuarReg

XL@ROW –> '*BLANKS'

         'Y'
         'N'
         '?'
         'Rn:Rn' o 'Ln:Ln' o '$n:$n' ámbito de cabeceras a repetir.
         'A:C' ámbito de columnas a repetir.
         'CAB1' cabecera izquierda de la página.
         'CAB2' cabecera central         "
         'CAB3' cabecera derecha         "
         'PIE1' pie izquierdo            "
         'PIE2' pie central              "
         'PIE3' pie derecho              "
         'núm.medición' para márgenes en 1/72 de pulgada:
                        72=pulgada (2.4 cm)  36=media(1.8 cm)
                        18=cuarto (0.6 cm)

Una vez movida la información a los campos precisos, se debe ejecutar la rutina XL@SR1.

HISTORICO DE CAMBIOS

Se incorpora una función para pegar imagenes en las hojas de cálculo:

@XL Action('Image') Data(file) Data2(' ')

Se incorpora una función que crea cuadros de texto:

@XL Action('crttx') Data(nombre) Data2('wwwhhh')

:!: Se incorpora una función transmisión de información desde una Nota asignada a una celda a los programas de AS/400. Ejecutando I@XL04.exe tenemos la posibilidad de crear un miembro en QAPIXCPI que comienza por Z¤ seguido de un nombre que por omisión es el nombre de la hoja. Primero se procesa la hoja seleccionada y a continuación se transfiere la información al 400. Los programas de 400 deberán tener en cuenta la información de este miembro para cuando el usuario varíe las notas en la hoja no tener que hacer cambios en el programa. Si el usuario realiza cambios en las notas debe procesar y transferir de nuevo la información mediante I@XL04.exe.

Se amplía la función de supresión de columna. Ahora se puede también suprimir un n° columna indicado en el parámetro Data.

@XL Action('DELCOL') Data(nomcelda) Data2(' ')
La función 'sizeCol' no necesita escritura previa.

Nuevo soporte de alineación de líneas en la función 'Font': . CV=Ajuste Horiz + Vert.

Nueva función 'SetPrint' para repetir cabeceras:
@XL Action('SetPrint') Data('RepCab') Data2('Rn:Rn')

SetPrint para Definir Margenes del papel.

@XL Action('SetPrint') Data('Marg?') Data2(numero) permite indicar el numero de puntos de impresora (en medicion 1/72 de pulgada) a usar como margen del papel.

El ejemplo ? debe cambiarse por 1 a 4 segun las agujas de reloj: 1=Izquierdo 2=Arriba 3=Derecho 4=Abajo. En cuanto a la medicion 72=Pulgada (2.4 cm) 36=Media (1.2 cm) 18=cuarto (0.6 cm).

Esta operacion puede usarse para extremar el uso de papel, de forma que entre alguna columna más de las que permite excel por omision. debe recordarse que un buen efecto se consigue con SetPrint CenterV y SetPrint CenterH para centrar el informe en el papel.

Nueva función SetPrint para repetir Columnas.

@XL Action('SetPrint') Data('RepCol') Data2('A:B') Esta funcion (que tiene su pareja en RepRow para repetir filas) permite indicar que al imprimir se repitan siempre ciertas columnas (las dos primeras en el ejemplo).

Nota: son sinonimos RepiteCol, RepCol para repetir columnas. de igual

    modo que RepiteCab, RepCab, RepRow para repetir filas.

Modo adicional de conexion Host - PC

El modo de conexion que usa API Excel por defecto es APPC directo, pero hay algunos entornos donde es dificil o imposible conseguir la configuracion adecuada, por lo que se cuenta con un metodo alternativo que consiste en usar cualquier programa de transferencia de ficheros, tal como aquellos incluidos en la mayor parte de programas de emulacion o de conectividad al 400.

El modo Transfer debe ser configurado especialmente segun el programa de transferencia a usar. Se incluyen algunos ejemplos que pueden usarse como basel, aunque esto depende de los productos que esten instalados en el PC asi como de la forma en que se instalaran.

Se amplía la funcionalidad de sizeCol para ajuste al dato: Para incorporar esta nueva función poner en el parámetro Data el valor '00'.

Se incorpora la funcionalidad de “pegado”, importante en fórmulas. Por ejemplo para sumas de varias celdas:

En Excel la función suma de celdas sería: =SUMA(E025;E035;….;E055;E075)

Se permite el fraccionamiento de esta función, de la siguiente manera: un primer movimiento de dato con la primera parte que puede englobar una o mas celdas terminando con un paréntesis de cierre: =SUMA(E025;E035;……)

Los siguientes movimientos “para pegar” se deben escribir comenzando con dos veces el símbolo igual(=) y terminando con un paréntesis de cierre: ==;E055;E075)

Se amplian los datos fila, columna de 10 a 80 posiciones. Y el dato a 250 posiciones.


Fin del Manual

 
/kunden/homepages/8/d674751560/htdocs/cpies/doc/data/pages/api_office/manualapiexcel.txt · Última modificación: 7/11/2018 12:56 por admin
[unknown button type]
 
Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki