Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Pablo Videla en 2 Agosto 2013, 21:39 PM

Título: Excel generado, enviarlo por correo.
Publicado por: Pablo Videla en 2 Agosto 2013, 21:39 PM
Hola estimados, actualmente genero un excel desde php, pero mi idea es que no se descargue , sino que se envie el excel automaticamente por correo, como puedo hacer esto?

Actualmente uso BiffWriter y este es el metodo que genera el excel para descargarlo.

Código (php) [Seleccionar]
function xlsParse($fname = '')
{
$fstorage = !empty($fname);
foreach($this->maxcolwidth as $key => $value) {
$this->SetcolWidth($key, $key, $value);
}
if ($this->fonts = 0) {
$this->xlsSetFont('Arial', 10, $font_format = FONT_NORMAL);
}
$this->setCodePage();
$this->EOF();
$this->SetDefFormat();
$this->assemblePageBreaks();
$this->setPane();
$this->setWindow();
if ($fstorage) {
$fp = fopen($fname, "wb");
}
else {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Disposition: attachment; filename=$this->outfile");
header("Content-Type: application/octet-stream");
}
$len1 = count($this->parse_order);
$len2 = count($this->stream);
for ($x = 0 ; $x < $len1; $x++) {
$code = array_shift($this->parse_order);
if (in_array($code, $this->stream, TRUE)) {
for ($y = 0; $y < $len2; $y++) {
if ($code === $this->stream[$y]) {
if ($fstorage) {
fwrite($fp, $this->stream[$y + 1], strlen($this->stream[$y + 1]));
}
else {
print $this->stream[$y + 1];
}
}
}
}
}
if ($fstorage) {
fclose($fp);
}
return($fname);
}


Para descargarlo yo lo uso asi
Código (php) [Seleccionar]

$xsl->xslParse();


Pero mi idea es hacerlo asi

Código (php) [Seleccionar]
$mail->AddAttachment($xls->xlsParse());

Para enviarlo adjunto sin que se descargue, a traves de php mailer, alguien me puede orientar por favor?

Gracias de antemano, saludos.
Título: Re: Excel generado, enviarlo por correo.
Publicado por: 1mpuls0 en 2 Agosto 2013, 22:30 PM
Mi lógica dice que se tiene que descargar en este caso sería en la carpeta temporal de la pc y de ahí enviarlo y eliminarlo si así se desea.

Otra opción que veo es crear el file en una carpeta del servidor puedes usar ob_start() ob_end_clean() para obtener el stream con los datos y guardarlos usando fopen/fwrite/fclose en una carpeta en el servidor y posteriormente obtener el archivo y enviarlo con phpmailer.

Título: Re: Excel generado, enviarlo por correo.
Publicado por: Pablo Videla en 2 Agosto 2013, 23:38 PM
Gracias por responder Darhius, voy a esperar nuevos puntos de vista para ver por cual opto mientras intento por mi cuenta, saludos  ;D
Título: Re: Excel generado, enviarlo por correo.
Publicado por: Pablo Videla en 8 Agosto 2013, 17:25 PM
Al final lo que hice es crear una carpeta en el servidor con el id de la session, escribo el fichero sobre esa carpeta, lo envio por correo y luego borro la carpeta con el contenido.

Gracias por su ayuda, saludos.