Comunidad de diseño web y desarrollo en internet online

Abrir y leer archivos Excel con PHP

En este tip explicaré cómo leer un archivo de Excel (.xls) con PHP. Básicamente hay una librería libre llamada PHP-ExcelReader que lo hace.

Es bien simple de usar:

Paso 1.

Descargar el ZIP de aquí

Paso 2.

Descomprimir en una carpeta del servidor (entiéndase del servidor Apache)

Paso 3.

El ZIP incluye un ejemplo práctico, así que sólo bastará con echarlo un vistazo porque no es mucho lo que hay que hacer para entenderlo, aquí lo muestro:

Paso 3.1.

Incluir la librería

Código :

require_once 'Excel/reader.php';

Paso 3.2.

Crear una instancia de la clase

Código :

$data = new Spreadsheet_Excel_Reader();

Paso 3.3.

Definir codificación

Código :

$data->setOutputEncoding('CP1251');

Paso 3.4.

Leer el archivo XLS

Código :

$data->read('jxlrwtest.xls');

Paso 3.5.

La siguiente línea debería ser opcional porque inician el reporte de errores con el valor por defecto del php.ini. Si no entienden, no importa.

Código :

error_reporting(E_ALL ^ E_NOTICE);

Paso 3.6.

Leer los campos. Acá si vamos con ejemplos prácticos basados en el xls que viene de ejemplo.

Paso 3.6.1.

Leer la primera celda de la primera pestaña, o sea, la celda A1, esa que dice Java Excel API Modify Test

Código :

echo $data->sheets[0]['cells'][1][1];

Con esto ya es evidente que los índices de las celdas comienzan en 1.

Paso 3.6.2.

Leer la celda A3: Labels

Código :

echo $data->sheets[0]['cells'][3][1];

Acá se nota que el orden de coordenadas es [fila][columna].

Paso 3.6.3.

Recorrer todas las pestañas

Código :

foreach($data->sheets as $x => $y){
   echo "$x = $y<br>";
}

Esto hará que la variable $y se muestre como Array, así que viene lo sgte.

Paso 3.6.4.

Leer el nombre de cada pestaña

Código :

foreach($data->sheets as $x => $y){
   echo "$x = {$data->boundsheets[$x]['name']}<br>";
}


Bien, creo que con eso bastará para lo básico, igual el ejemplo viene con más ejemplos.

No hace falta advertir sobre la lectura de las fechas. Para que sean parceadas correctamente será necesario que la celda en Excel tenga formato de Fecha, porque si no es así es posible que esta sea distorsionada, a veces por 1 día, a veces por unos cuantos años.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate