Manipular archivos Excel con PHP
Publicado en Programación el 20 de June de 2009 por Manel Pérez MataTags: excel, PHP, Script
¿Es posible tratar archivos xsl con PHP? pues un alma caritativa se ha currado una librería llamada PHP-ExcelReader basada en otra librería Java que nos permite tratar archivos de Excel con PHP de manera sencilla.
Aquí os dejo un ejemplo bastante simple que abre un archivo .xsl y pinta por pantalla todas las pestañas y su información en una tabla, muy simple, pero seguro que os da las bases para poder hacer lo que necesiteis.
- Descargamos la librería desde aquí
- Descomprimimos únicamente la carpeta Excel
- Abrimos el archivo Excel/read.php y modificamos la línea “require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;” por “require_once ‘oleread.inc’;“
- Creamos el archivo test.php con el siguiente contenido:
set_time_limit(0);
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read('mi_archivo.xls');
for($i=3; $i<count($data->sheets); $i++) {
echo "<table>";
for($j=1;$j<count($data->sheets[$i]['cells']); $j++) {
echo "<tr>";
for($z=1; $z<count($data->sheets[$i]['cells'][$j]); $z++) {
echo "<td><center>".$data->sheets[$i]['cells'][$j][$z]."</center></td>";
}
echo "</tr>";
}
echo "</table>";
echo "<br/><br/>";
}
Haciendo uso de este ejemplo, nos sería muy fácil almacenar esta información, por ejemplo en una base de datos MySQL, de este modo tendríamos un importador de Excel a MySQL.
NOTA!! He probado los ejemplos que vienen al descargarte la librería y hay que modificar un par de cosas para que funcionen:
- Fatal error: Maximum execution time of 60 seconds exceeded: Fácilmente solucianable añadiendo set_time_limit (0) al principio del archivo example.php
- Warning: main(Spreadsheet/Excel/Reader/OLERead.php) [function.main]: failed to open stream: No such file or directory: Este error aparece en sistemas Unix porque el include hace referencia al archivo OLERead.php y el nombre está en minúsculas (oleread.php). Modificamos el nombre a mayúsculas y listo.














(4.33 out of 5)
July 1st, 2009 19:42
me sale este error
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 33030145 bytes) in C:\xampp\htdocs\pruebaxl\Excel\oleread.inc on line 172
July 1st, 2009 20:03
Hola Alex,
Debes cambiar la cantidad máxima de memoria usada definida en el archivo php.ini.
Si usas Linux, edita el archivo /etc/php5/apache2/php.ini (en Windows no recuerdo donde estaba alojado) y modifica la línea en que dice
memory_limit = 32M
por
memory_limit = 64M
Con esto debería funcionarte
August 19th, 2009 18:09
El archivo de excel que viene en el phpexcelreader.zip esta corrupto. Cambia el archivo excel y funciona
Saludos