FWMsExcelEx ocasionando errorlog

Olá pessoal boa tarde.

Começou a ocorrer um errorlog que antes não ocorria com a classe FWMSEXCELEX, no código abaixo o erro ocorre no método oExcel:Activate(). Alguém já passou por isso.

invalid handle used in file D:\bamboo\xml-data\build-dir\TP11-OF19310-TECXWIN64\lib_base\diskman.cpp at line 321 on WRITEDATA(FWMSEXCELEX.PRX) 30/09/2021 11:46:45 line : 2110


Local cArquivo      := GetTempPath() + 'RelConsOP.xml'

Private oExcel      := FWMsExcelEx():New()

if iif(Valtype(MV_PAR07) == "C", MV_PAR07 == "S", MV_PAR07 == 1)

   oExcel:AddworkSheet("ConsumoOP")

   oExcel:AddTable("ConsumoOP","OP")

   oExcel:AddColumn("ConsumoOP","OP","Ordem de Produção"    ,1,1)

   oExcel:Activate()

   oExcel:GetXMLFile(cArquivo)

endif

1 curtida

Por um motivo pelo qual eu ainda não consegui relacionar, mas quando a query retorna vazia dá erro. Se for isso mesmo acredito que deveria ter uma validação da classe para impedir esse erro, enfim se alguém se deparar com esse erro o problema é esse.

Bom dia!

Tive esse problema no passado, em contato com a TOTVS obtive o seguinte retorno:

A classe FwMsExcelEx realiza a geração do arquivo .XML em tempo de execução das instruções, assim sendo, cada método executado para realizar a escrita síncrona em um arquivo físico.

Desta forma, a classe não guarda o estado do que já foi escrito no arquivo, por esse motivo, ao gerar um arquivo .XML apenas com os títulos das colunas, a aplicação não consegue visualizar o conteúdo da planilha.

Assim sendo, utilize a classe FwMsExcel (escrita em memória) ou então adicione uma linha em branco abaixo dos títulos das colunas, pois assim a estrutura do arquivo .XML será encerrada corretamente.

Para corrigir isso usando a própria FwMsExcelEx, efetuei a seguinte tratativa nos meus fontes antes de executar o método Activate e funcionou corretamente.


If(oExcel:nRows == 0)

    aAux := Array(Len(oExcel:aTable[1,3]), '')

    oExcel:AddRow(cSheet, cTable, aAux)

Endif

1 curtida