Á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 com Excel Web (001)


Nome Físico: utp/utapi029.p

Nome do Include com Parâmetros:

Versão de Integração: 001

Objetivo: 

A API de Integração com excel  tem como função gerar código javascript para gerar planilhas e gráficos no excel em programas estilo pai x filho. 

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: Integração Office




Métodos Internos



 Setboversion:

Define a versão do bo utilizado pela API.



Parâmetros:

NOME

DESCRIÇÃO

TIPO

 pboversion

Recebe a versão do bo utilizado pela API.

Char



Sethandle:

Define o handle a bo utilizada pela API.


Parâmetros:

   NOME

DESCRIÇÃO

TIPO

ph-handle

Recebe o handle do bo utilizado pela API.

Handle



Configuraarquivo:

Define as configurações do arquivo.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

iarquivo-num

Número do arquivo que vai ser gerado pela API.

Integer

carquivo

Nome do arquivo que será gerado pela API.

Char

itotalplanilhas

Total de planilhas que terá o arquivo.

Integer

lexibir-construção

Indica se será mostrada a construção da planilha.

Logical

lexibir-excel-termino

Indica se o excel será aberto após a const. da planilha.

Logical

limprimir

Indica se o grafico gerado pela API será impresso.

Logical

iorientacao

Indica qual será o setup da página(1=retrato/2=paisagem)

Integer

lpromptsalvar

Indica se será usado um prompt javascript perguntando o caminho que o arquivo deve ser salvo.

Logical

OBS: Não é recomendável usar a opção “lpromptsalvar” quando se usar a opção “lexibir-excel-termino” pois isso poderá causar erro se o usuário fechar o excel antes de responder ao prompt javascript.



Configuraplanilha:

Define a configuração da planilha que será gerada.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

iarquivo-num

Indical a qual arquivo pertence a planilha.

Integer

iplanilha-num

Indical qual planilha esta sendo configurada.

Integer

cplanilha-nome

Indica qual o nome que a planilha recebera.

Char

llinhas-grade

Indica se sera tirada as linhas de grade ou não.

Logical

dlargura-coluna

Indica qual será a largura das colunas da planilha.

Decima

lformatar-planilha

Indica se a planilha será formatada ou não.

Logical



SetFaixaIni:

Seta a faixa inicial (coluna/linha) da planilha.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

icolini

Número da coluna onde ira começar a construção da planilha.

Integer

ilinhaini

Número da linha onde ira começar a construção da planilha

Integer



SetCampo:

Define os campos da tabela que serão inseridos na planilha.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

iarquivo-num

Número do arquivo a qual o campo pertence.

Integer

iplanilha-num

Número da planilha a qual o campo pertence

Integer

clabel

Label do campo a ser inserido na planilha.

Char

ccampotab

Nome do campo que será exportado para excel.

Char

ctype

Tipo de dado do campo.

I – campo do tipo integer

D – campo do tipo date

C – campo do tipo character

E – campo do tipo decimal

L – campo do tipo logical

Char

ialign

Define em posição as informações serão mostradas.

Integer

cfont

Nome da fonte utilizada.

Char

ifont-size

Define tamanho de fonte das informações.

Integer

lbold

Define se as informações serão em negrito.

Logical

litalic

Define se as informações serão em itálico.

Logical

icolor

Define a cor da font utilizada.

Integer

formula

Define se uma fórmula do excel.

Char

variaveis

Define as variáveis utilizadas na fórmula, onde as mesmas devem ser separadas por vírgula.

Char



CampoEsp:

Insere campos especiais na planilha ex. um título para a planilha.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

Iarquivo-num

Número do arquivo a qual o campo pertence.

Integer

Iplanilha-num

Número da planilha a qual o campo pertence.

Integer

icelula-coluna-num

Número da coluna a qual o campo pertence.

Integer

icelula-linha-num

Número da linha a qual o campo pertence.

Integer

icelula-cor-interior

Define a cor do interior da célula.

Integer

ccelula-formato

Define o formato da célula.

Char

ccelula-formula

