PHP - Exportar a Excel ñ y acentos

 
Vista:
Imágen de perfil de Samuel

Exportar a Excel ñ y acentos

Publicado por Samuel (5 intervenciones) el 18/08/2016 19:30:18
Buen dia:

Es mi primer post de consulta. Un saludo antes que todo.

Estoy haciendo una aplicaicon en php para exportar cierta informacion a excel. Tengo una tabla que tiene cotejamiento utf8_general_ci. Uno de los campos de la tabla de donde voy a sacar la informacion tiene informacion de descripcion, es de tipo texto y guarda informacion parecida a esta:

1) <p>libro: "Manual de uso de la moxibustión"</p> al

Ahi se guarda una descripcion completa del producto, pueden utilizarse viñetas, acentos, ñ, etc.
El problema es que al exportarlo a excel, cuando trae asentos o ñ no me exporta la informacion.
Revise en google y encontre algo con la funcion htmlentities() que resolvio parcielmente, ya que substitui esos caracteres por otros y me exporta lo siguiente:

2) <p>libro: "Manual de uso de la moxibusti�n"</p>

Lo que hice fu esto : $describe=htmlentities($registro[2], ENT_QUOTES | ENT_SUBSTITUTE);

Pero, yo quiero que me exporte la informacion exactamente como aparece en el punto 1.

Les dejo el codigo aqui:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
$c=mysql_connect("localhost","root");
mysql_select_db("herbo");
$consulta="SELECT p.product_id,d.name,d.description,pc.category_id,p.image,p.price FROM `y2ncg_mijoshop_product` as p
INNER JOIN `y2ncg_mijoshop_product_description` as d ON d.product_id=p.product_id 
INNER JOIN `y2ncg_mijoshop_product_to_category` as pc ON pc.product_id=p.product_id 
INNER JOIN `y2ncg_mijoshop_category_description` as cd ON cd.category_id=pc.category_id 
WHERE p.quantity > 0 
AND d.language_id=2
AND p.status=1
GROUP by p.product_id";
$r=mysql_query($consulta);
 
$d=mysql_num_rows($r);
if($d>0){
 	header('Content-type:application/vnd.ms-excel; charset=utf-8');
	header("Content-type:application/x-msexcel; charset=utf-8");
	header("Content-Disposition:attachment;filename=archivo.xls");
	header("Pragma:no-cache");
	header("Expires:0");
	echo ("<table border=1>");
	echo ("<tr>");
	echo ("<td>ID</td>");
	echo ("<td>NAME</td>");
	echo ("<td>DESCRIPTION</td>");
	echo ("<td>DESCRIPTION2</td>");
	echo ("<td>Category</td>");
	echo ("<td>image</td>");
	echo ("<td>price</td>");
	echo ("<tr>");
	while ($registro=mysql_fetch_row($r)){
	 		//$describe=utf8_encode($registro[2]);
	 		$describe=htmlentities($registro[2], ENT_QUOTES | ENT_SUBSTITUTE);
	 		//$describe=htmlentities($registro[2]);
			echo ("<tr>");
			echo ("<td>$registro[0]</td>");
			echo ("<td>$registro[1]</td>");
			echo ("<td>$describe</td>");
			echo ("<td>$registro[2]</td>");
			echo ("<td>$registro[3]</td>");
			echo ("<td>https://herbomedicals.mx/components/com_mijoshop/opencart/image/cache/$registro[4]</td>");
			echo ("<td>$registro[5]</td>");
	}
	echo("</table");
 
}
else{
	echo("No hay registros en la tabla");
 
}
mysql_close();
 
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Juan Camilo
Val: 107
Ha disminuido su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Exportar a Excel ñ y acentos

Publicado por Juan Camilo (21 intervenciones) el 08/09/2016 21:56:50
Hola Amigo
De pronto este código te pueda servir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
header("Content-type: application/vnd.ms-excel" ) ;
header("Content-Disposition: attachment; filename=Inventario.xls");
include('conexion.php');
 
$qry=mysql_query("SELECT id_lb as 'Id del Libro', nombre_lb as 'Nombre del Libro', cantidad_lb as 'En Inventario' FROM libro order by cantidad_lb desc");
$campos = mysql_num_fields($qry);
$i=0;
echo "Inventario de Libros";
echo "<table><tr>";
while($i<$campos){
echo "<td bgcolor=yellow align=center><strong>". mysql_field_name ($qry, $i);
echo "</strong></td>";
$i++;
}
echo "</tr>";
while($row=mysql_fetch_array($qry)){
echo "<tr>";
for($j=0; $j<$campos; $j++) {
echo "<td>".$row[$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
?>
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

Exportar a Excel ñ y acentos

Publicado por Samuel (5 intervenciones) el 12/09/2016 17:05:40
Hola:

Les comento que encontre la solucion.

Despues de la consulta puse lo siguiente:
1
mysql_query("SET NAMES 'utf8'");

Ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$consulta="SELECT p.product_id,d.name,d.description,pc.category_id,p.image,p.price,p.quantity FROM $tablaprincipal as p
	INNER JOIN $tabladescribe as d ON d.product_id=p.product_id 
	INNER JOIN $tablacategory as pc ON pc.product_id=p.product_id 
	INNER JOIN $tablacatdes as cd ON cd.category_id=pc.category_id 
	WHERE $query_disponible 
	AND $query_lengua
	AND $query_habilita
	GROUP by p.product_id";
 
        //para que cuando hay acentos y ñ los tome como estan****Revisar si tambien fue por el     cotejamiento********
	mysql_query("SET NAMES 'utf8'");
 
	/*Obtener registros de consulta anterior*/
	$r=mysql_query($consulta);
	$d=mysql_num_rows($r);

Fue lo unico que cambie, lo demas quedo exactamente igual a como lo describi en el post.
Pueden dar por conlocuido este POST.

Saludos
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