Foros del Web » Programando para Internet » PHP »

Crear XLS con php

Estas en el tema de Crear XLS con php en el foro de PHP en Foros del Web. Buenas, tengo un problema. Estoy tratando de generar un xls con PHP, y sé como hacerlo, pero el header me trae problemas. Es decir: Si ...
  #1 (permalink)  
Antiguo 03/04/2011, 00:09
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 6
Crear XLS con php

Buenas, tengo un problema.
Estoy tratando de generar un xls con PHP, y sé como hacerlo, pero el header me trae problemas. Es decir:

Si pongo un table con columnas, filas, etc, todo común funciona, el problema es cuando hago includes, querys, y otras cosas que no sean formato html / para escribir en excel.

Esto es algo muy comun que si funciona
Código:
<?php 
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=reporte.xls");
?>
<html>
<head>
<title>Excel</title>
</head>
<body>
<table border="1">
<tr>
<td>
Hola mundo
</td>
</tr>
</table>
</body>
</html>
El problema es cuando quiero usar PHP con funciones, includes, etc.
Muestro el codigo:
Código:
<?
 header("Content-type: application/vnd.ms-excel");
 header("Content-Disposition: attachment; filename=listaPeliculas.xls");
 
 include 'add/conexion.php'; 
 include 'add/funcionesVarias.php';
 
 $query = "SELECT id, nombre, genero, ano, detalles FROM peliculas WHERE addhome=1 ORDER BY id DESC";
 $conexion = conectar();
 $result = mysql_query($query, $conexion) or die("ERROR: Problemas en la DB. No se pudo hacer el select: " . mysql_error()); 
 desconectar();

 $i=0;
 while($pelicula = mysql_fetch_array($result))
 {
  $id[$i] = $pelicula['id'];
  $nombre[$i] = $pelicula['nombre'];
  $genero[$i] = $pelicula['genero'];
  $ano[$i] = $pelicula['ano'];
  $detalle[$i] = $pelicula['detalles'];
  $i++;
 }
 
 //GENERACION EXCEL-------------------------------------------------------------------------
 //Enviamos los encabezados de hoja de calculo
 //Creamos la tabla
 echo "<table>";
 for($q=0; $q < 5; $q++) //5 columnas
 {
  if($q == 0) echo "<tr><td>ID</td>";
  else if($q == 1) echo "<tr><td>NOMBRE</td>";
  else if($q == 2) echo "<tr><td>GENERO</b></td>";
  else if($q == 3) echo "<tr><td>AÑO</td>";
  else if($q == 4) echo "<tr><td>DETALLE</td>";
    
  for($j=0; $j <= $i; $j++)
  {
   if($q == 0) echo "<td>" . $id[$q][$j] . "</td>";
   else if($q == 1) echo "<td>" . $nombre[$q][$j] . "</td>";
   else if($q == 2) echo "<td>" . $genero[$q][$j] . "</td>";
   else if($q == 3) echo "<td>" . $ano[$q][$j] . "</td>";
   else if($q == 4) echo "<td>" . $detalle[$q][$j] . "</td>";
  }
  
  echo "</tr>";
 }
 echo "</table>";
?>
No funciona por culpa del header, porque seguramente a continuación del header iria exclusivamente la data del excel y nada mas. Pero yo necesito traer data de base de datos para escribirla en excel. Entonces, como hacer?

Slds.
  #2 (permalink)  
Antiguo 01/05/2011, 00:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 2
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Crear XLS con php

Hola! intentalo asi:

Espero sea de ayuda


header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"listaPeliculas.xls\";");

saludos.
  #3 (permalink)  
Antiguo 01/05/2011, 06:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Crear XLS con php

A ver, el hecho que envíes la cabecera indicando que el navegador debe interpretar de una u otra forma el código generado no implica que no puedas ingresar código PHP después del header, de hecho, no tiene nada que ver, el navegador ni se enterará que es lo que estas haciendo en el archivo PHP ya que a el solo le llegará el código generado, ahora, dices que no funciona, pero no indicas cual es el problema/error y créeme, adivinos no somos
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: xls
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 08:07.