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
También en la biblioteca
Limitación de tasa en C++: bibliotecas y herramientas para control de solicitudes
Validación de datos en Go: revisión de bibliotecas y enfoques
Tower para Rust: guía completa con ejemplos
Procesamiento de Markdown en Rust: bibliotecas, analizadores y herramientas