Define uma fórmula do excel para a célula, sendo que se este parâmetro estiver diferente de branco o parâmetro ccelula valor será ignorado.

Char

icelula-alinhamento-horizontal

Define qual será o alinhamento da célula na horizontal.

Integer

icelula-alinhamento-vertical

Define qual será o alinhamento da célula na vertical

Integer

ccelula-valor

Define o valor da célula sendo que se o parâmetro ccelula-formula estiver com valor deiferente de “ ”(branco) este será ignorado.

Char

ccelula-fonte-nome

Define o nome da font utilizada no campo.

Char

icelula-fonte-tamanho

Define o tamanho da font utilizada no campo.

Integer

lcelula-font-negrito

Define se a font será em negrito.

Logical

lcelula-font-italico

Define se a font será em itálico.

Logical

icelula-fontsublinhado

Define se a font será sublinha .

Integer

icelula-font-cor

Define a cor da font na célula.

Integer



RetornaPosição:

Retorna dois valores do tipo inteiro, (linha/coluna) para informar ao desenvolvedor qual a última célula utilizada.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

pi-linha

Número da linha da última célula gerada pela procedure incluivalores.

Integer

pi-coluna

Número da coluna da última célula gerada pela procedure incluivalores.

Integer



ConfiguraGrafico:

Define as configurações do gráfico que representará os dados da planilha.


Parâmetros :

NOME

DESCRIÇÃO

TIPO

iarquivo-num

Número do arquivo onde será incluído o gráfico

Integer

iplanilha-num

Número da planilha que servira as informações do gráfico.

Integer

cgrafico-nome

Nome do gráfico que será gerado pela API.

Char

cgrafico-titulo

Título do gráfico que será gerado pela API.

Char

igrafico-tipo

Tipo de gráfico que será gerado pela API.

Integer

Iintervalo-tipo

Tipo de intervalo de dados que sera gerado.

Integer

lexibir-legenda

Define se o gráfico tera legenda.

Logical

lexibir-rotulo-dados

Define se os dados do gráfico terão rótulos.

Logical

lexibir-eixo-cat-x

Define se o gráfico terá o eixo cart. X

Logical

lexibir-eixo-val-z

Define se gráfico terá o eixo dos valores.

Logical



GeraIntegracao:

Gera o código javascript para fazer a integração com o Excel.


Parâmetros:

NOME

DESCRIÇÃO

TIPO

rowerrors

tabela (input/output) contendo os erros

tabela

pbotao

“botao”: fará com que o código javascript seja gerado a cada execução.

“”: fará com que o código javascript seja gerado apenas quando o botão for pressionado.

char



LimpaCampos:

Limpa os campos (dados da planilha) inseridos até o momento. Não limpa os campos que já foram processados através do método




IncluiValores:

Inclui os valores criados com o método setcampo e campoesp na planilha.






Utilização


Para que a integração com excel seja possível é necessário que algumas propriedades do internet explore sejam alteradas:

Acessar no menu ferramentas/opções da internet no folder segurança escolher o tópico intranet e clicar no botão nível personalizado, irá abrir a janela configurações de segurança procurar a opção Plugins e controles ActiveX, Na flag Inicializar e executar scripts de controle ActiveX não marcados como seguros escolher a opção confirmar, para que o mesmo pergunte ao usuário se o mesmo quer executar o ActiveX.



O Desenvolvedor pode utilizar a API de duas formas:


Gerando código javascript para integração com  excel a cada execução:

Este método gera uma função javascript que é responsável pela integração com excel, é executada Através do evento de onClick de um botão no html. Este método não executa submit para montar o código javascript pois o mesmo é montado a cada execução já estando preparado para gerar o arquivo excel com os dados que o mesmo tem na tela.

Informações
iconfalse
OBS: Esta técnica não deve ser utilizada em programas web que utilizem tabelas com muitos registros, pois o mesmo gerara código javascript para integração com excel em todas as execuções do programa, o que pode ocasionar uma perda de performance.


  • O Desenvolvedor deve definir no programa uma variável do tipo handle com o nome de h-excel.

Ex.:

