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
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.
Olá, estou tentando apresentar uma tabela excel numa página php,
mas não aparece nada.
Meu código:
dump();
?>
Na página fica escrito:
dump(); ?>
Alguém poderia me indicar o erro?
Obrigado
Posta seu código no github pragente dar uma olhada, assim sem mais informação fica dificil ajudar, pode ser taaaaanta coisa 🙂
Eu postei o código, mas não apareceu no post.
O código é o seguinte:
include ‘excel_reader2.php’;
$data = new Spreadsheet_Excel_Reader(“planilha.xls”);
$data->dump();
Os nomes dos arquivos estão corretos, no entanto não aparece
a planilha do excel na minha página php.
Alguma idéia?
Obrigado
Pede ao PHP para ele exibir os erros, error_reporting(E_ALL) e posta ai o resultado!
Olá, estou tentando colocar este código de erros, no entanto,
aparece escrito “erro_reporting(E_ALL)” e não aparece o erro.
Olha o código:
include ‘excel_reader2.php’;
$data = new Spreadsheet_Excel_Reader(“planilha.xls”);
$data->dump();
error_reporting(E_ALL);
No entanto, na minha tela aparece:
dump(); error_reporting(E_ALL); ?>
Um detalhe muito estranho: eu já tentei colocar como comentário todo o
código php, no entanto, na tela sempre fica o mesmo escrito $data->dump();
Se eu coloco outro código em qualquer lugar, esse código aparece escrito
seguido do $data->dump();. Alguma idéia?
Obrigado.
Era justamente isso que eu estava procurando, funcionou perfeitamente, mas tive que arrumar algumas coisas no código porque estava dando erro, por exemplo trocar a função split pela explode.
não consegui ver, oq será que stou fazendo de errado
Depende da versão do PHP que vc esta usando!
Boa tarde…
Preciso de uma ajuda, e desde já agradeço!
Depois que transformei a planilha em array, como faço para colocá-la em um banco de dados mysql?
Obrigado e parabéns pelo site.
Carlos
#carlos ai vc vai ter que estudar um pouco sobre PHP e integracao com mysql! nao vai ser uma resposta de um blog que vai resolver o teu problema!
Grande Battisti!!!
Um tempo atrás descobri esta classe e dei uma passada por cima…
Desta vez fui atrás dela pela necessidade, achei ela aqui no teu site e realmente ela é MUITO BOA e o melhor de tudo; F U N C I O N A !! =P
Abraço.
Zanette funciona sim e muito bem! aqui na Webgenium agente usa ela para que as empresa nos montem arquivos para importação!
Muita gente nao sabe como gerar CSV ai até explicar da muito trabalho eu falo manda em XLS que agente se resolve por aqui!
Olá! Eu estou salvando os dados no banco, a partir da array que você criou, mas está indo com acentuação quebrada: “Inform?tica”, “Sa?de”.. porque tá acontecendo isso? pode me ajudar? abs
Opa, consegui. Foi um gato morto, mas como eu só estou criando um dicionário de dados a partir do XML, tá resolvendo: fiz um foreach na array toda, outro foreach pra pegar cada item, e ai pra pegar o dado que eu queria da segunda array eu pus dentro de 1 utf8_encode().. só isso 🙂 mto POG? abs
eu quis dizer xls, não xml :S corrige ai pra quem ver o post e tiver a mesma dúvida saber
veja o encoding do seu banco, no seu caso ele deve estar diferente do arquivo .php a solução é: ou troca o encoding do arquivo ou da um utf8_decode na hora de salvar no banco
Olá, todo arquivo que mando para fazer a leitura diz que é ilegível, porem quando se copia e cola a url do arquivo, ele abre normalmente. Que tipo de permissão deve estar configurada? Pois já verifiquei isso e está tudo normal.
olha ai vai depender muito do teu sistema operacional! se for linux veja se o dono e o grupo tem permissao de leitura se for windows está fora do meu domínio !
Como ler texto que fica dentro de uma caixa de texto??
Depende vc quer ler com js ou php ? se for js tem que usar o atributo value se for php por ser $_POST ou $_GET dependendo do contexto
Cara como faço para colocar isso num banco?
Grande Battisti!
Cara, notei que alguns campos estavam vindo vazios (não cortados)… logo percebi que estes registros eram muito extensos dentro de uma célula no excel.
Te pergunto: Tu já passou por isso?
Grande abraço!
DESCOBERTO!!!
O problema não estava no tamanho e sim no “-” que tinha no texto, ele não estava como um hífen, estava como um “travessão”, logo dava pau na interpretação! \O/
encoding realmente é um problema, o “travessão” não é um caractere válido na tabela iss-8859-1 também conhecida como latin-1. Neste casos o que vc pode fazer também é ao ler o arquivo substituir este tipo de caracter mas eu te recomento fortemente a adotar o utf8 como encoding padrão nos teus arquivos! ainda mais com as novas versões do php
Muito bom, me foi útil e prático.
Abraço!
fantastico isso!
Muito Obrigado, não sabia que o php tem esse recurso, é de muita valia.
Só tenho que agradecer, muito util isso.
Obrigado mesmo!
Alguém sabe como fazer para ler uma planilha do Google em php. E ao atualizar a planilha ela atualizar também em php.