O que pode causar problema de carregamento ao gerar um Excel via AdvPL

No artigo de hoje vamos entender o que causa o erro de gerar e abrir um Excel via AdvPL.

Se você, quando estava desenvolvendo algum relatório que gerava Excel, se deparou com a mensagem “Problemas durante o carregamento – Houve problema nas seguintes áreas durante o carregamento…”, similar ao print abaixo:

Mensagem de Erro ao abrir Excel

Existem algumas coisas que podem impactar, e no caso hoje vamos trazer 3 dicas para você tentar isolar o problema.

 

Dica 1 – Caracteres especiais

Caso você esteja construindo um relatório usando FWMsExcel ou suas derivadas, tome cuidado com caracteres que possam impactar em uma estrutura XML.

Como por exemplo, caracteres como <, >, & e entre outros.

Para isso, na montagem do seu relatório teste as informações e veja se em alguma delas esta indo algum caractere indevido e trate a informação.

 

Dica 2 – Fonte negativa

Esse aqui, é se você utiliza a geração do Excel via TReport, tome cuidado na declaração do tamanho da fonte. Acontece que em muitas partes do Protheus, por exemplo, na classe TFont, nós declaramos a fonte com tamanho negativo.

Mas no TReport, quando ele vai processar o Excel, essa informação acaba invalidando a planilha, então veja um exemplo onde o erro é reproduzido:

...
oReport:SetPortrait()
oReport:SetLineHeight(50)
oReport:nFontBody := -12 //Tamanho da fonte
...

Então para resolver essa questão, basta mudar para um valor positivo, conforme abaixo:

...
oReport:SetPortrait()
oReport:SetLineHeight(50)
oReport:nFontBody := 12 //Tamanho da fonte
...

Dica 3 Testando os dados

Se mesmo com as dicas acima o problema persistir, o que falta então é isolar os dados.

Por exemplo, supondo que tenha 100 linhas no relatório, force o filtro, para trazer apenas 10 registros, depois 20, depois 30 e assim por diante, até achar mais ou menos em que linha apresenta o problema.

Outra situação, seria testar as colunas, supondo que você tenha 5 colunas no relatório, tente testar ele com 1, depois com 2, depois com 3 e assim por diante.

 

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação