1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Geração de Planilha Excel x Progress (Utilizando Modelo)

Discussão em 'Outros/Diversos' iniciado por eduardo.leite, Março 27, 2009.

  1. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caros colegas,

    Através do Progress podemos gerar planilha excel, porém está geração normalmente é lenta quando necessitamos formatar as células, aplicar borda, cor, fonte, filtros, etc.

    Temos, atualmente, três situações para a geração de Excel a partir do progress:

    01) Através do Go-To-Excel (modulo da Datasul): O Go-To-Excel pega as informações da tela ou do relatório e exporta para o excel sem nenhuma formatação, devendo o usuário fazer as formatações necessárias manualmente;

    02) Atrávés da API Datasul para geração de Excel: No desenvolvimento podemos utilizar-se da API para geração da planilha excel, permitindo passar os dados para a API e assim gerar a planilha. Neste caso também, não será feito formatação, devendo o usuário formatar o arquivo manualmente.

    03) Gerar a planilha através do desenvolvimento, utilizando-se da OCX do Excel: Neste caso, o programador tem todas as ferramentas do excel para formatar o arquivo na medida que vai sendo gerado a planilha. Porém, nesta caso temos algumas situações que interferem na perfomance:

    a) Se gerarmos os mesmos dados em arquivo texto puro e gerar na planilha excel percebemos que a uma diferença na perfomance, onde quando gerado o arquivo texto é bem mais rápido;
    b) Quanto mais informação (colunas e linhas) inserimos na planilha e quanto mais formatação for feita, mais demorado ocorre a geração da mesma;
    c) Outra situação que ocorre, é que desde que abrimos a planilha excel através do comando "create "excel.application" ChExcel." até seu fechamento, normalmente não podemos abrir outra planilha do excel, senão o progress passa a escrever nesta nova sessão da planilha aberta. Este problema é solucionado inserindo os seguinte comandos depois da abertura do excel: "ChExcel:visible = no" e "chexcel:ScreenUpdating = no", devendo ser setado para "yes" antes de fechar a planilha.

    Para agilizar a criação da planilha excel, estive estudando alguns métodos de forma que a planilha seja gerada mais rápido e que o usuário possa estar usando normalmente outras planilhas sem problema.

    Para isto segui os seguintes passos:

    01) Trabalhar com Planilha Modelos: Para cada rotina, criamos planilhas modelos com o mesmo nome da rotina, nesta planilha já está definido todas as formatações necessárias para o arquivo, tais como:
    a) Configuração da página (rodapé, cabeçalho, largura das margens, zoom, linha a repetir no cabeçalho, congelar, etc);
    b) Formatações: Fonte, imagem, borda, formatação condicional, etc,
    c) Deixamos 4 linhas já preenchidas e formatadas, quando executamos a rotina, identificamos a quantidade de registros encontrados e antes de escrever os dados na planilha, copiamos as 4 linhas formatadas para as demais. Exemplo: Se encontramos 1500 registros, copiamos as 4 linhas para as 1500 linhas, assim já temos 1500 formatadas;
    d) Ao escrever os dados, não estaremos fazendo celula a celula, estaremos escrevendo apenas na primeira celula ("A"), onde estaremos colocando nesta célula todos os dados das colunas separado por um delimitados, neste momento nossa planilha teria as informações de todas as colunas apenas em uma célula.
    e) Depois de terminado de ler todos os registros, faremos então a seleção de todas as linhas da coluna "A", para converter seu valor de TEXTO para COLUNA, onde então todas as colunas serão preenchidas.

    O básico da rotina é este, e sua elaboração ficou bem simples e fácil de montar, uma vez que não necessitamos ficar formatando em tempo de execução.

    Façam um teste, convertam uma rotina que gerem em uma planilha, onde toda a formatação é feita manualment e com este processo e poste aqui os resultados, se foram satisfatórios ou não.


    Espero tê-los ajudados, no meu caso, onde tenho usado este recurso, o ganho foi considerável ótimo.


    Att.


    Eduardo B. Leite

    Arquivos Anexados:

  2. turks

    turks Membro Participativo

    Muito Bom!
    Ótimo Tópico!
  3. contatotalitacamargo

    contatotalitacamargo Sem Pontuação

    :D Muito bom mesmo.
    Me ajudou pakas.
    Vlw
  4. bruno_mps

    bruno_mps Sem Pontuação

    Olá.
    Estou precisando de uma ajuda... pois estou recebendo o seguinte problema ao rodar o programa.

    Conflito entre a tabela usuar_mestre nos bancos mg e ems5.
    Como posso resolver? Tem alguma maneira de eu direcionar o código para pegar somente o banco MG ?

    Obrigado

    Arquivos Anexados:

  5. mvbrosque

    mvbrosque Sem Pontuação

    Boa tarde!

    Basta desconectar o banco EMS5 :)
  6. danilo_kratos

    danilo_kratos Membro Participativo

    erros

    ** "include\esin001i00.i" nao foi encontrado. (293)
    ** Nao entendi a linha 37. (193)
    ** "include\esin001i01.i" nao foi encontrado. (293)
    ** Nao entendi a linha 44. (193)
    ** "include\esin001i02.i" nao foi encontrado. (293)
    ** Nao entendi a linha 55. (193)
    ** Unknown Field or Variable name - iLinha. (201)
    ** Nao entendi a linha 57. (196)

Compartilhe esta Página