O Problema
Um de nossos clientes precisava coletar dados de diversas empresas, estes dados estavam todos em planilhas do excel e não tinha como pedir para estas empresas exportarem para cvs ou algo do tipo devido a diversos problemas que não vem ao caso, sendo assim a minha única alternativa era extrair os dados de dentro dos arquivos do excel através do PHP.
A Solução
Dando uma garimpada na NET acabei “trombando” com este cara PHP Excel Reader, o projeto era muito bom mas estava meio parado e com uma porção de bug, então um pessoal criou um fork deste projeto e coloco no code.google.
O código funciona muito bem e abaixo apresentarei alguns exemplo de como utilizar o PHP Excel Reader.
Exibindo Uma Planilha
Caso seu desejo seja apenas apresentar o conteúdo de um arquivo excel no navegador então faça o seguinte:
$data = new Spreadsheet_Excel_Reader("test.xls");
$data->dump();
Convertendo uma Planilha em Array
Não existe tal função na ferramenta, sendo assim eu fiz a implementação desta funcionalidade
$data = new Spreadsheet_Excel_Reader("test.xls")
$totalLinhas = $data->rowcount();
$totalColunas= $data->colcount();
for($i = 1; $i <= $totalLinhas; $i++){
for($j = 1; $j <= $totalColunas; $j++){
$a[$i][$j] = $data->val($i,$j);
}
}
return $a;
Conclusão
Com o PHP Excel Reader ficou bem fácil de trabalhar com arquivos do excel no php. Uma coisa que pude notar é que existem diferenças de comportamento durante a leitura de arquivos xls feitos no OpenOffice e nos feitos no Excel da Microsoft, isso acontece principalmente devido a formatação das células em datas moedas etc.. o que estou fazendo é deixar todas as colunas no formato String mesmo
Gerenciamento de Projetos com dotProject
PHP Programando com Orientação a Objetos
Desenvolvendo Websites com PHP
Mtu bacana esti kodigu hein………… soh naum sei u ke eh akela linha “$this->_data->val($i,$j);” ??!?!
Podi me explicar ?
esse $this->_data->val($i,$j); na verdade tem que ser $data->val($i,$j); ai vai dar certo
vlw meu migu Bbattisti…vc eh 1 kara legau…… 1 pessoa ke ajuda as pessoa……
QdU PREcIsAH di aLGuMah AjudAH eH Soh falaH TAH??!?! ehhehe
Como instalo a classe, tipo tiro do zip e coloco onde? tentei mas ele dá erro ao chamar a classe.
você precisa dar um include na claase antes de usa-la
Nao funciona… tentei somete exibir a planilha e deu a seguinte mensagem:
Call to undefined method Spreadsheet_Excel_Reader::dump() in C:\wamp\www\hidrico\form_monitoramento.php
provavelmente faltou algum include! ou alguma configuração do XAMPP ele é meio embasado! Manda uma parte do teu source pragente dar uma olhada
Está dizendo que meu arquivo é ilegível. Pode me ajudar ?
Da uma conferida nas permissões do teu arquivo, usa windows ou linux?
Enfim, encontrei a solução
Muito obrigado!
Abraços
Meu caro,
A ferramenta funciona maravilhosamente bem. Só tenho uma dúvida que tá me deixando maluco. Como exibir células específicas de uma tabela?
ex.:
imaginemos a tabela exemplo.xls, ela tem 3 planilhas, em cada uma tenho informações alocadas em diferentes campos (ex.: célula a1= josé, célula b4=homem, celula d5=magro, etc.).
Digamos que eu precise apenas do conteúdo das célula a1 e d5 da primeira planilha (“josé” e “magro”) e do conteúdo das células b4 e d5 da segunda planilha (“fulano” e “qualquer coisa”). Como eu faço essa bendita coisa? Tô me matando aqui e nada. Você pode de dar uma mão nisso?
Agradeço desde já.
Elmo
Elmo na documentação
http://code.google.com/p/php-excel-reader/wiki/Documentation
Access data on a different sheet:
$data->val($row,$col,$sheet_index)
Com isso deve resolver o seu problema
Opa! Resolvido. Era exatamente isso.
Abração, cara. Valeu pela ajuda.