Manipular archivos Excel con PHP

Publicado en Programación el 20 de June de 2009 por Manel Pérez Mata
Tags: , ,

excel_2007¿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.

  1. Descargamos la librería desde aquí
  2. Descomprimimos únicamente la carpeta Excel
  3. Abrimos el archivo Excel/read.php y modificamos la línea “require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;” por “require_once ‘oleread.inc’;
  4. 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:

  1. Fatal error: Maximum execution time of 60 seconds exceeded: Fácilmente solucianable añadiendo set_time_limit (0) al principio del archivo example.php
  2. 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.
Compártelo!! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Meneame
  • BarraPunto
  • Technorati
  • Google Bookmarks
  • Facebook
  • LinkedIn
  • del.icio.us
  • Digg
  • Reddit
  • Live-MSN
  • MySpace
  • TwitThis
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

3 Comments on “ Manipular archivos Excel con PHP ”

  • alex
    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

  • Manel Pérez Mata
    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 ;)

  • luciano
    August 19th, 2009 18:09

    El archivo de excel que viene en el phpexcelreader.zip esta corrupto. Cambia el archivo excel y funciona
    Saludos

Leave a Reply