Muy buenas y saludos a todos.
Tengo un problema usando phpexcel y es que si un usuario genera un excel y cierra su sesión, el siguiente que se conecta a esa página recibe el mismo informe con los datos del anterior usuario. Si vuelve a cargar la página si es cierto que descarga correctamente, pero por motivos obvios quisiera saber que hago mal para evitar este tipo de incidencias.
Gracias.
Código PHP:
<?php
include("import.php");
include("funciones.php");
$usuario=getJoomUser();
if ($usuario['id']== 0){
print "No estas logueado en el sistema";
$pantalla=$usuario['username'];
print "$pantalla";
}
else{
$input = new jinput;
$username=$usuario['username'];
$tablaS= $usuario['username'].'s';
$tablaD= $usuario['username'].'d';
$link = mysql_connect(datos conexion);
$dbSelected = mysql_select_db(datos conexion,$link);
if ($dbSelected)
$result=mysql_query("SELECT j.sfid, c.name FROM jerarquias j, Centros c WHERE j.cad='$username' AND j.sfid=c.sfid" );
$result2=mysql_query("SELECT ean, description FROM terminales ORDER BY 2");
require_once ('Classes/PHPExcel.php');
/** PHPExcel_Writer_Excel2007 */
// Crea un nuevo objeto PHPExcel
$objPHPExcel = new PHPExcel();
// Establecer propiedades
$objPHPExcel->getProperties()
->setCreator("Usuario")
->setLastModifiedBy("Usuario")
->setTitle("Listado de Stock")
->setSubject("Listado de Stock")
->setDescription("stock")
->setKeywords("Excel Office 2003 openxml php");
//->setCategory("Pruebas de Excel");
// }
$c=0;
while ($record=mysql_fetch_row($result)){
$matrizCentros[$c][0]=$record[0];//guardo sfid
$nuevaTabla=strtolower($record[0].'s');
$result4=mysql_query("CREATE TABLE $nuevaTabla LIKE e2901034s");
$nuevaTabla=strtolower($record[0].'d');
$result4=mysql_query("CREATE TABLE $nuevaTabla LIKE e2901034d");
$nuevaTabla=strtolower($record[0].'e');
$result4=mysql_query("CREATE TABLE $nuevaTabla LIKE e2901034e");
$matrizCentros[$c][1]=$record[1];//guardo nombre
++$c;
}
$c=0;
//While para rellenar todos los terminales de la tabla terminales
while ($record2=mysql_fetch_row($result2)){
//echo 'entra';
$matrizEans[$c][0]=$record2[0];//guardo ean
//echo $record[0];
$matrizEans[$c][1]=$record2[1];//guardo descripción
$objPHPExcel->setActiveSheetIndex(0)
->setCellValueByColumnAndRow(0,$c+2,$record2[1]); //Grabo en excel las descripciones de los terminales
++$c;
}
$centros=count($matrizCentros);
for ($i=0;$i<$centros;$i++){
$tabla=strtolower($matrizCentros[$i][0].'s');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValueByColumnAndRow($i+1,1,$matrizCentros[$i][1]);
$result3=mysql_query("SELECT count(*), ean FROM $tabla GROUP BY ean");//guardo las cantidades de cada terminal que tenemos en stock en el centro
$c=0;
while ($record3=mysql_fetch_row($result3)){
$matrizStock[$c][0]=$record3[0];//guardo cantidad
$matrizStock[$c][1]=$record3[1];//ean
++$c;
}
//++$c;
$eans=count($matrizEans)+1;
$stock=count($matrizStock);
for ($h=0; $h<$eans;$h++){
for ($j=0;$j<$stock;$j++){
if ($matrizEans[$h][0]===$matrizStock[$j][1]){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValueByColumnAndRow($i+1,$h+2,$matrizStock[$j][0]);
break;
}
}
}
unset($matrizStock);
//$c=count($matrizEans);
}
//Autoajustamos tamaño de las columnas
$nCols = $centros; //set the number of columns
foreach (range(0, $nCols) as $col) {
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($col)->setAutoSize(true);
}
// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Listado Stock Cad');
// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
$objPHPExcel->setActiveSheetIndex(0);
// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Listado de Stock Cad.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
?>