Foros del Web » Programando para Internet » PHP »

exportar a excel

Estas en el tema de exportar a excel en el foro de PHP en Foros del Web. Hola a todos!! Espero alguien pueda ayudarme!...Tengo un script en donde hago varias consultas pero utilizo SWITCH CASE porque cada consulta es diferente y muestra ...
  #1 (permalink)  
Antiguo 09/12/2008, 10:33
 
Fecha de Ingreso: agosto-2003
Ubicación: pachuca,hgo
Mensajes: 132
Antigüedad: 20 años, 8 meses
Puntos: 0
exportar a excel

Hola a todos!!

Espero alguien pueda ayudarme!...Tengo un script en donde hago varias consultas pero utilizo SWITCH CASE porque cada consulta es diferente y muestra diferentes datos...
Dependiendo de lo que traigo en la consulta es lo que quiero exportar a excel pero no me lo hace, me muestra el archivo de excel pero en blanco..no muestra los datos!!...

Mi pregunta es si el BREAK de cada CASE tiene algo q ver?...o porque razon no mostrara mis datos...

para mandar llamar el archivo excel utilizo este codigo..

if( ! empty($_GET['exportar']) )
{

header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=nombrearchivo.xls");
}

if( empty($_GET['exportar'] ) ) echo '<a href="mostrar_datos.php?exportar=1">Exportar</a><br />';


Pues en otro ejemplo que tengo si me sale perfecto pero ahi es mas sencilla la consulta y no contiene muchas condiciones...

Si alguien me pudiera ayudar le agradeceria muchisimo!!
__________________
just do it
  #2 (permalink)  
Antiguo 09/12/2008, 10:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: exportar a excel

Pues sin ver la otra parte de tu código la que implementa los switch, es dificil ver porque falla, recuerda que despues de enviar las cabeceras, tienes que imprimir el resultado.

Saludos.
  #3 (permalink)  
Antiguo 09/12/2008, 11:21
 
Fecha de Ingreso: agosto-2003
Ubicación: pachuca,hgo
Mensajes: 132
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: exportar a excel

Muchas Gracias por responder GatorV...Mira, este es mi codigo...

<html>
<?

