freelancer, programação, webdesign, php, wordpress, java, consultoria, suporte, manutenção, jquery, mootools, saas, codeigniter, kohana

Ler Folha Excel com PHP

Ontem no fórum Webtuga e no Portugal-a-Programar colocaram-me a mesma questão por duas vezes. Como ler Folhas Excel utilizando PHP.

A resposta não é tão óbvia quanto parece, e é um pouco complexa.

Ao contrário daqui: Ler PDF e Documentos Word com PHP, esta resposta vai um pouco mais além, pois temos que manusear as colunas e células da folha do excel.

Passo então a explicar como manusear a leitura de folhas excel com PHP.

Ler Folha Excel (.xls)

Para que seja possível a leitura do ficheiro excel, primeiramente precisas de instalar a classe phpExcelReader.
Uma vez na posse da classe, executamos a seguinte instrução PHP para ler a folha excel:

require_once 'Excel/reader.php';

$reader = new Spreadsheet_Excel_Reader();
$reader->setOutputEncoding("UTF-8");

$reader->read("test.xls");

for ($i = 1; $i < = $reader->sheets[0]["numRows"]; $i++)
{
	for ($j = 1; $j < = $reader->sheets[0]["numCols"]; $j++)
	{
		print "\"".$reader->sheets[0]["cells"][$i][$j]."\",";
	}
	echo "\n";
}

Alguma dúvida, coloquem.

By Carlos Gonçalves

Carlos Gonçalves é um Freelancer com bastante experiência em linguagens de programação e webdesign. Vocacionado para as novas tecnologias, aposta na qualidade dos serviços, atendimento rápido e sempre disponível para melhor satisfazer os seus clientes. Autor do site cgoncalves.com

Comments (12)

  1. Carlos ,

    Eu tenho uma pagina em PHP onde tenho 2 tabelas e queria por um icon do excel no topo da tabela para ser clicado e exportar essa tabela .
    O problema é que quando uso codigo do mesmo genero que o teu o que aquilo faz é limpar a pagina e exportar para excel mas a pagina fica em branco pois o codigo redireciona o output para o exel , mas depois a pagina onde tinha a tabela e o icon fica em branco.

    Sabes como resolver este problema?

    • Como é que estás a fazer? Se a tua tabela (a exportar) tem os dados gravados numa BD a não ser que faças delete eles não desaparecem.

      Não sei como tens, mas uma forma de fazeres é passares a informação para um array, e o array para o excel, dessa forma mesmo que “limpe”, “limpa” é o array, deixando a tabela intacta.

  2. Classe diferente do que está no seu codigo. Quando compilo com seu exemplo e os includes corretos ainda mostra erro e falta uma pasta definida nas duas classes. Se puder me envie a classe ajustada por favor! Obrigado

    • Olá Augusto, se me acompanha há algum tempo já sabe, se é a primeira vez que aqui vem fica a saber, que raramente coloco a totalidade do código. O objectivo é ensinar e aprender, não “dar a papinha feita”. Com isto quero dizer que, o código que coloquei não é uma classe, é apenas um excerto dela, excerto esse que lê um ficheiro test.xls

  3. Por aqui funcionou bem, mas foi preciso realocar um dos arquivos (o include).

    Basta colocar o arquivo OLERead.inc na pasta:
    \Spreadsheet\Excel\Reader\
    e renomeá-lo como OLERead.php

    Desse jeito a classe funciona. Contudo, ainda recebo um erro:
    **Deprecated: Assigning the return value of new by reference is deprecated in reader.php on line 261**

    Uma atualização dessa chamada deve resolver o problema. Só ainda não vi como fazê-lo.
    Alguma dica? :-)

    Abraços do Brasil.
    Marcos

  4. Atualização:

    Para resolver o problema da classe depreciada, basta remover o & da linha 261.
    A linha correta então, fica:

    $this->_ole = new OLERead();

    Pronto, agora tudo funciona bem. :)
    Abraços.

    Marcos

  5. Carlos, tenho um planilha excel e ja uso a função…
    estava tudo ok até que precisei ler uma planilha que contem alguma celulas com nomes e espaços , ex:. “testes – teste”.
    Dai como eu uso apenas alguma celulas eu armazeno dentro de uma variavel o resultado da leitura de uma determinada linha do arquivo que estou lendo ( $excel->sheets[0]['cells'][5][22] ), mas esta variavel me retorna apenas a primeira palavras, ou seja, retornaria apenas a palavra testes e ignora o resto (ou seja o – teste nao aparece).
    Alguém pode me ajudar?
    Obrigada!

Pingbacks list

  1. Pingback: Carlos Gonçalves

  2. Pingback: Ler Folha Excel com PHP | Carlos Gonçalves

  3. Pingback: Tweets that mention Ler Folha Excel com PHP | Carlos Gonçalves -- Topsy.com

Deixa a tua opinião!

Comment moderation is enabled. Your comment may take some time to appear.