Lentidão ao processar planilhas Excel

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Lentidão ao processar planilhas Excel

Mensagem por Adson »

Bom dia,

Alguém tem alguma solução que melhore a performance na manipulação (leitura/gravação) de planilhas Excel?

Parece que se trata de um problema com o objeto Excel.Application e não da linguagem utilizada. Fiz alguns testes com xHarbour, FoxPro e Delphi e em todos a manipulação, mesmo que seja apenas de leitura, fica muito lenta.

At.te,
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Lentidão ao processar planilhas Excel

Mensagem por Itamar M. Lins Jr. »

Olá!
SSD + RAM + I7 ou I9.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lentidão ao processar planilhas Excel

Mensagem por JoséQuintas »

E talvez memória.
Por ADO não sei sobre gravação, mas leitura vai bem.
Não uso isso do Excel, pra não obrigar Excel.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Lentidão ao processar planilhas Excel

Mensagem por Adson »

Meu equipamento tem:

- SSD 480
- 16G RAM
- Processador I7

Durante a leitura da planilha, o consumo de memória e energia fica nas alturas
Anexos
consumo.jpg
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Lentidão ao processar planilhas Excel

Mensagem por Itamar M. Lins Jr. »

Olá!
Ai com essa configuração, não sei mesmo.
Só lendo em grupos de usuários do Excel.

Desliga os antivírus.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Lentidão ao processar planilhas Excel

Mensagem por Itamar M. Lins Jr. »

Olá!

Vi alguns, mandando desligar os addons. add-ins
https://www.getdroidtips.com/getting-hi ... el-Add-ins
https://answers.microsoft.com/en-us/mso ... b81b07ba5d

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

Lentidão ao processar planilhas Excel

Mensagem por ivanil »

Ola;

Acredito que você esteja usando um for ou while para lidar com célula a célula correto?
Isso se tornou impraticável para meu uso devido à demora;

Você pode lidar de duas forma, atribuindo uma array a um range previamente definido; mas ainda assim ganha pouco desempenho ou;;;

utilizar o Clipboard para colar o texto diretamente no Excel; com isso resolvi o problema de lentidão (milhares de linhas) no entanto, tem um efeito colateral, o usuário pode tentar o usar o clipboard durante o processo; neste caso eu marco a entrada e após a colagem, verifico se a marcação é igual;

Quanto ao consumo de recurso, você precisa liberar o CPU a cada ciclo, caso use minigui, doEvents();


at;

Ivanil
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Lentidão ao processar planilhas Excel

Mensagem por Adson »

ivanil escreveu:Ola;

Acredito que você esteja usando um for ou while para lidar com célula a célula correto?
Isso se tornou impraticável para meu uso devido à demora;

Você pode lidar de duas forma, atribuindo uma array a um range previamente definido; mas ainda assim ganha pouco desempenho ou;;;

utilizar o Clipboard para colar o texto diretamente no Excel; com isso resolvi o problema de lentidão (milhares de linhas) no entanto, tem um efeito colateral, o usuário pode tentar o usar o clipboard durante o processo; neste caso eu marco a entrada e após a colagem, verifico se a marcação é igual;

Quanto ao consumo de recurso, você precisa liberar o CPU a cada ciclo, caso use minigui, doEvents();


at;

Ivanil
Ivanil, para gerar planilha estamos usando a libxlsxwriter.dll e fica muito rápido. Meu problema é para fazer a leitura de uma planilha e tratar as células pois essa dll não possui funções de leitura, apenas gravação (pelo menos não conseguimos encontrar esse recurso nessa DLL).

Vc acertou, eu uso o For...Next para percorrer todas as linhas da planilha.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lentidão ao processar planilhas Excel

Mensagem por JoséQuintas »

Adson escreveu:Vc acertou, eu uso o For...Next para percorrer todas as linhas da planilha.
Cheguei a ver as mensagens circulando no harbour-users, quando pediram pra poder trabalhar com array nisso do Excel.
Fazem muitos anos isso, não lembro se era pra velocidade ou não.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lentidão ao processar planilhas Excel

Mensagem por JoséQuintas »

José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Lentidão ao processar planilhas Excel

Mensagem por Adson »

Adotei uma decisão mais "radical" :)

Salvei a planilha como .csv (delimitado por vírgulas) e tratei-a como um arquivo texto.

O tempo de processamento da planilha, usando o objeto Excel.Application, demorava cerca de 27 minutos e caiu para 7 minutos.

Obrigado a todos pela ajuda.
Responder