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