Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2014, 04:36
zunzunm3
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 10 años, 5 meses
Puntos: 0
Incidencia en la generación de excel

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;
}   
?>