PhpSpreadsheet PHP: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

PhpSpreadsheet para PHP: guía completa con ejemplos

1. ¿Qué es y para qué sirve?

PhpSpreadsheet es una potente librería para PHP diseñada para leer, escribir y gestionar hojas de cálculo en formatos como Excel (XLSX, XLS), LibreOffice Calc (ODS), CSV, HTML y otros. Es la sucesora de la popular pero obsoleta librería PHPExcel, que dejó de actualizarse en 2017. PhpSpreadsheet está completamente reescrita siguiendo los estándares modernos de PHP (PSR-4, PSR-7, PSR-12) y soporta grandes volúmenes de datos, fórmulas complejas, estilos, gráficos y formato condicional.

¿Para qué sirve? En el desarrollo web, a menudo necesitas exportar datos de una base de datos a informes de Excel, importar tablas subidas por usuarios, generar facturas, listas de precios o documentos financieros. PhpSpreadsheet te permite hacerlo mediante código, sin necesidad de instalar suites ofimáticas en el servidor. Soporta más de 30 formatos de archivo, incluyendo XLSX, ODS, CSV, HTML, PDF (a través de librerías externas), y puede trabajar con fórmulas, formato condicional, celdas combinadas, imágenes y comentarios.

La librería está en constante desarrollo (más de 3000 estrellas en GitHub) y se utiliza en proyectos como Laravel Excel, PhpOffice Suite y muchos sistemas empresariales. Es ideal para generar informes, migrar datos, automatizar flujos de documentos e integrarse con sistemas CRM/ERP.

2. Instalación

PhpSpreadsheet se instala a través de Composer, el gestor de dependencias estándar de PHP. Asegúrate de tener PHP 7.4 o superior (se recomienda PHP 8.0+).

composer require phpoffice/phpspreadsheet

Después de la instalación, aparecerán la carpeta vendor y el archivo composer.json en tu proyecto. Para usar la librería, solo necesitas incluir el cargador automático:

require 'vendor/autoload.php';

Si usas un framework (Laravel, Symfony), la librería suele cargarse automáticamente a través de los service providers.

3. Inicio rápido — ejemplo mínimo funcional

Vamos a crear un script simple que genera un archivo de Excel con una tabla de datos y lo ofrece para descargar:

getActiveSheet();

// 2. Llenar las celdas
$sheet->setCellValue('A1', 'Nombre');
$sheet->setCellValue('B1', 'Email');
$sheet->setCellValue('A2', 'Juan Pérez');
$sheet->setCellValue('B2', 'juan@ejemplo.com');
$sheet->setCellValue('A3', 'María García');
$sheet->setCellValue('B3', 'maria@ejemplo.com');

// 3. Configurar las cabeceras para la descarga
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="usuarios.xlsx"');
header('Cache-Control: max-age=0');

// 4. Escribir el archivo en la salida
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;

Este código crea un archivo usuarios.xlsx con dos filas de datos. Puedes abrirlo en Excel o LibreOffice Calc.

4. Métodos, funciones y clases principales

4.1. Spreadsheet::__construct()

Firma: new Spreadsheet()

Qué hace: Crea un nuevo documento vacío con una hoja de trabajo predeterminada.

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
echo $sheet->getTitle(); // "W
    

Recommendations