$cveplantel=$_POST["cbplantel"];
$idperiodo=$_POST["cbperiodo"];
$tipocali=$_POST["cbtipocali"];
//echo "$cveplantel,$idperiodo,$tipocali";
pg_connect("dbname='control' port='5432' user='telerin' password='aplicaciones'") or die ("Error en la Conexion");
if( ! empty($_GET['exportar']) )
{
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=nombrearchivo.xls");
}
if( empty($_GET['exportar'] ) ) echo '<a href="mostrar_datos.php?exportar=1">Exportar</a><br />';
?>
<body>
<table width="100%" border="1" align="center" class=informa>
<?
switch($tipocali){
case PAR1:
?>
<tr bgcolor="#669900">
<td align="center"><font color="#ffffff">CLAVE</font></td>
<td align="center"><font color="#ffffff">PLANTEL</font></td>
<td align="center"><font color="#ffffff">MATRICULA</font></td>
<td align="center"><font color="#ffffff">NOMBRE</font></td>
<td align="center"><font color="#ffffff">SEMESTRE</font></td>
<td align="center"><font color="#ffffff">GRUPO</font></td>
<td align="center"><font color="#ffffff">MATERIA</font></td>
<td align="center"><font color="#ffffff">PAR1</font></td>
<td align="center"><font color="#ffffff">TIPO</font></td>
<td align="center"><font color="#ffffff">FINAL</font></td>
<td align="center"><font color="#ffffff">TIPO</font></td>
</tr>
<?
$query="SELECT kardex.cve_plantel,plantel.plantel,alumno.matricul a,alumno.ape_pat,
alumno.ape_mat,alumno.nombre,kardex.semestre,karde x.grupo,catmaterias.descrip_mat,
calificaciones.par1,calificaciones.tip_par1,califi caciones.final,calificaciones.tipo_final
FROM alumno,kardex,plantel,calificaciones,catmaterias WHERE alumno.id_alumno=kardex.id_alumno
AND kardex.id_kardex=calificaciones.id_kardex AND kardex.cve_plantel=plantel.cve_plantel AND
calificaciones.id_materia=catmaterias.id_materia AND kardex.cve_plantel='$cveplantel' AND
kardex.id_periodo='$idperiodo' ORDER BY kardex.semestre,kardex.grupo,alumno.matricula ASC";
$resultado=pg_query($query);
$filas=pg_numrows($resultado);
$cali=pg_fetch_result($resultado,9);
$tipcali=pg_fetch_result($resultado,10);
if (($cali=="") && ($tipcali=="")){
echo " <script language=\"javascript\">
alert(\"Aun No se captura Calificacion Global!!!, Intentelo Nuevamente\")
history.back();
</script>";
}else{
for ($x=0; $x<$filas; $x++){
$suma=$suma + 1;
$cveplantel=pg_fetch_result($resultado,$x,0);
$plantel=pg_fetch_result($resultado,$x,1);
$matricula=pg_fetch_result($resultado,$x,2);
$apepat=pg_fetch_result($resultado,$x,3);
$apemat=pg_fetch_result($resultado,$x,4);
$nombre=pg_fetch_result($resultado,$x,5);
$nombre_completo="$apepat"." "."$apemat"." "."$nombre";
$semestre=pg_fetch_result($resultado,$x,6);
$grupo=pg_fetch_result($resultado,$x,7);
$materia=pg_fetch_result($resultado,$x,8);
$par1=pg_fetch_result($resultado,$x,9);
$tipar1=pg_fetch_result($resultado,$x,10);
$final=pg_fetch_result($resultado,$x,11);
$tipfinal=pg_fetch_result($resultado,$x,12);
?>
<tr>
<td align="center"><? echo "$cveplantel"?></td>
<td align="left"><? echo "$plantel"?></td>
<td align="center"><? echo "$matricula"?></td>
<td align="left"><? echo "$nombre_completo"?></td>
<td align="center"><? echo "$semestre"?></td>
<td align="center"><? echo "$grupo"?></td>
<td align="left"><? echo "$materia"?></td>
<td align="center"><? echo "$par1"?></td>
<td align="center"><? echo "$tipar1"?></td>
<td align="center"><? echo "$final"?></td>
<td align="center"><? echo "$tipfinal"?></td>
</tr>
<?
$color=('#FFE1E1'==$color)?'#DFDFDF':'#FFE1E1';

}
}
break;

}
?>
</table>
</body>
</html>

Solo puse un CASE ya q mi codigo es algo extenso y no cabe aqui...Como podras ver, las cabeceras las pongo al principio de casi todo... Tendra algo que ver eso?...O tengo q poner cabeceras por cada case...
__________________
just do it
  #4 (permalink)  
Antiguo 09/12/2008, 13:01
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: exportar a excel

El error es la primera linea
Código HTML:
<html> 
Primero: Antes de las cabeceras no puedes colocar codigo html o espacios en blanco
Segundo: No hace falta que pongas <html > basta que crees la tabla y aunque ese metodo funciona en Excel 2003 en Excel 2007 da problemas, aparecerá un supuesto error de seguridad por cierto Microsoft creó una bastante pesada forma de crear archivos Excel 2007 http://www.codeplex.com/PHPExcel
  #5 (permalink)  
Antiguo 09/12/2008, 14:33
 
Fecha de Ingreso: agosto-2003
Ubicación: pachuca,hgo
Mensajes: 132
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: exportar a excel

Pues tengo otro ejemplo para exportar a excel e igual pongo html y me lo hace muy bien...No creo que el problema sea el html...Creo que está en los CASE pero realmente no doy con ese problema...
Pues solo me abre el archivo .xls en blanco... o estoy posicionando mal los header..
__________________
just do it
  #6 (permalink)  
Antiguo 09/12/2008, 14:44
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: exportar a excel

Probablemente tienes output_buffering en On, por eso no muestra el error,
pero imprimir CUALQUIER cosa antes de una cabecera, producira un error:
headers already sent by .blahbalhbalh

Revisa esto:
Código PHP:
switch($tipocali){
case 
PAR1
Case PAR1? Es PAR1 una CONSTANTE? no lo creo, las cadenas van dentro de COMILLAS (simples o dobles, tu decides).

Código PHP:
switch($tipocali){
case 
'PAR1'//magia 
  #7 (permalink)  
Antiguo 09/12/2008, 15:25
 
Fecha de Ingreso: agosto-2003
Ubicación: pachuca,hgo
Mensajes: 132
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: exportar a excel

el procedimiento de los CASE esta bien, pues ya lo revisé....

Lo que no hace es que no se lleva los datos q genera la consulta a excel, solo muestra el archivo excel en blanco!!!...
__________________
just do it
  #8 (permalink)  
Antiguo 09/12/2008, 15:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: exportar a excel

Te envia datos sin usar la salida de Excel?

Saludos.
  #9 (permalink)  
Antiguo 09/12/2008, 16:30
 
Fecha de Ingreso: agosto-2003
Ubicación: pachuca,hgo
Mensajes: 132
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: exportar a excel

Me trae el archivo de excel pero no me trae los datos... es decir, el archivo de excel lo trae pero vacio....
__________________
just do it
  #10 (permalink)  
Antiguo 09/12/2008, 16:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: exportar a excel

Pero me refiero a que quites la cabecera de excel para que veas si en pantalla te muestra los datos o algun error.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:29.