Read file Excel PHPSpreadSheet (Ejemplo completo)
Leer archivo de Excel con PHP con PHPSpreadSheet
Read file Excel use PHPSpreadSheet. Vamos a ver 2 ejemplos trabajar con Excel y PHP vamos a usar un documento de Excel (XLSX) preparado para poder leerlo usando la librería PHPSpreadSheet y PHP.
Abrir archivo de Excel con PHP
Para leer un archivo excel primero necesitamos leer el archivo almacenado en el disco. Por lo tanto, debemos de llamar a IOFactory::load("ruta_del_archivo.xlsx")
Para este artículo y ejemplo vamos a trabajar con un archivo con extensión xlsx, porque es muy recomendado.
En caso de probar y actualizar el script, recuerda instalar las dependencias con
composer install
.
Obtener contenido de fichero Excel XLSX con PHP
Hojas del documento de Excel
Un libro de Excel puede tener múltiples hojas, por eso es que a veces a los documentos se les dice “libros”.
El número de hojas en un libro puede ser determinado con la función $documento->getSheetCount()
que devuelve un número entero.
$hojaActual = $documento->getSheet($indice);
La numeración va comenzando en 0. Sin embargo, la hoja con índice 0 vendría a ser la primer hoja.
Read file Excel PHPSpreadSheet
a) Modo lectura array
Si deseamos leer un archivo de Excel podemos aplicar este ejemplo que devuelve la información en Array PHP para poder darle un uso adecuado.
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $inputFileType = 'Xlsx'; $inputFileName = './Ejemplo/prueba.xlsx'; /** Create a new Reader of the type defined in $inputFileType **/ $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); /** Advise the Reader that we only want to load cell data **/ $reader->setReadDataOnly(true); $worksheetData = $reader->listWorksheetInfo($inputFileName); foreach ($worksheetData as $worksheet) { $sheetName = $worksheet['worksheetName']; echo "<h4>$sheetName</h4>"; /** Load $inputFileName to a Spreadsheet Object **/ $reader->setLoadSheetsOnly($sheetName); $spreadsheet = $reader->load($inputFileName); $worksheet = $spreadsheet->getActiveSheet(); $arr = $worksheet->toArray(); echo '<pre>',print_r($arr,1),'</pre>'; } ?>
Salida en el navegador
Si ejecutamos el fichero en un servidor web, a través de un navegador el resultado sería el siguiente. Para este ejemplo hemos usado un archivo llamado prueba.xlsx para que muestre el contenido del archivo.
Hoja01 Array ( [0] => Array ( [0] => Mouse Inalambrico [1] => Mouse HP 200 Inalámbrico Negro [2] => 300 ) [1] => Array ( [0] => Monitor HY [1] => Conectar la salida DVI de tu ordenador [2] => 250 ) [2] => Array ( [0] => Teclado HB [1] => Multifuncional e idioma español [2] => 800 ) [3] => Array ( [0] => Cargador SONY [1] => Transfiere y carga dispositivos con los cables micro USB [2] => 450 ) [4] => Array ( [0] => Camara web [1] => Cámaras Web HD con video nítido a 720p u 820p [2] => 650 ) )
b) Usando Foreach PHP
En el ejemplo anterior hemos logrado mostrar el contenido del archivo Excel su contenido a través de la función PRINT_R del lenguaje PHP.
Ahora, para darle una estructura de tabla usaremos el ciclo FOREACH para poder iterar las celdas de la tabla HTML.
Además, podemos usar la librería BootStrap para darle estilos a los resultados en el navegador.
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("./Ejemplo/prueba.xlsx"); $worksheet = $spreadsheet->getActiveSheet(); echo '<table class="table table-striped"><tbody>' . PHP_EOL; foreach ($worksheet->getRowIterator() as $row) { echo '<tr>' . PHP_EOL; $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(FALSE); // Esto recorre todas las celdas, // incluso si no se establece un valor de celda. // De forma predeterminada, solo las celdas que tienen un valor // se repetirá en la iteración. foreach ($cellIterator as $cell) { echo '<td>' . $cell->getValue() . '</td>' . PHP_EOL; } echo '</tr>' . PHP_EOL; } echo '</tbody></table>' . PHP_EOL; ?>
Si ejecutamos el script anterior, en el navegador mostrara una tabla HTML, similar a lo que tenemos en el fichero de Excel.
Ya queda por parte de nosotros darle estilos CSS a los resultados en el navegador web.
Mouse Inalambrico | Mouse HP 200 Inalámbrico Negro | 300 |
Monitor HY | Conectar la salida DVI de tu ordenador | 250 |
Teclado HB | Multifuncional e idioma español | 800 |
Cargador SONY | Transfiere y carga dispositivos con los cables micro USB | 450 |
Camara web | Cámaras Web HD con video nítido a 720p u 820p | 650 |
Conclusión
En este corto articulo hemos aprendido a leer un fichero Excel a través de la librería PHPSpreadSheet que es muy recomendado para trabajar con ficheros Excel, recordemos que esta librería tiene soporte constante y una muy buena documentación que nos da la posibilidad de no quedarnos atascados en un futuro.
Hemos visto dos ejemplos tanto en resultados ARRAY y usando el ciclo FOREACH para iterar las celdas y mostrarlo en una tabla HTML.
La curva de aprendizaje para la implementación de esta librería es muy baja lo que lo convierte en el preferido entre los programadores.
Por último, se podría usar para ver un demo de la información antes de importar a MySQL. Además, pueden dar un sin fin de usos.
Espero que la explicación les ayude para que puedan implementar en sus proyectos web.
Descarga