Question:
Date: 10-05-2021 20:05:57
(In Spanish)
Este es mi código:
Agradezco su ayuda
Votes: 1 - Answers: 5 - Views: 11 Share on: Google Facebook Twitter LinkedIn Link
Problema con la lectura de la libreria PhpSpreadsheet[Unresolved]
Estoy intentando leer un archivo excel con la librería PhpSpreadsheet pero al momento de hacer la prueba me sale el siguiente error: "No se encontró ningún lector para el tipo phpdcbd.tmp" "No atrapado".Este es mi código:
Agradezco su ayuda
if(is_array($_FILES['archivoexcel']) && count ($_FILES['archivoexcel'])>0){ //Llamando libreria del excel require_once 'vendor/autoload.php'; require_once 'conexion.php'; $tmpfname = $_FILES['archivoexcel']['tmp_name']; //crear excel para luego leerlo $leerexcel = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($tmpfname); //cargando excel $excelobj = $leerexcel -> load($tmpfname); //Cargar la hoja en la que se trabajo $hoja = $excelobj -> getSheet(0); $filas = $hoja->getHighestRow(); echo $filas; }
Votes: 1 - Answers: 5 - Views: 11 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 11-05-2021 08:50:24 Hola Jonathan:
La librería PHPExcel está obsoleta.
Prueba cambiarte a PHPSpreadhsheet.
Saludos! Votes: 1 - Link answer -
Date: 12-05-2021 06:15:29 Como bien menciona Mauro, PHPExcel está obsoleta, pero hay una herramienta de migración hacia PHPSpreadsheet (que, a propósito, es la siguiente versión de PHPExcel), esta aquí: https://github.com/PHPOffice/PhpSpreadsheet/blob/master/docs/topics/migration-from-PHPExcel.md Votes: 0 - Link answer
-
Date: 12-05-2021 13:17:31 Hola Jonathan Robayo, si, como bien comenta Mauro y Juan, la librería PHPExcel está obsoleta, por lo que ante un nuevo desarrollo es conveniente que utilices algunas alternativa.
Habiendo dicho esto, te cuento que he tenido que lidear con esta librería en servidores versión PHP 7.4.x y el único inconveniente que le encontre fue el error que reportas, que se resuelve relativamente fácil, debes remplazar las llaves { } por corchetes [ ] al momento de acceder a los elementos de los arrays
El error original es: Error: Array and string offset access syntax with curly braces is deprecated
Por ejemplo, para el error que reportas, en el archivo PHPExcel\Shared\String.php en la línea 526.
En dicha linea tienes la función utf16_decode, a continuación la función original y su remplazo directo
Remplazar:
public static function utf16_decode($str, $bom_be = true) { if (strlen($str) < 2) { return $str; } $c0 = ord($str{0}); $c1 = ord($str{1}); if ($c0 == 0xfe && $c1 == 0xff) { $str = substr($str, 2); } elseif ($c0 == 0xff && $c1 == 0xfe) { $str = substr($str, 2); $bom_be = false; } $len = strlen($str); $newstr = ''; for ($i=0; $i<$len; $i+=2) { if ($bom_be) { $val = ord($str{$i}) << 4; $val += ord($str{$i+1}); } else { $val = ord($str{$i+1}) << 4; $val += ord($str{$i}); } $newstr .= ($val == 0x228) ? "\n" : chr($val); } return $newstr; }
Por:
public static function utf16_decode($str, $bom_be = true) { if (strlen($str) < 2) { return $str; } $c0 = ord($str[0]); $c1 = ord($str[1]); if ($c0 == 0xfe && $c1 == 0xff) { $str = substr($str, 2); } elseif ($c0 == 0xff && $c1 == 0xfe) { $str = substr($str, 2); $bom_be = false; } $len = strlen($str); $newstr = ''; for ($i=0; $i<$len; $i+=2) { if ($bom_be) { $val = ord($str[$i]) << 4; $val += ord($str[$i+1]); } else { $val = ord($str[$i+1]) << 4; $val += ord($str[$i]); } $newstr .= ($val == 0x228) ? "\n" : chr($val); } return $newstr; }
Así debes hacer con todo, recuerda, debes cambiar los accesos de llaves { } por corchetes [ ]
Saludos y buen código! Votes: 2 - Link answer -
Date: 14-05-2021 20:56:50 Hola que tal.
Gracias por la ayuda.
Ya cambie a PhpSpreadsheet pero ahora me sale este error que no he podido corregir: "No se encontró ningún lector para el tipo phpdcbd.tmp" "No atrapado"
if(is_array($_FILES['archivoexcel']) && count ($_FILES['archivoexcel'])>0){ //Llamando libreria del excel require_once 'vendor/autoload.php'; require_once 'conexion.php'; $tmpfname = $_FILES['archivoexcel']['tmp_name']; //crear excel para luego leerlo $leerexcel = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($tmpfname); //cargando excel $excelobj = $leerexcel -> load($tmpfname); //Cargar la hoja en la que se trabajo $hoja = $excelobj -> getSheet(0); $filas = $hoja->getHighestRow(); echo $filas; }
Votes: 0 - Link answer -
Date: 17-05-2021 03:49:31 Hola Jonathan:
Es posible que dada la extensión del archivo (.tmp), la librería no sea capaz de reconocer su tipo y, por lo tanto, asignar un reader apropiado.
¿Probaste abrir ese archivo directamente en Excel? Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In