Uns tempos atrás precisei de ler o texto em PDF's e .DOC's (Word), esta foi a solução que achei e resolvi partilhar.
Ler Ficheiros PDFPara que seja possível a leitura de PDF’s, primeiramente precisas de instalar o
xpdf package, que inclui “pdftotext.” Depois de termos xpdf/pdftotext instalado, executamos a seguinte instrucção PHP para obter o texto do PDF:
$content = shell_exec('/usr/local/bin/pdftotext '.$filename.' -');
Ler Ficheiros Word (.doc)Ainda como o exemplo acima dos PDF’s, precisas de instalar outro pacote. Pacote esse denominado
Antiword.
Esta é a linha que obtém o conteúdo do Documento Word:
$content = shell_exec('/usr/local/bin/antiword '.$filename);
De frisar que o código acima não lê ficheiros .DOCX (Office 2007) e não (propositadamente) preserva o formato.
Existem outras bibliotecas que preservam a formatação, mas no meu caso, o objectivo era so mesmo obter o texto.
Ler Ficheiros Excel (.xls)Quanto ao do excel, e bem como os exemplos anteriores, será necessário recorrermos a uma classe, classe essa:
phpExcelReaderDepois o código para ler é algo como:
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";
}
Se bem que a leitura do excel é um pouco mais complexa, dá mais trabalho que os outros dois.
Uma outra solução para o Excel e questões de performance aparte, esta é uma solução simples, basta trocar o PDO por um classe de leitura do excel e adaptar-mos. Considerando que tornamos a aplicação apenas para leitura.
Fica aqui o link
OLEREAD para fazerem o download.
Para iniciar a leitura do excel fazemos:
< ?
include 'oleread.php' ;
$file = "ficheiro.xls" ;
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read($file);
?>
Com isto, a estrutura da folha XLS será carregada no Objecto $data. Para acedermos a uma folha precisamos aceder à propriedade “sheets”, um array com todas as folhas do ficheiro (cada “aba” na parte de baixo do excel) pelo número da ordem em que se encontram começando do 0. Exemplo de como obtemos a primeira folha do ficheiro excel:
< ? $first = $data->sheets[0] ; ?>
Ou podemos ainda percorrer todas as folhas:
< ? foreach($data->sheets as $sheet) { // código aqui } ?>
Cada folha (sheet) possui uma propriedade chamada ‘cells’, que é um array multidimensional com todas as células da folha, até aonde foi preenchida. O primeiro índice do array é a linha, o segundo a coluna. Eis um exemplo:
< ? $cells = $data->sheets[0]['cells'] ;
echo "nTitulo da Folha (linha 1, coluna A):". $cells[1][1] ;
echo "nSubtitulo (linha 2, coluna C):".$cells[2][3] ;
?>
Qualquer dúvida apitem.
PS: Aproveito e passo a publicidade

, ambas as informações podem ser encontradas no meu
website.