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

Urgente geração em excel lenta

Discussão em 'Progress 4GL' iniciado por bootstrapmaster, Fevereiro 26, 2022.

  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Bom dia meus colegas,
    Tenho um programa que gera uma planilha excel bem complexa, cheia de cores, negritos, redimencionamento de colunas, espaçamentos e varias ABAS.
    É uma planilha de fechamento contabil/gerencial, tem todos os dados de entradas e saidas do datasul, com contas contabeis, informaçõe vindas do HCM e mais detalhes que a diretoria considera importante para a apuração de resultados, nos primeiros meses do ano, até mes 4 ou 5, a planilha até que é rapida, pois ela gera os valores de janeiro ao lado de fevereiro, dai tem colunas fechando totais por trimestre, depois por semestre.
    Então, quanto mais pro fim do ano, mais lenta a geração da mesma acontece.
    eu estou usando aquele esquema de DLL, ou seja, abre o excel oculto e vai preenchedo celula por celula, já fazendo a formatação de cada celula.
    Tá levando mais de hora pra gerar, realmente é uma planilha grande, eu pensei se não teria como eu gerar um arquivo txt ou xml com os dados e formatação de celulas, que seria bem mais rapido e depois só importar para o excel, alguem sabe como seria ?
    Eu até vi a geração de XML, que precisa de um XSD com as formatações das celulas, mas não achei nenhum tutorial de como devem ser esses arquivos, principalmente o XSD e como que ele se liga ao XML, se alguem tiver umas dicas ai, agradeço muito.
  2. ds201

    ds201 Membro Participativo

    Boa tarde

    Depois que o programa já esta em produção é complicado fazer mudanças...

    Tens algum servidor Windows com o pacote Office instalado? Se a resposta for sim então podes executar esta tarefa em RPW.
    Isto iria amenizar a lentidão do programa.

    Outra alternativa seria executar a tarefa em um computador rápido, como uma conexão de rede boa.

    Se fosse um programa novo minha sugestão seria montar uma planilha modelo e criar uma pasta dentro da planilha (não visível para o cliente) onde os dados seriam gravados. Neste caso todas as fórmulas iriam ler os dados da pasta oculta.

    No pior caso resta a "técnica" de executar o programa no fim do expediente...

    Sds
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Boa dia, como eu faço programação orientada a objeto, sem problemas em refazer a classe que gera o excel, não uso RPW para excel, exatamente porque meus servidores são linux, sobre ter um modelo pra depois importar, complica, porque os dados são bem dinamicos, tem meses que não tem movimento em algumas contas, e tem meses que não tem movimento em algumas unidades de negocio, então tanto linhas como colunas variam.
    O que eu pensei, que foi sugestão de um colega nosso é o seguinte, pra cada CELULA eu mandou tudo, ou seja, mando toda a formatação junto, não só o valor a ser posto, então, como primeira tentativa, quando eu montar o cabeçalho das colunas, usando o RANGE() eu ja vou aplicar os formatos e depois eu só mando o valor, da forma mais simples possivel, pra ver se ganho um tempo assim.
    Sobre rodar no final do expediente, complica também, porque a diretoria diz, quero ver a planilha .... em qualquer momento hehehehe.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Pessoal, eu fiz um teste aqui, onde eu formato as colunas usando o comando planilha:ActiveWorkBook:ActeiveSheet:columns():numberFormat = '#.##0,00_ ' por exemplo, deu metade do tempo da geração da mesma planilha do jeito atual, que é formatando celula a celula, agora vou alterar o meu programa original e ver o ganho de tempo dele.
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Pra finalizar o assunto, usando o recurso de formatar as celulas atravez de :range() e columns() no inicio do programa e depois só por o value nas celular, a planilha que mencionei acima, que levava 2Hrs pra gerar o ano inteiro, agora está levando 15 minutos.
    rlfritz curtiu isso.
  6. Marco Pinto

    Marco Pinto Sem Pontuação

Compartilhe esta Página