PHP - Error al exportar a excel desde php con caracteres latinos

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al exportar a excel desde php con caracteres latinos

Publicado por Milton (6 intervenciones) el 03/12/2018 20:05:39
Buen día Amig@s Tengo una dificultad y espero que alguno me pueda ayudar.
Tengo un programa que exporta datos desde php a Excel por medio de header
1
2
3
4
5
6
7
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=".$filename."");
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header('Content-Transfer-Encoding: binary');

los datos se extraen de un array y se presentan de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(!empty($export)){
	   $mostrar_columnas = false;
 
 foreach($export as $data_export) {
 if(!$mostrar_columnas) {
 echo implode("\t", array_keys($data_export))."\n";
 $mostrar_columnas = true;
 }
 echo implode("\t", array_values($data_export)) . "\n";
 }
 
 }else{
 echo 'No hay datos a exportar';
 }
 exit;
 }

El problema se presenta en que al momento de abrir el excel no toma caracteres latinos con las tildes, he intentado forzarlo con
1
echo "\xEF\xBB\xBF";
pero si le pongo esto no me toma la tabulacion "\t" y todo me lo muestra en una sola columna.
Intente cambiar el símbolo de tabulacion por
1
	
y si tabula pero tambien se escribe el cogigo quedando por ejemplo "Nombre&#09" "Apellido&#09";
Agradezco cualquier comentario
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Oscar
Val: 108
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al exportar a excel desde php con caracteres latinos

Publicado por Oscar (26 intervenciones) el 03/12/2018 20:43:23
fíjate en estas lineas

1
2
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header('Content-Transfer-Encoding: binary');

En el charset o el Encoding muchas veces es mejor arreglar los problemas de raiz que maquillarlos en el frente

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al exportar a excel desde php con caracteres latinos

Publicado por Milton (6 intervenciones) el 03/12/2018 22:41:32
Hola Oscar, he probado con varios tipos de cabecera ero no encuentro el error. Podrías ser mas especifico por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar