Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Button
TextoVoltar
Linkhttps://tdn.totvs.com/pages/releaseview.action?pageId=857586913



API de Integração entre PROGRESS e Microsoft Excel (002)


Nome Físico: utp/utapi003.p

Nome do Include com Parâmetros: utp/utapi003.i

Versão de Integração: 002

Objetivo: 

Criação de arquivos para o Microsoft Excel.

Pré-requisitos: 

É necessário ter o MS-EXCEL com uma versão compatível com o produto. Para mais detalhes consulte a documentação localizada em: https://tdn.totvs.com/pages/releaseview.action?pageId=195301010

Informações
iconfalse

IMPORTANTE:

Para novos programas que venham a utilizar esta API, é recomendado que seja utilizado o programa utp/utapi013 ao invés deste.


Considerações Gerais


  • A API recebe como parâmetros valores para construção de planilhas e, também, gráficos. Caso não seja possível criar o arquivo, será retornado uma Temp-Table com os, possíveis, erros;
  • A include {utp/utapi003.i} contém as definições das Temp-Table´s que devem ser passadas como parâmetros à API utp/utapi003.p. Sendo que a chamada desta include, como a inclusão de valores, deve ser feita antes da chamada da API utp/utapi003.p;
  • A criação do arquivo é feita através da execução da API utp/utapi003.p.


Parâmetros de Entrada 


Temp-table tt-dados: possui as definições, gerais, do arquivo a ser criado.


TEMP-TABLE tt-configuracao

Atributo

Tipo

Formato

Valor Inicial

versao-integracao

integer

>>9


arquivo-num

integer

>9

1

arquivo

character

x(255)

c:\tmp\utapi003.xls

total-planilhas

integer

>9

05

exibir-construcao

logical


no

abrir-excel-termino

logical


no

* ver Definição Temp-Table tt-configuracao

* ver Principais Validações da Temp-Table tt-configuracao


Atributo

Descrição

versao-integracao

Versão de Integração da API

arquivo-num

Número do arquivo a ser criado

arquivo

Nome do arquivo a ser criado

total-planilhas

Número Total de planilhas a serem criadas

exibir-construcao

Exibir construção do arquivo durante o processo

abrir-excel-termino

Abrir Microsoft Excel após término do processo





Temp-Table tt-planilha: possui as definições, gerais, sobre cada uma das planilhas a serem criadas.


TEMP-TABLE tt-planilha

Atributo

Tipo

Formato

Valor Inicial

arquivo-num

integer

>9

1

planilha-num

integer

>9


planilha-nome

character

x(030)


formatar-planilha

logical


yes

linhas-grade

logical


no

largura-coluna

decimal

>>9.99              extent 256

8.50

* ver Definição Temp-Table tt-planilha

* ver Principais Validações da Temp-Table tt-planilha

Atributo

Descrição

arquivo-num

Número do arquivo

planilha-num

Número da planilha

planilha-nome

Nome da planilha

formatar-planilha

Formatar Células da Planilha (Cor, Fonte, Bordas, ...)

linhas-grade

Exibir linhas de grade

largura-coluna

Largura da coluna



Temp-Table tt-dados: possui as definições das propriedades das células a serem inseridas nas planilhas.


TEMP-TABLE tt-dados

Atributo

Tipo

Formato

Valor Inicial

arquivo-num

integer

>9

1

planilha-num

integer

>9


celula-coluna

integer

>>9


celula-linha

integer

>>>>9


celula-cor-interior

integer

>9

58

celula-formato

character

x(255)


celula-formula

character

x(255)


celula-alinhamento-horizontal

integer

9

4

celula-alinhamento-vertical

integer

9

1

celula-valor

character

x(255)


celula-fonte-nome

character

x(255)

Times New Roman

celula-fonte-tamanho

integer

>9

10

celula-fonte-negrito

logical


no

celula-fonte-italico

logical


no

celula-fonte-sublinhado

integer

9

3

celula-fonte-cor

integer

>9

57

celula-tipo-borda-sup

integer

9

7

Celula-tipo-borda-inf

integer

9

7

Celula-tipo-borda-esq

integer

9

7

Celula-tipo-borda-dir

integer

9

7

* ver Definição Temp-Table tt-dados

* ver Principais Validações da Temp-Table tt-dados

* ver Paleta de Core

* ver Referência sobre Tipo Alinhamento Horizontal

* ver Referência sobre Tipo Alinhamento Vertical

* ver Referência sobre Tipo Sublinhado

* ver Referência sobre Tipo Borda

Atributo

Descrição

arquivo-num

Número do arquivo

planilha-num

Número da planilha

celula-coluna

Número da coluna

celula-linha

Número da linha

celula-cor-interior

Número da cor

celula-formato

Formato da célula

celula-formula

Fórmula a ser inserida na célula

celula-alinhamento-horizontal

Tipo de alinhamento horizontal

celula-alinhamento-vertical

Tipo de alinhamento vertical

celula-valor

Valor a ser inserido na célula

celula-fonte-nome

Nome da fonte da célula

celula-fonte-tamanho

Tamanho da fonte da célula

celula-fonte-negrito

Exibir fonte em negrito

celula-fonte-italico

Exibir fonte em itálico

celula-fonte-sublinhado

Tipo de sublinhado

celula-fonte-cor

Número da cor

celula-tipo-borda-sup

Tipo de borda superior

celula-tipo-borda-inf

Tipo de borda inferior

celula-tipo-borda-esq

Tipo de borda à esquerda

celula-tipo-borda-dir

Tipo de borda à direita



Temp-Table tt-grafico: possui as definições, gerais, sobre cada um dos gráficos a serem criados.


TEMP-TABLE tt-grafico

Atributo

Tipo

Formato

Valor Inicial

arquivo-num

integer

>9

1

planilha-num

integer

>9


grafico-nome

character

x(030)


grafico-titulo

character

x(255)


grafico-tipo

integer

>9


intervalo-linha-ini

integer

>>>>9

1

intervalo-linha-fin

integer

>>>>9

65536

intervalo-coluna-ini

integer

>>9

1

intervalo-coluna-fin

integer

>>9

255

intervalo-tipo

integer

9


exibir-legenda

logical


yes

exibir-rotulo-dados

logical


yes

* ver Definição Temp-Table tt-grafico

* ver Principais Validações da Temp-Table tt-grafico

* ver Referência sobre Tipo Gráfico

* ver Referência sobre Tipo Plotagem Dados

Atributo

Descrição

arquivo-num

Número do arquivo

planilha-num

Número da planilha

grafico-nome

Nome do gráfico

grafico-titulo

Título do gráfico

grafico-tipo

Tipo do gráfico

intervalo-linha-ini

Número da linha inicial do intervalo dos dados de origem do gráfico

intervalo-linha-fin

Número da linha final do intervalo dos dados de origem do gráfico

intervalo-coluna-ini

Número da coluna inicial do intervalo dos dados de origem do gráfico

intervalo-coluna-fin

Número da coluna final do intervalo dos dados de origem do gráfico

intervalo-tipo

Tipo de plotagem dos dados

exibir-legenda

Exibir legenda

exibir-rotulo-dados

Exibir rótulo dos dados



Temp-table tt-erros: possui todos os erros encontrados pela API.



TEMP-TABLE tt-erros

Atributo

Tipo

Formato

Valor Inicial

cod-erro

integer



desc-erro

character

x(256)


* ver Definição Temp-Table tt-erros


Atributo

Descrição

cod-erro

Número do erro

desc-erro

Descrição do erro ocorrido da ut-msgs



Execução


 A API utp/utapi003.p  irá executar 2 validações básicas:



PassoValidação:

Versão de Integração

O programa irá verificar se o programa chamador está íntegro com a API, e isto ocorre através da verificação da versão de integração passada como parâmetro. Caso a versão esteja incompatível, a API  abortará abortará a execução retornando o código de erro 3941.

2ª Passo2º Validação:

Inconsistência ou Insuficiência dos Dados

Neste momento, será verificada a existência de dados a serem buscados da planilha.

3ª Passo:

Sessão OLE com o Excel

Será aberta uma sessão de OLE Automation com o Excel e verificada a sua versão.

4ª Passo:

Leitura dos dados

Neste passo, serão lidos todos os dados pedidos e este serão gravados para serem retornados ao programa chamador.

5ª Passo:

Fim do Programa

Neste passo, o programa fecha os arquivos abertos e a sessão com o Excel.

Parâmetros de Saída

 No retorno da execução do programa utp/utapi006.p, será retornado via return-value:

NOK: 

A execução da API foi efetivada, porém, algum pedido não foi criado.

O programa irá verificar a inconsistência e/ou insuficiência dos dados, e isto ocorre através da verificação dos dados passados como parâmetros. Caso os dados sejam inconsistentes ou insuficientes, a API abortará a execução retornando o código de erro 8646.

Cabe ao programa de origem, verificar os registros que estão com erro:

  • ver Principais Validações da Temp-Table tt-configuracao
  • ver Principais Validações da Temp-Table tt-planilha
  • ver Principais Validações da Temp-Table tt-dados
  • ver Principais Validações da Temp-Table tt-grafico




Parâmetros de Saída


No retorno da execução da API utp/utapi003.p, será retornado um dos valores abaixo (via RETURN-VALUE):

NOK: 

criação do arquivo sem sucesso pois os dados passados como parâmetros, através das Temp-Table´s, são inconsistentes ou foram insuficientes;


OK: 

criação do arquivo com sucesso.






No caso do retorno ser NOK, todos os erros encontrados serão retornados através da Temp-Table tt-erros.




Outras Informações


A seguir encontram-se as definições das Temp-Table´s a serem utilizadas pela API utp/utapi003.p.



Bloco de código
define temp-table tt-configuracao
    field versao-integracao   as integer format ">>9"
    field arquivo-num         as integer format ">9"     initial 1
    field arquivo             as char    format "x(255)" initial "c:\tmp\utapi003.xls"
    field total-planilhas     as integer format ">9"     initial 05
    field exibir-construcao   as logical                 initial no
    field abrir-excel-termino as logical                 initial no
    index tt-configuracao-pri is unique primary 
        versao-integracao
        arquivo-num.


Bloco de código
define temp-table tt-planilha
    field arquivo-num       as integer format ">9"     initial 1
    field planilha-num      as integer format ">9"
    field planilha-nome     as char    format "x(030)"
    field linhas-grade      as logical                 initial no
    field largura-coluna    as decimal format ">>9.99" initial 8.50 extent 256
    field formatar-planilha as logical                 initial yes
    index tt-planilha-pri is unique primary
        arquivo-num
        planilha-num
    index tt-planilha-aux is unique
        arquivo-num
        planilha-nome.


Bloco de código
define temp-table tt-dados
    field arquivo-num                   as integer format ">9"     initial 1
    field planilha-num                  as integer format ">9"
    field celula-coluna                 as integer format ">>9"
    field celula-linha                  as integer format ">>>>9"
    field celula-cor-interior           as integer format ">9"     initial 58
    field celula-formato                as char    format "x(255)"
    field celula-formula                as char    format "x(255)"
    field celula-alinhamento-horizontal as integer format "9"      initial 4 
    field celula-alinhamento-vertical   as integer format "9"      initial 1 
    field celula-valor                  as char    format "x(255)"
    field celula-fonte-nome             as char    format "x(255)" initial "Times New Roman"
    field celula-fonte-tamanho          as integer format ">9"     initial 10
    field celula-fonte-negrito          as logical                 initial no
    field celula-fonte-italico          as logical                 initial no
    field celula-fonte-sublinhado       as integer format "9"      initial 3 
    field celula-fonte-cor              as integer format ">9"     initial 57 
    field celula-tipo-borda-sup         as integer format "9"      initial 7 
    field celula-tipo-borda-inf         as integer format "9"      initial 7 
    field celula-tipo-borda-esq         as integer format "9"      initial 7 
    field celula-tipo-borda-dir         as integer format "9"      initial 7 
    index tt-dados-pri is unique primary
        arquivo-num
        planilha-num
        celula-coluna
        celula-linha.


Bloco de código
define temp-table tt-grafico
    field arquivo-num           as integer format ">9"     initial 1
    field planilha-num          as integer format ">9"
    field grafico-nome          as char    format "x(030)"
    field grafico-titulo        as char    format "x(255)"
    field grafico-tipo          as integer format ">9"
    field intervalo-linha-ini   as integer format ">>>>9"  initial 1
    field intervalo-linha-fin   as integer format ">>>>9"  initial 65536
    field intervalo-coluna-ini  as integer format ">>9"    initial 1
    field intervalo-coluna-fin  as integer format ">>9"    initial 255
    field intervalo-tipo        as integer format "9"
    field exibir-legenda        as logical                 initial yes
    field exibir-rotulo-dados   as logical                 initial yes
    index tt-grafico-pri is unique primary
        arquivo-num
        planilha-num
    index tt-grafico-aux is unique
        arquivo-num
        grafico-nome.


Bloco de código
define temp-table tt-erros
    field cod-erro   as integer
    field desc-error as char    format "x(256)".


A seguir encontram-se as principais validações a serem executadas em cada uma das Temp-Table´s de entrada utilizadas pela API utp/utapi003.p.



Principais Validações da Temp-Table tt-configuracao :

