Professional Documents
Culture Documents
Leer datos de un archivo Excel desde una aplicacin puede resultar muy til en entornos profesionales
donde los distintos departamentos de una organizacin no tienen por qu tener conocimientos sobre el
manejo de bases de datos. Herramientas que realizan acciones sobre datos de Excel estn a la orden del
da y ayudan a automatizar procesos que de otro modo tendran un coste muy elevado en tiempo.
Para PHP, la forma ms cmoda de leer archivos Excel es PHP-ExcelReader , una clase capaz de leer
datos de archivos xls sin utilizar objetos COM, lo que la hace independiente de la plataforma en la que
est el servidor de la aplicacin. Una vez bajada e includa su librera entre las de la aplicacin, se usa
de la siguiente forma:
Con esto, los datos de archivo_excel.xls estarn cargados en un array de PHP de 2 dimensiones:
$excel_reader->sheets[x][y];
El ndice x es el nmero de hoja del documento, mientras que y , por su parte, puede tomar distintos
valores:
Veamos un pequeo ejemplo de su uso. Leemos el fichero y mostramos en forma de tabla los datos
que hemos obtenido.
<?php
require_once 'Excel/reader.php';
$data->setOutputEncoding('CP1251');
$data->read('fichero.xls');
echo("<table>");
echo("<tr>");
echo("<td>".$data->sheets[0]['cells'][$i][$j] ."</td>");
echo("</tr>");
}
echo("</table>");
echo("</tr>");
}
echo("</table>");
1 <?php
2
3 require_once 'Excel/reader.php';
4
5 $data = new Spreadsheet_Excel_Reader();
6 $data->setOutputEncoding('CP1251');
7 $data->read('fichero.xls');
8 echo("<table>");
9 for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
10 echo("<tr>");
11 for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
12 echo("<td>".$data->sheets[0]['cells'][$i][$j] ."</td>");
13 }
14 echo("</tr>");
15
16 }
17 echo("</table>");
A tener en cuenta
La variable $i controla las filas y la variable $j las columnas. Como generalmente los ttulos de las
columnas aparecen en la primera fila, si queremos obviarla tendremos que comenzar el for con
$i=2 en lugar de con $i=1. De todas maneras, todo esto depender mucho del fichero Excel del
que partamos.
$celdaB3=$data->sheets[0]['cells'][2
1 $celdaB3=$data->sheets[0]['cells'][2][3];
Tambin cabe destacar que el objeto dispone de los campos numRows y numCols para almacenar
el nmero total de filas y columnas respectivamente.
Si el archivo Excel cuenta con ms de una hoja de clculo, podemos acceder a cada una de ellas
variando el ndice de sheets:
$celdaB3=$data->sheets[1]['cells'][2][3];//Celda B3 de la hoja 1
$celdaB3=$data->sheets[1]['cells'][2][3];//Celda B3 de la hoja 2
$celdaB3=$data->sheets[2]['cells'][2][3];//Celda B3 de la hoja 3
$celdaB3=$data->sheets[1]['cells'][2][3];//Celda B3 d
$celdaB3=$data->sheets[1]['cells'][2][3];//Celda B3 d
$celdaB3=$data->sheets[2]['cells'][2][3];//Celda B3 d
1 $celdaB3=$data->sheets[1]['cells'][2][3];//Celda B3 de la hoja 1
2 $celdaB3=$data->sheets[1]['cells'][2][3];//Celda B3 de la hoja 2
3 $celdaB3=$data->sheets[2]['cells'][2][3];//Celda B3 de la hoja 3
require_once 'Excel/reader.php
1 <?php
2
3 require_once 'Excel/reader.php';
4
5 $data = new Spreadsheet_Excel_Reader();
6 $data->setOutputEncoding('CP1251');
7 $data->read('fichero.xls');
8
9 //Establecemos las cabeceras para un archivo xls
1 header('Content-type: application/vnd.ms-excel');
0 header("Content-Disposition: attachment; filename=excelenphp.xls");
1 header("Pragma: no-cache");
1 header("Expires: 0");
1
2 //Y mostramos los datos en forma de tabla
1 echo("<table>");
3 for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
1 echo("<tr>");
4
1
5
1
6
1
7
1
8 for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
1 echo("<td>".$data->sheets[0]['cells'][$i][$j] ."</td>");
9 }
2 echo("</tr>");
0
2 }
1 echo("</table>");
2
2
2
3
2
4
2
5
Ejemplo de cdigo para leer una hoja de
Microsoft Excel con PHPExcel
#php
PHPExcel permite trabajar con ficheros Excel .XLS y .XLSX desde php, con las versiones Microsoft
Excel 97 / Excel 2000 / Excel 2002 (XP) / Excel 2003 / Excel 2007.
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("fichero.xlsx");
$objWorksheet = $objPHPExcel->setActiveSheetIndex(1);
//objWorksheet = $objPHPExcel->getActiveSheet();