Bloco de código
languageruby
Define var h-excel as handle no-undo.


  • Na procedure generateHeaderSon do programa filho deve ser definido um botão utilizando a técnica de botões customizados para que o mesmo execute a função geraexcel criada pela API.

Ex.:

Bloco de código
languageruby
def var auxFunction as char no-undo.
assign auxFunction = "geraexcel()".
{web/winclude/wi-sonbut.i "Excel" "btn_excel" auxFunction}



  • Na procedure process-web-request deve-se rodar a API de modo persistent utilizando a include{utp/utapi029.i2} passando como parâmetro a variável handle definida.

Ex.:

Bloco de código
languageruby
{utp/utapi029.i2 h-excel}


  • Deve-se informar a API a versão da bo que será utilizada.

Obs: Se for bo 1.1 deve-se passar o parâmetro como branco.

Ex.:

Bloco de código
languageruby
RUN setboversion IN h-excel("2.0").


  • Deve se usar a include “method/dbotterr.i” no programa que chama a api.




  • Passar o handle da bo utilizada para API.

Ex.:

Bloco de código
languageruby
RUN sethandle IN h-excel({&hDBOSon}).


  • Informar a API sobre a configuração do arquivo que será gerado pela mesma.

Ex.:

Bloco de código
languageruby
RUN configuraarquivo IN h-excel(1,"anderson.xls",2,NO,YES,NO,1).


  • Informar a API sobre a configuração da planilha.

Ex.:

Bloco de código
languageruby
RUN configuraplanilha IN h-excel(1,1,"ordens do repres",NO,12.5,YES).


  • Setar a célula inicial da planilha para indicar em qual ponto serão inseridos os dados gerados pela API.

Ex.:

Bloco de código
languageruby
RUN setfaixaini IN h-excel(1,3). /*(coluna/linha)*/


  • Informar a API quais os campos da tabela que serão utilizados para geração da planilha.

Ex.:

Bloco de código
languageruby
  • serão utilizados para geração da planilha.

Ex.:

Bloco de código
languageruby
RUN setcampo IN h-excel (1,1,"order-num","order-num","I",3,"Times New Roman",12,NO,NO,57,"","").
RUN setcampo IN h-excel (1,1,"cust-num","cust-num","I",3,"Times New Roman",12,NO,NO,57,"","").
RUN setcampo IN h-excel (1,1,"data-ordem","order-date","D",3,"Times New Roman",12,NO,NO,57,"","").
RUN setcampo IN h-excel (1,1,"repres","sales-rep","C",3,"Times New Roman",12,NO,NO,57,"","").


  • Após informar os campos que serão utilizados pela API deve-se executar a procedure incluivalores para que a mesma efetive os dados que serão lançados na planilha.

Ex.:

Bloco de código
languageruby
RUN incluivalores IN h-excel.


  • Para gerar o gráfico da planilha criada deverá ser executado o método configuragrafico após executar o método incluivalores, e em seguida o método geraintegração.

Ex.:

Bloco de código
languageruby
RUN configuragrafico IN h-excel(1,2,"Grafico cliente","Limite do cliente",2,2,YES,NO,NO,NO).

OBS.: Para verificar os parâmetros o desenvolvedor deve consultar o tópico métodos internos na procedure configuragrafico.



  • Após executar a procedure configuragrafico deverá ser gerado o código javascript para fazer a integração com o Excel. Neste método é verificado se existem erros nas informações passadas pelo desenvolvedor. Este método recebe dois parâmetros:

Como input-output table a tabela rowErrors;

Como input um valor char para verificar se a mesma gerará código javascript a cada execução ou se será gerado o código javascript somente quando se clicar no botão.

Se for passado como parâmetro "botao" a API gerará código javascript a cada execução.

Ex.:

Bloco de código
languageruby
RUN geraintegracao IN h-excel(INPUT-OUTPUT TABLE RowErrors, INPUT "botao").

Se for passado como parâmetro “ ” a API irá gerará o código javascript somente quando o botão for acionado.

Ex.:

