Lenguaje PHP

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.

Nota Importante
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
Usar la Librería PHPSpreadsheet
La Librería PHPExcel ya no tiene soporte por parte de los autores, se recomienda usar PHPSpreadsheet una librería muy potente para manejar ficheros tipo Excel con PHP.
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

Leer archivo Excel con PHP
Leer archivo Excel con PHP

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.

Estructura de PHPExcel
Estructura de PHPExcel

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";
Leer archivo excel con PHPExcel
Leer archivo excel con PHPExcel

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.

Visualizar contenido de excel con PHP
Visualizar contenido de excel con PHP

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.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

19 comentarios

  1. 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.

  2. 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

  3. Buenas tardes,
    Funciona bien en el servidor local, pero cuando se sube al servidor remoto no muestra los datos del excel.
    Sabes por que??

  4. 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.

  5. 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

  6. 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

  7. 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..!!

  8. 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

  9. 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.

  10. 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

  11. 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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba