Foros del Web » Programando para Internet » PHP »

Duda sobre Guardar tabla en Excel

Estas en el tema de Duda sobre Guardar tabla en Excel en el foro de PHP en Foros del Web. Que tal, he utilizado y comprendo el código de guardar una tabla en un archivo de Excel. En la línea: Código PHP: $sfile = $scarpeta ...
  #1 (permalink)  
Antiguo 19/03/2004, 11:57
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Duda sobre Guardar tabla en Excel

Que tal, he utilizado y comprendo el código
de guardar una tabla en un archivo de Excel.

En la línea:

Código PHP:
$sfile=$scarpeta."/xxxx.xls"//ruta del archivo a generar 
Se da la ruta y se guarda el archivo. Es decir el el .xls se
guarda primero en el servidor y luego se puede descargar.

Hay alguna manera de poder bajar el archivo .xls
directamente sin escribir el archivo antes en el servidor?



Código PHP:
<?php
$shtml
="<table>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>Id</td><td>Codigo</td><td>US$</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>1</td><td>C4325</td><td>2000.00</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>2</td><td>DX456</td><td>1000.00</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>3</td><td>&nbsp;</td><td>-50.00</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>4</td><td>A18-TG</td><td>20.64</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."</table>";
$scarpeta=""//carpeta donde guardar el archivo.
//debe tener permisos 775 por lo menos
$sfile=$scarpeta."/xxxx.xls"//ruta del archivo a generar
$fp=fopen($sfile,"w");
fwrite($fp,$shtml);
fclose($fp);
echo 
"<a href='".$sfile."'>Haz click aqui</a>";
?>

Gracias de Antemano.
__________________
EL LIMITE ES EL UNIVERSO
  #2 (permalink)  
Antiguo 19/03/2004, 12:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, .. se trata de generar las cabeceras HTTP adecuadas para indicar al navegador que el contendido que va a ser enviado es del tipo Exel.

Código PHP:
<?php
$shtml
="<table>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>Id</td><td>Codigo</td><td>US$</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>1</td><td>C4325</td><td>2000.00</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>2</td><td>DX456</td><td>1000.00</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>3</td><td>&nbsp;</td><td>-50.00</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."<tr>";
$shtml=$shtml."<td>4</td><td>A18-TG</td><td>20.64</td>";
$shtml=$shtml."</tr>";
$shtml=$shtml."</table>";

// cabeceras HTTP:
header ("Content-type: Application/msexcel");
header("Content-Disposition: attachment;filename=nose.xls");

// dar salida al buffer (tu variable)
echo $shtml;

?>
También podrías ver el tema de las funciones COM si usas PHP bajo windows ... (el servidor)

www.php.net/com

Un saludo,

PD: Editado .. me faltaron cabeceras HTTP (y faltarían algunas más para redondear el tema ..) pero con esas más o menos ya va algo.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 19/03/2004 a las 12:17
  #3 (permalink)  
Antiguo 19/03/2004, 12:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por cierto .. las cabeceras que puse .. abren el Exel (si está este instalado ....) y cargan esos datos ...

Si quieres forzar la descarga completa del archivo hay que usar otras cabeceras HTTP (sobre todo la que indica el content-type)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 19/03/2004, 12:58
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Entonces no hay manera de "Haga click aquí" y descargue el archivo.

O se envía con cabeceras, o se guarda antes de bajarlo.

Queda claro.
__________________
EL LIMITE ES EL UNIVERSO
  #5 (permalink)  
Antiguo 19/03/2004, 13:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. que es lo que quires hacer exactamente?

No generar un archivo y tener un "link" de "Haga click aquí" para descargar?...

Si es eso lo que pretendes.. genera el archivo igualmente en tu servidor .. pero cuando haga click .. lo borras si ya no lo necesitas .. Para ello no podrás linkear directo el archivo sino que tendras que saber que archivo es el que se solicita para ejecutar en el mismo proceso el proceso (valga la redundancia) del "unlink()" para borrar el archivo ...

Lo "normal" es que tu "haga click" llame a ese código que genera tu .xls de tus datos y en el mismo proceso lo entrega para descarga o para verlo sobre Exell. De esa forma no se está generando ningun archivo que se tenga que borrar por qué todo se hace en "memoria" .. Si cancela el proceso .. desaparece el archivo generádo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 11:41.