Bloco de código
languageruby
RUN geraintegracao IN h-excel(INPUT-OUTPUT TABLE RowErrors, INPUT "").


  • Após rodar a procedure geraintegracao deve-se fazer a chamada da include utapi029.i3 passando para a mesma a variável handle definida pelo desenvolvedor, que é responsável pela verificação de erros durante a geração do código javascript e pela consistência dos dados passados a API, se houver erros a mesma não gerará o código para criar a planilha e apresentará os possíveis erros através da include wi-erapi.i. Este metódo também é responsável por deletar o handle da api.

Ex.:

Bloco de código
languageruby
{ utp/utapi029.i3 h-excel}




Gerando código javascript para integração com  excel através de um submit:

Este método gera uma função javascript que é responsável pela integração com excel, é executada através do evento onClick de um botão no html. Este método funciona basicamente como o anterior, mas ao invés de gerar o código javascript a cada execução o mesmo utiliza um location passando como parâmetro na url excel=yes para montar o código javascript.



  • O Desenvolvedor deve definir no programa uma variável do tipo handle com o nome de h-excel.

Ex.:

Bloco de código
languageruby
Define var h-excel as handle no-undo.


  • Na procedure generateHeaderSon do programa filho deve ser definido um botão utilizando a técnica de botões customizados para que o mesmo execute a função geraexcel criada pela API.

Ex.:

Bloco de código
languageruby
def var auxFunction as char no-undo .
assign auxFunction = "geraexcel()".{web/winclude/wi-sonbut.i "Excel" "btn_excel" auxFunction}


  • Na procedure outputHeader inserir o seguinte código:

Este código fará com que a página seja atualizada passando na url o parâmetro excel=yes para que seja gerado o código javascript.

Ex.:

Bloco de código
languageruby
IF get-value("param") <> "" THEN DO:
   {&out}
    '<script language="javascript">' SKIP   SKIP
    'function geraexcel()~{' SKIP   SKIP
    'location = location + "&excel=yes"~;' SKIP   SKIP
    '~}' SKIP
 SKIP      '</script>'.
END.
ELSE DO:
     {&out}
     '<script language="javascript">' SKIP    SKIP
     'function geraexcel()~{' SKIP    SKIP
     'location = location + "?excel=yes"~;' SKIP    SKIP
     '~}' SKIP    SKIP
     '</script>'.
END.


  • Na procedure process-web-request deve-se executar a API de modo persistente utilizando a variável h-excel, testando o parâmetro excel, se o mesmo for =yes deve-se rodar a API e seus métodos internos para se gerar o código javascript.






Outros recursos da API do excel


Foram criados alguns métodos para permitir ao desenvolvedor uma maior interação com a geração da planilha.


1. Inserindo valores especiais:

  • Para Inserir em uma célula um título ou um valor em especial o desenvolvedor pode utilizar o método interno da API campoesp que cria uma célula na planilha com base nas informações passadas como parâmetros.

    Para inserir um título na célula A1 da planilha.

    Ex.:RUN campoesp IN h-excel(1,1,1,1,58,"","",4,1,"Ordens do representante","Times New Roman",12,YES,YES,3,57).

    Para inserir uma fórmula de soma no final de uma coluna.

    Ex.: ASSIGN cformula = "=sum(F3:F" + STRING(ilinha) + ")".

    RUN campoesp IN h-excel(1,2,icoluna,(ilinha + 1),58,"","",4,1,cformula,"Times New Roman",12,YES,YES,3,57).



2. Saber qual a última célula da planilha utilizada.

  • Quando o desenvolvedor quiser saber qual a última célula utilizada pela planilha basta rodar a procedure retornaposicao está retornara ao mesmo a ultima  linha e coluna utilizados pela planilha.

    Ex.: RUN retornaposicao IN h-excel (OUTPUT ilinha, OUTPUT icoluna).



3. Mais de uma planilha

  • Quando o desenvolvedor tiver que inserir mais de uma planilha no mesmo arquivo este deve rodar a procedure limpacampos após rodar a incluivalores para que não seja inserida na nova planilha os dados já efetivados. 

Ex.: RUN limpacampos IN h-excel.




Propriedades do Excel


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        

57 -Automática

58  -Nenhuma

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





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

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