1º    Existência de dados na Temp-Table tt-configuracao;
2º    Integridade do campo tt-configuracao.versao-integracao;
3º    Inexistência do arquivo a ser criado, sendo passado como parâmetro através do campo    tt-configuracao.arquivo;
4º    Integridade dos dados.



Principais Validações da Temp-Table tt-planilha :

1º    Existência de dados na Temp-Table tt-planilha;
2º    Integridade dos dados.



Principais Validações da Temp-Table tt-dados :

1º    Existência de dados na Temp-Table tt-dados;
2º    Integridade dos dados.



Principais Validações da Temp-Table tt-grafico :

1º    Integridade dos dados.



A seguir encontram-se um exemplo de Macro que retorna a uma fórmula de uma célula em idioma de macro:


Bloco de código
Sub TraduçãoFunções()
    MsgBox Worksheets("<Planilha>").Range("<Célula>").Formula
End Sub

Onde:

  • <Planilha>: deve ser indicado o Nome da Planilha
  • <Célula>: deve ser indicado a Célula que se deseja retorna o valor em idioma de macro




A seguir encontram-se referências sobre os valores que alguns campos podem assumir :


Referência Tipo Alinhamento Horizontal
01 -     Centralizado
02 -     Distribuído
03 -     Justificado
04 -     Esquerda
05 -     Direita    

Referência Tipo Alinhamento Vertical
01 -     Abaixo
02 -     Centralizado
03 -     Distribuído
04 -     Justificado
05 -     Acima    

Referência Tipo Borda
01 -     Continua
02 -     Tracejada
03 -     Ponto-Traço
04 -     Ponto-Ponto-Traço
05 -     Pontilhada
06 -     Dupla
07 -     Nenhum     




Referência Tipo Plotagem Dados
01 -     Por Linhas
02 -     Por Colunas    

Referência Tipo Sublinhado
01 -     Duplo
02 -     Contábil Duplo
03 -     Nenhum
04 -     Simples
05 -     Contábil Simples    

Paleta de Cores

Image Added

57Automática

58Nenhuma




Referência Tipo Gráfico



01 -     Colunas Agrupadas
02 -     Colunas Agrupadas 3D 
03 -     Colunas Sobrepostas
04 -     Colunas Sobrepostas 3D 
05 -     Colunas 100% Sobrepostas 
06 -     Colunas 100% Sobrepostas 3D 
07 -     Colunas 3D 
08 -     Barras Agrupadas 
09 -     Barras Agrupadas 3D 
10 -     Barras Sobrepostas 
11 -     Barras Sobrepostas 3D 
12 -     Barras 100% Sobrepostas 
13 -     Barras 100% Sobrepostas 3D 
14 -     Linhas 
15 -     Linhas com Marcadores 
16 -     Linhas Sobrepostas 
17 -     Linhas Sobrepostas com Marcadores 
18 -     Linhas 100% Sobrepostas 
19 -     Linhas 100% Sobrepostas com Marcadores 
20 -     Linhas 3D 
21 -     Pizza 
22 -     Pizza Explodida 
23 -     Pizza 3D 
24 -     Pizza Explodida 3D 

25 -     Pizza de Pizza 
26 -     Barras de Pizza 
27 -     Dispersão XY 
28 -     Dispersão com Linhas Ajustadas 
29 -     Dispersão com Linhas Ajustadas sem Marcadores de Dados
30 -     Dispersão com Linhas 
31 -     Dispersão com Linhas e sem Marcadores de Dados 
32 -     Bolhas 
33 -     Bolhas com efeitos 3D 
34 -     Área 
35 -     Área 3D 
36 -     Áreas Sobrepostas 
37 -     Áreas Sobrepostas 3D 
38 -     Áreas 100% Sobrepostas 
39 -     Áreas 100% Sobrepostas 3D 
40 -     Rosca 
41 -     Rosca Explodida 
42 -     Radar 
43 -     Radar com Marcadores de Dados 
44 -     Radar Preenchido 
45 -     Superfície 3D 
46 -     Superfície (Vista de Cima) 
47 -     Superfície 3D (Moldura de Fio) 
48 -     Superfície (Vista de cima com Moldura de Fio) 
49 -     Cotações da Bolsa (Alta-Baixa-Fechamento) 

