Leer archivo Excel con PHP: Descargar ejemplo
Leer archivo Excel con PHP. En este artículo veremos la forma de leer un fichero Excel con extensión (.xlxs). Sin embargo, para lograr tal resultado usaremos librerías externas como el PHPExcel disponible para descarga desde su repositorio oficial.
La última versión de PHPExcel, 1.8.1, se lanzó en 2015. El proyecto quedó oficialmente obsoleto en 2017 y se archivó permanentemente en 2019.
– Ver artículos con PHPSpreadsheet
– Ver artículos con PHPSpreadsheet
– Importar ficheros Excel
Los sistemas actuales tienen que ser muy flexibles y uno de estas características es de admitir importar información de un archivo de Excel para almacenarlo en la base de datos como registros en MySQL.
¿Qué es PHPExcel?
Cabe resaltar que PHPExcel
es una librería para importar y exportar hojas de cálculo (Archivos de Excel), que nos permite leer y escribir archivos.
¿Qué recursos necesito para leer un archivo Excel?
Necesitamos varios recursos y los detallaremos a continuación.
a) Lenguaje PHP.- Es el lenguaje base para este ejemplo.
b) Librería PHPExcel.- Nos permitirá leer archivos Excel.
c) Framework BootStrap.- Nos dará la interfaz profesional para este ejemplo
d) Fichero Excel.- Un fichero de ejemplo para poder leerlo con PHP
e) Lenguaje de marcas HTML.- Estructura de nuestro ejemplo usando HTML5
El componente principal a tener en cuenta es descargar la librería PHPExcel del repositorio oficial en Github.
Descargar repositorio PHPExcel: https://github.com/PHPOffice/PHPExcel
Leer archivo Excel con PHP
A continuación, veremos los procedimientos para implementar un sistema completo para poder leer ficheros Excel y que posteriormente pueda ser importado a MySQL como registros. Además, el fichero será con extensión (.xlsx).
Procedimiento del Sistema
El procedimiento consta de 5 pasos que debemos de implementar para lograr nuestro objetivo.
Primer paso: Declarar la librería PHPExcel
Lo primero es declarar la carpeta PHPExcel y debe estar ubicada dentro de nuestro proyecto, veamos un ejemplo.
Segundo paso: Declarar librería externas BootStrap
Además, también podemos incluir librerías externas de BootStrap.
Tercer paso: Incluir la librería dentro del Fichero
Usando la función require_once
podemos llamar a la librería para que pueda leer nuestros ficheros Excel.
// Debemos incluir la libreria require_once 'PHPExcel/Classes/PHPExcel.php';
Cuarto paso: Variable contenedor del archivo Excel
Se usara la variable llamada «$archivo
» que contendrá el nombre de un fichero Excel con su respectiva extensión. Sin embargo, también se podría usar un formulario HTML para cargar un fichero y poder asignarlo a la variable «$archivo
«.
$archivo = "ListaPersonal.xlsx";
Quinto paso: Visualizar la información del Excel
Para este paso nos podemos apoyar en el ciclo FOR para devolver los registros de nuestro Excel. Por lo tanto, PHPExcel leerá cada celda de nuestro archivo Excel y los devolverá en el navegador.
Si observamos, «$sheet->getCell("A".$row)->getValue();
«, está llamando a la celda «A» y así sucesivamente hasta la celda «D«. Sin embargo, como es un ciclo devolverá todos los resultados del Excel.
<?php $num=0; for ($row = 2; $row <= $highestRow; $row++){ $num++;?> <tr> <th scope='row'><?php echo $num;?></th> <td><?php echo $sheet->getCell("A".$row)->getValue();?></td> <td><?php echo $sheet->getCell("B".$row)->getValue();?></td> <td><?php echo $sheet->getCell("C".$row)->getValue();?></td> <td><?php echo $sheet->getCell("D".$row)->getValue();?></td> </tr> <?php } ?>
Mostrando el ejemplo completo: Leer archivo Excel con PHP
En este punto vemos el código completo para leer ficheros Excel
<body> <div class="container"> <h2>Ejemplo: Leer Archivos Excel con PHP</h2> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">Resultados de archivo de Excel.</h3> </div> <div class="panel-body"> <div class="col-lg-12"> <?php require_once 'PHPExcel/Classes/PHPExcel.php'; $archivo = "ListaPersonal.xlsx"; $inputFileType = PHPExcel_IOFactory::identify($archivo); $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $objReader->load($archivo); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); ?> <table class="table table-bordered"> <thead> <tr> <th>#</th> <th>Nombres</th> <th>Apellidos</th> <th>Cargo</th> <th>Sede</th> </tr> </thead> <tbody> <?php $num=0; for ($row = 2; $row <= $highestRow; $row++){ $num++;?> <tr> <th scope='row'><?php echo $num;?></th> <td><?php echo $sheet->getCell("A".$row)->getValue();?></td> <td><?php echo $sheet->getCell("B".$row)->getValue();?></td> <td><?php echo $sheet->getCell("C".$row)->getValue();?></td> <td><?php echo $sheet->getCell("D".$row)->getValue();?></td> </tr> <?php } ?> </tbody> </table> </div> </div> </div> </body>
Resultado en el navegador
La siguiente imagen muestra la ejecución del script PHP en el navegador web.
CONCLUSIÓN: Leer archivo Excel con PHP
En comentarios me solicitaron con leer archivos Excel usando PHP. Justamente, aquí les mostré el ejercicio completo para leer ficheros Excel.
Como han podido apreciar la implementación de lectura es sencilla y esperando que esta breve explicación les ayude en sus proyectos web.
Nota: El archivo de prueba, les dejare en el paquete comprimido que tiene todos los recursos para este ejemplo.
Descargar Ejemplo
Les dejare un enlace para que descarguen el código completo del presente artículo.
Hola buen día excelente aporte, de pronto me puedes compartir algo relacionado, hacer desde una consulta formulario HTML con fecha de inicio y fecha fin, ejecutar un script PHP con conexion a base de datos SQL Server y traer una serie de campos a Excel, uno de los campos o columna debe ser correo electrónico, para que al final de cada fila, me genere con los campos un cuerpo de envío HTML, se requiere enviar por correo desde PHP con una cuenta de office365….. Quedo atento.
Hola, me gustaría saber como puedo cambiar de hoja de libro de Excel automáticamente para leerla según la fecha actual, por ejemplo si hoy es 16 de Mayo, quiero que me lea la hoja 16, espero que puedas ayudarme, he intentado un par de cosas y no me funciona
Buenas tardes,
Funciona bien en el servidor local, pero cuando se sube al servidor remoto no muestra los datos del excel.
Sabes por que??
Como solucionar que se muestren acentos y ñ ???
En el repositorio dice que esta PHPReae no cuenta ya con soporte… o sea, no tiene garantia de uso.
PHPExcel – DEAD
PHPExcel last version, 1.8.1, was released in 2015. The project was officially deprecated in 2017 and permanently archived in 2019.
The project has not be maintained for years and must not be used anymore. All users must migrate to its direct successor PhpSpreadsheet, or another alternative.
Hola Fabian, tienes mucha razón es por eso que se recomienda el uso de la libreria PHPSpreadsheet
https://www.baulphp.com/importar-archivo-excel-a-mysql-con-phpspreadsheet/
https://www.baulphp.com/?s=PHPSpreadsheet
me tira este error alguien sabe como solucionarlo
Fatal error: Array and string offset access syntax with curly braces is no longer supported in C:\xampp\htdocs\Desarrollo\Leer-Archivo-Excel-usando-PHP\PHPExcel\Classes\PHPExcel\Shared\String.php on line 529
Fatal error: Array and string offset access syntax with curly braces is no longer supported in C:\xampp\htdocs\Desarrollo\Leer-Archivo-Excel-usando-PHP\PHPExcel\Classes\PHPExcel\Shared\String.php on line 529
Hola Andres
Le sugiero este artículo que escribo sobre el tema.
https://www.baulphp.com/read-file-excel-use-phpspreadsheet
Saludos
Se que la publicacion tiene tiempo y es por eso que le estare muy agradecido a la persona que me pueda contesar….
Se podra hacer algo tipo CRUD a esa pagina de EXCEL???? osea que uno pueda agregarle mas informacion a la pagina y a otras paginas como si fuera una base de datos en donde las paginas seria una especie de tablas y las celdas unos campos..!!!!
Que se pueda agregar, eliminar, modificar y mostrar la informacio como si se tratara de una base de datos pero la informacion guardada, modificada y leida se a de esa pagina de EXCEL….
Si pudieran dar un ejemplo seria fenomenal…. Saludos desde Venezuela..!!
Creo que lo más práctico sería almacenar en una base de datos y generar un archivo de excel.
Como hago para que me traiga solo el valor, no la formula por que en el que estoy asiendo me trae la fórmula
Hola me sale este error, Notice: Trying to access array offset on value of type int in D:\xampp\htdocs\PHPExcel\PHPExcel\Classes\PHPExcel\Cell\DefaultValueBinder.php on line 82
CAMBIALO POOR:
} elseif (0 === strpos($pValue, ‘=’) && strlen($pValue) > 1) {
buen dia , disculpe tendria un ejemplo que te permita leer varias hojas de calculo de un solo archivo de excel ? se podria.
Buen día Nestor. consulta. Tienes algún ejemplo para escribir en un archivo de excel ya cargado en el servidor, es decir solo editar el archivo de excel.
Hola capaz este no se a el medio pero necesito ayuda, yo tengo una pagina web donde le cargo un numero y me tira en otra solapa un archivo .php, mi pregunta es la siguiente, saben si existe la posibilidad si cargando ese numero en excel me devuelve el o los valores del .php que uno necesite? no se si fui claro, espero me puedan ayudar
Hola. Excelente tu ayuda. Tengo una pregunta: en mi excel hay en la columna A una fecha, con el formato 31/10/1961. Pero el valor que obtengo en $sheet->getCell(“A”.$row)->getValue() es: 22585
¿Porque puede ser? ¿como se puede obtener el valor de la celda sin que PHPExcle haga ningún cálculo extra?
Gracias!
22585 es el valor de la fecha en un entorno excel equivalente a 31/10/1961.