Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/10/2011, 08:40
Avatar de h2swider
h2swider
 
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 6 meses
Puntos: 194
Generar varios archivos descargables al mismo tiempo

Buenas tardes, les comento, actualmente tengo un sistema que recoge valores de un formulario los procesa llama a algún procedimiento Oracle y me genera un excel.

Me están solicitando que a partir de un formulario se creen varios archivos al mismo tiempo, y realmente no se si es posible.

Se les ocurre alguna manera?

Este es el metodo que genera el excel.

Código PHP:
Ver original
  1. /**
  2. * Este método se encarga de generar los archivos excel para los demás métodos de la clase.
  3. *
  4. * @static
  5. * @param statement $stid Es la salida que devuelve la consulta a oracle.
  6. * @param boolean $debug Por defecto es false. True para correr test de unidad
  7. * @return integer Son la cantidad de registros que devolvió la consulta (solo en modo debug).
  8. *
  9. */
  10. static private function generar($stid, $id_log, $debug) {
  11.  
  12.     $row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS);
  13.  
  14.     if ($row > 0 && !$debug) {
  15.  
  16.         $objPHPExcel = new PHPExcel();
  17.  
  18.         $objPHPExcel->getProperties()->setCreator("Lucas Swider")
  19.                 ->setLastModifiedBy("Lucas Swider")
  20.                 ->setTitle("Office 2007 XLSX Test Document")
  21.                 ->setSubject("Office 2007 XLSX Test Document")
  22.                 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  23.                 ->setKeywords("office 2007 openxml php")
  24.                 ->setCategory("Test result file");
  25.  
  26.  
  27.         $columna = 0;
  28.         foreach ($row as $key => $valor) {
  29.             $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicitByColumnAndRow($columna, 1, $key);
  30.             $columna++;
  31.         }
  32.  
  33.         $columna = 0;
  34.         foreach ($row as $key => $valor) {
  35.             $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicitByColumnAndRow($columna, 2, $valor);
  36.             $columna++;
  37.         }
  38.  
  39.         $j = 3;
  40.         while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
  41.            
  42.              $columna = 0;
  43.             foreach ($row as $key => $valor) {
  44.                 $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicitByColumnAndRow($columna, $j, $valor);
  45.                 $columna++;
  46.             }
  47.             $j++;
  48.         }
  49.         self::updatearLog($id_log, 1);
  50.  
  51.         // Redirect output to a client?s web browser (Excel2007)
  52.         header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  53.         $filename = 'Content-Disposition: attachment;filename="' . self::$_nombre . '.xlsx"';
  54.         header($filename);
  55.         header('Cache-Control: max-age=0');
  56.  
  57.         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  58.         $objWriter->save('php://output');
  59.        
  60.         exit;
  61.    }
  62.    self::updatearLog($id_log, $debug);
  63.    return $row;
  64. }
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives