Hoy vamos a ver como lograr leer un archivo Excel, directamente desde PHP.
Como siempre, lo primero: Implementos necesarios:
Procedimiento:
1.- Lo primero que haremos será asegurarnos que tenemos un archivo Excel con datos. En nuestro caso, tenemos el siguiente:
Una estructura básica con 2 columnas y 6 filas incluyendo el encabezado. Este archivo ahora lo cargaremos mediante un formulario y lo mostraremos en una tabla HTML.
2.- En nuestro editor Web, partiremos por crear un archivo llamado excel.php, y en el añadiremos un formulario, el cual contendrá un campo de archivo, que llamaremos archivo. Si tienen dudas de como realizar esta operación, les recomiendo revisar este tutorial donde hemos cubierto el proceso por completo. Al terminar debiéramos tener algo como esto:
Adicionalmente, debemos fijarnos que nuestro formulario que llame a la misma excel.php
3.- Ahora, vamos a añadir un poco de código. Justo antes del comienzo de nuestro formulario (es decir, antes de la etiqueta form…), añadiremos:
Con lo que acabamos de hacer, le estamos diciendo a nuestra página: “Si no se ha enviado el formulario, muestrelo, de lo contrario muestre… (lo que está dentro del else)”
4.- Ahora, dentro del else, haremos todo el proceso de lectura del archivo cargado y la muestra de datos por pantalla. Para eso primero descomprimimos la clases PHP Excel Reader que ya bajamos y debiéramos tener algunos archivos de ejemplo, un excel y un directorio llamado Excel el que contiene la clase en su interior: un archivo reader.php y un archivo oleread.inc, este último debemos renombrarlo a OLERead.php (respetando mayúsculas y minúsculas) para que lo tome bien.
5.- Luego, abrimos el archivo reader.php en nuestro editor Web y vamos a la línea 31, donde reemplazamos:
require_once ("Spreadsheet/Excel/Reader/OLERead.php");
por esto:
require_once "OLERead.php";
6.- A continuación, dentro de nuestro else que dejamos, debemos incluir el siguiente código. La explicación, como siempre, en negrita, cursiva y entre /* y */:
/* Cuando cargamos un archivo mediante un formulario, se mueve a una ubicación temporal dada por el servidor y desde ahí debemos moverlo manualmente a donde queremos que quede. Si no lo movemos, el archivo se eliminará al terminar la ejecución del archivo php. El movimiento lo hacemos mediante la función move uploaded file la cual utiliza como parámetros: el array del archivo, el nombre del campo, la propiedad de nombre temporal dada y luego el nombre y la ruta con el que lo guardaremos. Si solo incluimos el nombre en la última, se guardará en el mismo directorio donde está el archivo php que estamos ejecutando */ /* Luego, mediante un include, llamamos a la clase PHP Excel Reader, mediante el archivo reader.php */ include("Excel/reader.php"); /* Creamos un nuevo objeto de tipo Spreadsheet_Excel_Reader que corresponde a la clase que incluimos recién */ $datos = new Spreadsheet_Excel_Reader(); /* Le decimos al objeto que "lea" el archivo cargado. Esto extraerá toda la información correspondiente al archivo y la almacenará en el objeto */ $datos->read($nombre); /* Ahora, definimos una variable llamada celdas, en la cual guardaremos todos los datos de las celdas del archivo excel leído. Esto podemos hacerlo, llamando al método sheets sobre nuestro objeto datos, el cual contenía la información del archivo excel, e indicandole mediante los parámetros que nos pase los datos de la hoja 0 (primera hoja del archivo) y que queremos la información de sus celdas (cells) */ $celdas = $datos->sheets[0]['cells']; /* Luego, mediante un echo, empezamos a construir una tabla en HTML */ echo "
".$celdas[$i][1]." | ".$celdas[$i][2]." |
7.- Veamos nuestro script en acción:
Como pueden ver, el procedimiento es bastante fácil y rápido. La clases PHP Excel Reader es muy simple de utilizar y bastante poderosa en su alcance, por lo que les recomendamos explorar a fondo y ver todos los beneficios que nos puede presentar.
Como siempre, recuerden que este tutorial ha sido:
Cualquier duda o comentario que puedan tener, los invitamos a dejarnos unas líneas en el área habilitada a continuación.
Esperamos que este tutorial haya sido de utilidad para Uds.
Muchas gracias por leer y será hasta una próxima oportunidad.
5:20:46 pm
pregunta de donde sale la variable nombre y si es posible si puedes pegar todo el codigo de este ejemplo que intento pero no me despliega
11:10:03 am
estos codigos estan la machera me ahn servido un resto y no saben cuanto tiempo los he estado buscando gracias por este gran aoprte y ojala sigan publicando cosas asi de interesantes
5:14:57 pm
Andres Aqui tienes el codigo con la solucion a tu problema.
<html>
<head>
<title>excel</title>
<?php
if(!$_POST)
{
?>
<body>
<form method=”POST” action=”excel.php” enctype=”multipart/form=data”>
Seleccionar archivo:<input type=”text” name=”archivo”>
<input type=”button” value=”Examinar”>
<br>
<input type=”button” value=”Leer archivo”>
</form>
</body>
<?php
}
else
{
include(“Excel/reader.php”);
$datos=new Spreadsheet_Excel_Reader();
$datos->read($nombre);
$celdas=$datos->sheets[0][‘cells’];
echo “<table width=’300′ align=’center’>”;
$i=1;
while($celdas[$i][1]!=””)
{
echo “<tr><td width=’150′ align=’center’>”.$celdas[$i][1].”</td><td width=’150′
align=’center’>”.$celdas[$i][2].”</td></tr>”;
$i++;
}
echo”</table>”;
}
?>
</head>
</html>
5:32:05 pm
claro en el codigo si, al momento de examinar, no me muestra …
1:55:00 pm
Consigo subir el archivo, consigo leerlo, pero mi problema es al leer una celda que tiene fechas con Horas, ya que si la celda contiene 25/06/2010 09:17:00
Al leer el dato PHP Reader devuelve 25/06/2010 04:17:00. O sea 5 horas menos
5:41:33 pm
Hola.. muy buen aporte.. tengo una duda.. no hay forma en que puedas subir el archivo ya completo y 100% funcionando? muchas gracias nuevamente.. saludos
11:41:28 pm
La explicacion im-pe-cable..soy nueva en esto de php y siguiendo los pasitos funciona perfecto!!! 1000 gracias….Me ha sido utilisimo..!!!
un abrazo …Gabriela
12:24:36 am
Como ya agradecí anteriormente.. ahora tengo un problemita… Tarda muchisimo en cargar el archivo …dice algo asi:
Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\wordpress\wp-content\themes\blue-rooster\page.php on line 29
RANKING
1
x
2
A
3
A
Alguna configuracion para cambiar???
1000 gracias Xabadu..!!
Gabriela
10:42:14 am
a mi me funciona perfecto. Pero como hago para hacer lo mismo con un xlsx?
11:25:12 am
me sale The filename is not readable, cuando el archivo de excel tiene mas de 10080 filas, qu puedo hacer