50 -     Cotações da Bolsa (Volume-Alta-Baixa-Fechamento) 
51 -     Cotações da Bolsa (Abertura-Alta-Baixa-Fechamento) 
52 -     Cotações da Bolsa (Volume-Abertura-Alta-Baixa-Fechamento)
53 -     Colunas Cilíndricas Agrupadas 
54 -     Barras Cilíndricas Agrupadas 
55 -     Colunas Cilíndricas Sobrepostas 
56 -     Barras Cilíndricas Sobrepostas 
57 -     Colunas Cilíndricas 100% Sobrepostas 
58 -     Barras Cilíndricas 100% Sobrepostas 
59 -     Colunas Cilíndricas 3D 
60 -     Colunas Cônicas Agrupadas 
61 -     Barras Cônicas Agrupadas 
62 -     Colunas Cônicas Sobrepostas 
63 -     Barras Cônicas Sobrepostas 
64 -     Colunas Cônicas 100% Sobrepostas 
65 -     Barras Cônicas 100% Sobrepostas 
66 -     Colunas Cônicas 3D 
67 -     Colunas Piramidais Agrupadas 
68 -     Barras Piramidais Agrupadas 
69 -     Colunas Piramidais Sobrepostas 
70 -     Barras Piramidais Sobrepostas 
71 -     Colunas Piramidais 100% Sobrepostas
72 -     Barras Piramidais 100% Sobrepostas
73 -     Colunas Piramidais 3D     



Programa exemplo:

{utp/utapi003.i}
os-delete value("c:\tmp\teste_utapi003.xls").
CREATE tt-configuracao.
ASSIGN tt-configuracao.versao-integracao   = 2
       tt-configuracao.arquivo-num         = 1
       tt-configuracao.arquivo             = "c:\tmp\teste_utapi003.xls"
       tt-configuracao.total-planilha      = 2
       tt-configuracao.exibir-construcao   = yes
       tt-configuracao.abrir-excel-termino = no.
       
CREATE tt-planilha.
ASSIGN tt-planilha.arquivo-num   = 1
       tt-planilha.planilha-num  = 1
       tt-planilha.planilha-nome = "Plan 1 - Grafico 1"
       tt-planilha.linhas-grade  = no
       largura-coluna            = 8.50
       formatar-planilha         = yes.

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 1
       tt-dados.celula-linha  = 1
       tt-dados.celula-valor  = "Região".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 1
       tt-dados.celula-linha  = 2
       tt-dados.celula-valor  = "Norte".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 1
       tt-dados.celula-linha  = 3
       tt-dados.celula-valor  = "Nordeste".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 1
       tt-dados.celula-linha  = 4
       tt-dados.celula-valor  = "Sul".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 1
       tt-dados.celula-linha  = 5
       tt-dados.celula-valor  = "Sudeste".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 1
       tt-dados.celula-linha  = 6
       tt-dados.celula-valor  = "Centro-Oeste".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 2
       tt-dados.celula-linha  = 1
       tt-dados.celula-valor  = "Valor 1".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 2
       tt-dados.celula-linha  = 2
       tt-dados.celula-valor  = "10".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 2
       tt-dados.celula-linha  = 3
       tt-dados.celula-valor  = "20".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 2
       tt-dados.celula-linha  = 4
       tt-dados.celula-valor  = "30".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 2
       tt-dados.celula-linha  = 5
       tt-dados.celula-valor  = "40".

CREATE tt-dados.
ASSIGN tt-dados.arquivo-num   = 1
       tt-dados.planilha-num  = 1
       tt-dados.celula-coluna = 2
       tt-dados.celula-linha  = 6
       tt-dados.celula-valor  = "50".


CREATE tt-grafico.
ASSIGN tt-grafico.arquivo-num = 1
       tt-grafico.planilha-num = 1
       tt-grafico.grafico-nome = "Graf 1"
       tt-grafico.grafico-titulo = "Valores (Plan 1)"
       tt-grafico.grafico-tipo = 4
       tt-grafico.intervalo-linha-ini = 1
       tt-grafico.intervalo-linha-fin = 6
       tt-grafico.intervalo-coluna-ini = 1
       tt-grafico.intervalo-coluna-fin = 2.


RUN utp/utapi003.p (INPUT-OUTPUT TABLE tt-configuracao,
                    INPUT-OUTPUT TABLE tt-planilha,
                    INPUT-OUTPUT TABLE tt-dados,
                    INPUT-OUTPUT TABLE tt-grafico,
                    INPUT-OUTPUT TABLE tt-erros).

if return-value = "nok" then do: 
    for each tt-erros: 
        disp tt-erros with 1 col width 500. 
    end.
end.                  
 

OK: 

A execução ocorreu com sucesso.