[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