Leer un archivo Excel desde PHP

Últimamente me ha tocado exportar e importar archivos Excel usando PHP. En este post explicaré cómo lo hice usando XAMPP y los pasos que seguí.

1. Instalando las librerías necesarias

Para poder leer un archivo Excel vamos a necesitar dos librerías:

La librería Spreadsheet_Excel_Writer es una extensión de PHP que tendremos que instalar usando PEAR. Abriremos una consola y escribiremos:

   pear install Spreadsheet_Excel_Writer

Para instalar la librería Spreadsheet_Excel_Reader iremos a su página principal, descargaremos el paquete y lo descomprimiremos.

Dentro del archivo veremos una carpeta llamada Excel y dentro de ella dos archivos: oleread.inc y reader.php. Copiaremos el archivo reader.php y lo pegaremos en la carpeta “directorio_de_php/pear/Spreadsheet/Excel/”. Luego copiaremos el archivo oleread.inc y lo pegaremos en la carpeta “directorio_de_php/pear/Spreadsheet/Excel/Reader”. Una vez hecho esto, cambiaremos el nombre del archivo oleread.inc a oleread.php.

2. Cargando el archivo Excel en nuestro PHP

	//Cargamos la librería
	require_once 'Spreadsheet/Excel/reader.php';

	//Creamos el objeto y cargamos el fichero Excel
	$data = new Spreadsheet_Excel_Reader();
	$data->read(ruta_del_archivo_excel);

3. Códigos de ejemplo

A continuación os muestro algunos ejemplos de las funciones más sencillas que podemos usar para obtener datos del archivo Excel.

//Obtenemos un libro del Excel
$sheet = $data->sheets[numero_de_libro];

//Obtenemos las celdas
$cells = $data->sheets[0]['cells'];

//Obtenemos una fila determinada
$row = $data->sheets[0]['cells'][numero_de_fila];

//Obtenemos una celda concreta
$data->sheets[0]['cells'][fila][columna];

//Obtenemos el número de filas y columnas del Excel
$nrows = $data->sheets[0]['numRows'];
$ncols = $data->sheets[0]['numCols'];

4. Conclusión

Personalmente, si quieres tratar los datos de un Excel frente a una base de datos, mi recomendación es que importes los datos del Excel a una tabla intermedia en una BD y posteriormente aproveches la potencia de SQL para hacer operaciones con esos datos.