Foro de elhacker.net

Programación => 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
  1. function xlsParse($fname = '')
  2. {
  3. $fstorage = !empty($fname);
  4. foreach($this->maxcolwidth as $key => $value) {
  5. $this->SetcolWidth($key, $key, $value);
  6. }
  7. if ($this->fonts = 0) {
  8. $this->xlsSetFont('Arial', 10, $font_format = FONT_NORMAL);
  9. }
  10. $this->setCodePage();
  11. $this->EOF();
  12. $this->SetDefFormat();
  13. $this->assemblePageBreaks();
  14. $this->setPane();
  15. $this->setWindow();
  16. if ($fstorage) {
  17. $fp = fopen($fname, "wb");
  18. }
  19. else {
  20. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  21. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  22. header("Cache-Control: no-store, no-cache, must-revalidate");
  23. header("Cache-Control: post-check=0, pre-check=0", false);
  24. header("Pragma: no-cache");
  25. header("Content-Disposition: attachment; filename=$this->outfile");
  26. header("Content-Type: application/octet-stream");
  27. }
  28. $len1 = count($this->parse_order);
  29. $len2 = count($this->stream);
  30. for ($x = 0 ; $x < $len1; $x++) {
  31. $code = array_shift($this->parse_order);
  32. if (in_array($code, $this->stream, TRUE)) {
  33. for ($y = 0; $y < $len2; $y++) {
  34. if ($code === $this->stream[$y]) {
  35. if ($fstorage) {
  36. fwrite($fp, $this->stream[$y + 1], strlen($this->stream[$y + 1]));
  37. }
  38. else {
  39. print $this->stream[$y + 1];
  40. }
  41. }
  42. }
  43. }
  44. }
  45. if ($fstorage) {
  46. fclose($fp);
  47. }
  48. return($fname);
  49. }

Para descargarlo yo lo uso asi
Código
  1. $xsl->xslParse();

Pero mi idea es hacerlo asi

Código
  1. $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.