Crear Documentos Excel con PHP y PHPSpreadSheet


PHPSpreadSheet es la nueva libreria para crear documentos Excel con PHP, PHPSpreadSheet sustituye lo que anteriormente fue PHPExcel. Parte de su sintaxis es igual que PHPExcel pero igual viene con muchos cambios sobre todo soporte para PHP 7 y PHP 8.

La mejor forma de descargar PHPSpreadSheet es usando composer.

composer phpoffice/phpspreadsheet --prefer-source

Una vez que se descarguen las librerias con el composer, se va a crear una carpeta llamada “vendor” donde van a estar todos los archivos de las librerias descargadas con composer.

Dentro hay un archivo vendor/autoload.php que ese archivo lo vamos a incluir en nuestros scripts php para recargar todas las clases instaladas con el composer.

Primer Ejemplo

A continuacion el primer ejemplo.

Se incluyen comentarios para mejorar el entendimiento del script o codigo.

<?php
// Se incluyen las librerias
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// Se crea una instancia de PHPSpreadSheet para manejar las diferentes hojas
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet(); // Se obtiene la priema hoja y aqui empezamos a agregar datos
$sheet->setCellValue('A1', 'Hola Mundo !'); // Con la funcion setCellValue se agrega la posicion de la celda y el valor
$sheet->setCellValue('A2', 'Hola Mundo !'); // Posicion A2
$sheet->setCellValue('A3', 'Hola Mundo !'); // Posicion A3

$writer = new Xlsx($spreadsheet); // Creamos un Writer para escribir el archivo
$writer->save('hola.xlsx'); //  Guardamos el archivo
?>

Si todo sale bien , que asi deberia ser.

Se va a crear un archivo llamado hola.xlsx con los datos que agregamos en el excel en las columnas a1 a2 y a3.

Descargar

A continuacion pueden descargar el codigo de ejemplo incluyendo las librerias phpspreadsheet y sus dependencias.

Link: https://drive.google.com/file/d/1wclnQamy21bEcRs2NSdgrGQilcKToK-4/view

Si tienen dudas y sugerencias favor de enviarlas.

Leave a comment