Excel generado, enviarlo por correo.

Iniciado por Pablo Videla, 2 Agosto 2013, 21:39 PM

0 Miembros y 1 Visitante están viendo este tema.

Pablo Videla

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.

1mpuls0

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.

abc

Pablo Videla

Gracias por responder Darhius, voy a esperar nuevos puntos de vista para ver por cual opto mientras intento por mi cuenta, saludos  ;D

Pablo Videla

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.