Hola a todos
Tengo tres archivos PHP
php1.php
require_once '../PHPExcel/Classes/PHPExcel.php';
setlocale(LC_ALL,"es_ES@euro","es_ES","esp");
// Conecto con MSSQL, ejecuto un SP y lleno un archivo Excel
$objReader = PHPExcel_IOFactory::createReader("Excel2007");
$objPHPExcel = $objReader->load("Excel/CDM.xlsx");
$objPHPExcel->setActiveSheetIndexByName("Hoja1");
$objActSheet = $objPHPExcel->getActiveSheet();
$objActSheet->setCellValueByColumnAndRow(....)
//Guardo el Excel con dos nombres diferentes
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save("Excel/CDM.xlsx");
$objWriter->save('Excel/CDM'.date(dmY).'.xlsx');
php2.php
// Muestro una hoja del Excel en el navegador
$hoydia = date('j');
$hoymes = strtoupper(strftime("%B"));
$mes = date('n');
$objReader1 = PHPExcel_IOFactory::createReader("Excel2007");
$objPHPExcel1 = $objReader->load("Excel/CDM.xlsx");
$objWriterHTML = new PHPExcel_Writer_HTML($objPHPExcel);
//$objWriterHTML->setUseBOM(false);
$objWriterHTML->setSheetIndex($mes-4);
echo $objWriterHTML->generateHTMLHeader();
echo $objWriterHTML->generateStyles(true);
echo $objWriterHTML->generateSheetData();
php3.php
<?php
// Envío email y descargo
require "/usr/local/bin/vendor/swiftmailer/swiftmailer/lib/swift_required.php";
// Configuración
$transport = Swift_SmtpTransport::newInstance()
->setHost('mihost')
->setPort('587')
->setEncryption('tls')
->setUsername('[email protected]')
->setPassword('Aei123');
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance();
$message->setBody("<br><br>"."Adjuntamos el archivo de hoy".strftime("%A %d de %B del %Y")."<br><br>"."Saludos",'text/html');
$message->attach(Swift_Attachment::fromPath('Excel/CDM'.date('dmY').'.xlsx'));
$message-> setSubject('Archivo');
$message->setFrom(array('[email protected]' => 'Informes'));
$message->setTo (array ('[email protected]' => 'Juan P',));
if ($mailer->send($message))
{ $enlace = "Excel/CDM".date(dmY).".xlsx";
header ("Content-Disposition: attachment; filename=".'CDM'.date(dmY).'.xlsx'." ");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
echo "Mensaje enviado correctamente";
} else { echo "Mensaje fallido"; }
?>
Si ejecuto cada uno independiente ejecutan de maravillas, php1.php me carga datos, los escribe en el Excel y los guarda, php2.php me muestra en el navegador la hoja que deseo y php3.php me envia el .xlsx por email y me lo descarga.
Lo que no logro es ejecutar todo de una vez, es decir llenar el excel, guardarlo, mostrarlo en el explorador, me envíe el email y me lo descargue. He tratado de mil maneras y combinaciones entre ellos, con inludes, require, redireccionando con header y nada. No soy para nada experto en php y no me va muy bien con la comprensión del HTML.
Por eso recurro humildemente a vosotros, ¿ me ayudais por favor ?
Saludos y gracias de antemano.