Sunwer

El Problema

Yo, como muchos, estuve usando PHPExcel como librería dentro de mi proyecto para generar documentos excel a partir de los datos obtenidos en una web. Todo funcionaba perfecto, hasta que se tuvo que actualizar a PHP 8.0 el servidor, la función dejó de generar los archivos, mostrando muchos errores. Era lo normal, la librería ya había sido abandonada desde 2015, por lo que nunca más recibió soporte.

En varios foros te recomendaban cambiar de librería por PHPSpreadSheet, algo que realmente es recomendable. Sin embargo, yo fui un necio, y quería seguir utilizando la librería que ya tenía configurada, no quería tener que cambiar todo (que al final, posiblemente habría sido más fácil). Si eres como yo, y deseas seguir utilizando PHPExcel, llegaste al lugar correcto, pues te explicaré cómo solucionarlo.

Los Errores

Pero, ¿Qué era lo que no permitía a la librería funcionar correctamente? El error más común que aparecía era el siguiente:


Fatal error: Array and string offset access syntax with curly braces is no longer supported in ..

Esto ocurría, porque en varias partes del código de la librería, se hacía uso de las llaves para denotar un elemento dentro de algún array. Por lo que podías ver cosas como esta:  Array{0}

Esto ya no es compatible con versiones actuales de PHP, (y no es convencional en otros lenguajes), por lo que se debían cambiar estos casos por paréntesis cuadrados y tenerlos de esta manera: Array[0].

De igual modo había otros warnings sobre algunas variables como $pValue, pero no afectan el funcionamiento.

 

La Solución

Como ya dije anteriormente, la solución es cambiar todos los  {x} por  [x] donde fuera necesario. Los mismos errores te guiarán de dónde es necesario hacer esto, aunque si son muchos archivos donde hacer éste cambio.

Para ahorrar un poco el trabajo, tengo preparada la librería con los cambios pertinentes, lista para descargar, aunque de una manera extraña, con una persona sirvieron los cambios, y con otra le indicaba que aún faltaban más por hacer (principalmente en la carpeta Excel5), así que si es tu caso, ya sabes qué debes hacer.