[Cascavel-pm] RE: Módulo bom para capturar informações do Excel

Alceu Rodrigues de Freitas Junior glasswalk3r em hotmail.com
Quinta Junho 28 07:54:43 PDT 2007


Date: Thu, 28 Jun 2007 11:39:27 -0300From: roanbrasil em gmail.comOutra dúvida galera, esse módulo http://search.cpan.org/~szabgab/Spreadsheet-ParseExcel-0.32/lib/Spreadsheet/ParseExcel.pm
 tem para windows tbm?Posi eu uso na minha máquina linux, já até instalei ele. Mas gostaria de saber se para Windows ou como faço para saber pois nunca mexi no Windows e apesar de meu ambiente de desenvolvimento ser linux ele rodará no windows. Então gostaria de um bem comum entre os dois 
S.O. Como faço para saber isso?Eu acho que a resposta é um pouco mais complexa. Se você está em ambiente não-Microsoft, você não vai ter opções diferentes de usar o Spreadsheet-ParseExcel e derivados.Se você está em ambiente Windows, talvez seja melhor você usar o módulo Win32::OLE. Se sua planilha tem dados "simples" para serem extraídos e a planilha é muito grande, você não terá problemas. Do contrário, melhor usar o OLE, principalmente se você precisa verificar/manipular campos de datas e moeda.Eu tentei usar o Spreadsheet-ParseExcel em planilhas com dados suficientes para estourar a capacidade de um arquivo Excel e o script começou a utilizar memória como se ela não fosse mais acabar... eu tive que matar o processo. Depois fiz uma tentativa usando Win32::OLE, lendo linha a linha, célula à célula... funcionou, mas ficou muito lento. Acabei por utilizar leitura de uma vez só selecionando o intervalo todo das células e jogando tudo em mémoria... agora o programa chega nos 100MB (!), mas mantem isso por apenas alguns segundos antes de copiar o conteúdo para um arquivo texto e voltar a trabalhar de forma mais "racional".De lambuja vai o profiling que eu fiz e guardei de curiosidade:"READING EACH CELL BY USING OLETotal Elapsed Time = 263.6139 Seconds  User+System Time = 73.22391 SecondsExclusive Times%Time ExclSec CumulS #Calls sec/call Csec/c  Name 49.5   36.30 35.375 564737   0.0001 0.0001  Win32::OLE::Dispatch 34.2   25.08 25.082 169420   0.0000 0.0000  Win32::OLE::Tie::Fetch 21.1   15.49 14.763 564735   0.0000 0.0000  Win32::OLE::DESTROY 15.3   11.22 93.547      1   11.221 93.546  main::parse_excel 2.42   1.773 36.731 564736   0.0000 0.0001  Win32::OLE::AUTOLOAD 1.95   1.427  5.844  87786   0.0000 0.0001  Win32::OLE::Variant::new 1.21   0.888  0.888 131679   0.0000 0.0000  Win32::OLE::Variant::Date 1.04   0.764  0.764  43893   0.0000 0.0000  Win32::OLE::Variant::Number 0.87   0.639 25.721 169420   0.0000 0.0000  Win32::OLE::Tie::FETCH 0.49   0.360  0.360  43893   0.0000 0.0000  Win32::OLE::Variant::As 0.08   0.059  0.059 131679   0.0000 0.0000  Win32::OLE::Variant::DESTROY 0.06   0.047  0.047  43893   0.0000 0.0000  Win32::OLE::Variant::VT_R8 0.02   0.018  0.018  43893   0.0000 0.0000  Win32::OLE::Variant::VT_DATE 0.02   0.017  0.314  43893   0.0000 0.0000  Win32::OLE::Variant::__ANON__ 0.02   0.016  0.016      1   0.0160 0.0160  Win32::OLE::newREADING EVERYTHING AT ONCE AND LOOP OVER ARRAYS REFSTotal Elapsed Time = 11.57211 Seconds  User+System Time = 6.802119 SecondsExclusive Times%Time ExclSec CumulS #Calls sec/call Csec/c  Name 43.1   2.938  2.938     16   0.1836 0.1836  Win32::OLE::Tie::Fetch 41.2   2.803  9.004      1   2.8028 9.0038  main::parse_excel 19.6   1.339  1.437  87786   0.0000 0.0000  Win32::OLE::Variant::new 15.1   1.030  1.030 131679   0.0000 0.0000  Win32::OLE::Variant::Date 13.1   0.893  0.893  43893   0.0000 0.0000  Win32::OLE::Variant::Number 5.12   0.348  0.348  43893   0.0000 0.0000  Win32::OLE::Variant::As 2.19   0.149  0.149 219710   0.0000 0.0000  Win32::OLE::Variant::DESTROY 0.47   0.032  0.032      3   0.0107 0.0106  ActivePerl::Config::BEGIN 0.24   0.016  0.016      1   0.0160 0.0160  Win32::OLE::Uninitialize 0.24   0.016  0.016      3   0.0053 0.0053  vars::BEGIN 0.22   0.015  0.015      1   0.0150 0.0150  Win32::OLE::new 0.22   0.015  0.015      1   0.0150 0.0150  warnings::BEGIN 0.22   0.015  0.077      5   0.0030 0.0155  main::BEGIN 0.00   0.000  0.000      1   0.0000 0.0000  Config::launcher 0.00   0.000  0.000      1   0.0000 0.0000  Config::fetch_string"Esse artigo é introdutório, então não deixe de testar alguns módulos novos que já existem no CPAN: http://www.ibm.com/developerworks/library/l-pexcel/Mas se você vai operar em planilhas com dados complexos ou muitos dados, eu recomendo utilizar Win32::OLE. A Microsoft já tem bugs demais em seus produtos e utilizar sistemas que TEM que praticamente usar de engenharia reversa para chegar num resultado aceitável é meio arriscado.[]'sAlceu
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070628/0c5da7fb/attachment.html 


Mais detalhes sobre a lista de discussão Cascavel-pm