¿Qué es PhpSpreadsheet y para qué sirve?
PhpSpreadsheet es una potente biblioteca de PHP para trabajar con hojas de cálculo. Permite leer, escribir y editar archivos en formatos CSV, XLS, XLSX, ODS y otros. A diferencia de las funciones integradas de PHP (por ejemplo, fgetcsv), PhpSpreadsheet ofrece un enfoque orientado a objetos, procesamiento automático de codificaciones, soporte para estilos, fórmulas y grandes volúmenes de datos. La biblioteca es ideal para importar/exportar datos desde formularios web, generar informes, migrar entre bases de datos e integrarse con Excel/Google Sheets.
Instalación
La instalación se realiza a través de Composer:
composer require phpoffice/phpspreadsheetDespués de la instalación, incluya la carga automática:
require 'vendor/autoload.php';Funciones principales
- Lectura de CSV — carga de un archivo en un objeto Spreadsheet con detección automática del delimitador.
- Escritura de CSV — creación y guardado de un archivo con configuración de delimitador, comillas y BOM.
- Trabajo con hojas — creación, eliminación, renombrado y copia de hojas.
- Formateo — estilos de celdas (fuentes, colores, bordes, alineación).
- Fórmulas y funciones — soporte para SUM, AVERAGE, IF y otras.
- Procesamiento de grandes datos — escritura en flujo a través de Xlsx Writer para reducir el consumo de memoria.
Ejemplo de código: lectura y escritura de CSV
Lectura de un archivo CSV y visualización de datos:
use PhpOffice\\PhpSpreadsheet\\IOFactory;
$inputFileName = './data.csv';$spreadsheet = IOFactory::load($inputFileName);$worksheet = $spreadsheet->getActiveSheet();$data = $worksheet->toArray();
foreach ($data as $row) { echo implode(', ', $row) . "";}Escritura de datos en CSV:
use PhpOffice\\PhpSpreadsheet\\Spreadsheet;use PhpOffice\\PhpSpreadsheet\\Writer\\Csv;
$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Nombre');$sheet->setCellValue('B1', 'Email');$sheet->setCellValue('A2', 'Iván');$sheet->setCellValue('B2', 'ivan@example.com');
$writer = new Csv($spreadsheet);$writer->setDelimiter(';');$writer->setEnclosure('"');$writer->save('./output.csv');Cuándo usarlo
Se recomienda PhpSpreadsheet en los siguientes casos:
- Se necesita soporte para múltiples formatos (CSV, XLSX, ODS) en un mismo proyecto.
- Se requiere un formateo preciso (colores, fuentes, combinación de celdas).
- Es necesario trabajar con fórmulas o grandes conjuntos de datos (más de 10 000 filas).
- Se prefiere un estilo POO y no se desea escribir analizadores de bajo nivel.
Para tareas simples (por ejemplo, leer un solo CSV con una estructura conocida) se pueden utilizar las funciones integradas de PHP. Pero si el proyecto crece y requiere flexibilidad, PhpSpreadsheet se convertirá en una herramienta indispensable.
```