Foros del Web » Programando para Internet » PHP »

problema para crear tabla con PHPExcel

Estas en el tema de problema para crear tabla con PHPExcel en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar tengo problemas para imprimir esta tabla con PHPExcel @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <table class="table table-bordered table-hover" border="1"> ...
  #1 (permalink)  
Antiguo 09/06/2013, 21:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
problema para crear tabla con PHPExcel

hola amigos espero me puedan ayudar tengo problemas para imprimir esta tabla con PHPExcel

Código PHP:
Ver original
  1. <table class="table table-bordered table-hover" border="1">
  2.     <tr>
  3.     <td><strong>Tipo de Estaciones</strong></td>
  4.     </tr>
  5.     <?php
  6.     foreach($e2 as $field)
  7.     {
  8.  
  9.             if($area != $field['codigoarea']) { ?>
  10.  
  11.            
  12.             <tr><td><div align=center><strong>&nbsp;</strong></div></td></tr>
  13.                         <?php }
  14.             $area=$field['codigoarea'];
  15.             if($estacion != $field['codigotipoestacion']){ ?>
  16.                 <tr><td><div><strong><?php echo $field['nombreestacion'] ?></strong></div></td></tr>
  17.  
  18.                 <?php }
  19.        
  20.                
  21.             $estacion=$field['codigotipoestacion'];
  22.         }
  23. ?>
  24. <tr>
  25.     <td><strong>Total</strong></td>
  26. </tr>  
  27. </table>


este es mi codigo

Código PHP:
Ver original
  1. require_once("PHPExcel.php");
  2. require_once("PHPExcel/Writer/Excel2007.php");
  3.  
  4. $objPHPExcel = new PHPExcel();
  5.  
  6.  
  7. $objPHPExcel->
  8.     getProperties()
  9.         ->setCreator("TEDnologia.com")
  10.         ->setLastModifiedBy("TEDnologia.com")
  11.         ->setTitle("Exportar Excel con PHP")
  12.         ->setSubject("Documento de prueba")
  13.         ->setDescription("Documento generado con PHPExcel")
  14.         ->setKeywords("usuarios phpexcel")
  15.         ->setCategory("reportes");
  16.         $i= 0;
  17.         foreach($e2 as $field)
  18.     {
  19.  
  20.             if($area != $field['codigoarea']) {
  21.  
  22.         $objPHPExcel->setActiveSheetIndex(0)
  23.             ->setCellValue('B'.$i, $field['nombreestacion']);
  24.  
  25.        
  26.         }  
  27.  
  28.         $estacion=$field['codigotipoestacion'];
  29.  
  30.         $i++;  
  31.     }
  32.  
  33.  
  34.  
  35.  
  36. $objPHPExcel->getActiveSheet()->setTitle('Estaciones');
  37. $objPHPExcel->setActiveSheetIndex(0);
  38.  
  39.  
  40. header('Content-Type: application/vnd.ms-excel');
  41. header('Content-Disposition: attachment;filename="Estaciones.xls"');
  42. header('Cache-Control: max-age=0');
  43.  
  44. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  45. $objWriter->save('php://output');
  #2 (permalink)  
Antiguo 09/06/2013, 23:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema para crear tabla con PHPExcel



Parece que olvidaste mencionar cuál es el problema.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/06/2013, 23:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para crear tabla con PHPExcel

Triby gracias por responder , el problema es que no logro imprimir la tabla en excel

en htlm y php lo logro de la siguiente manera

<table class="table table-bordered table-hover" border="1">
<tr>
<td><strong>Tipo de Estaciones</strong></td>
</tr>
<?php
foreach($e2 as $field)
{

if($area != $field['codigoarea']) { ?>


<tr><td><div align=center><strong>&nbsp;</strong></div></td></tr>
<?php }
$area=$field['codigoarea'];
if($estacion != $field['codigotipoestacion']){ ?>
<tr><td><div><strong><?php echo $field['nombreestacion'] ?></strong></div></td></tr>

<?php }


$estacion=$field['codigotipoestacion'];
}
?>
<tr>
<td><strong>Total</strong></td>
</tr>
</table>


como la exporto con PHPExcel
  #4 (permalink)  
Antiguo 10/06/2013, 00:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema para crear tabla con PHPExcel

Recuerda que Excel no trabaja con tablas, sino con celdas, basadas en columnas (ejemplo: A - Z) y filas (ejemplo: 1 - 1024).

Entonces, inicia estableciendo el valor del título en la celda B1, después, en el código que ya tienes, simplemente necesitas inicializar $i en 2 y no en cero, como lo tienes actualmente, eso te podría (debería?) generar un error porque no existe la fila cero.

B1 es porque en tu código estás usando la columna B, pero podría ser cualquiera.

Con eso debería funcionar; si sigues con problemas, no olvides mostrar tu código actualizado y usar el highlight para que sea legible.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 10/06/2013, 09:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para crear tabla con PHPExcel

Triby gracias por responder , tienes toda la razon en lo que me indicas , pero no logro imprimir lo que necesito en excel , esta es tabla que imprimo en el navegador con php y html (http://imageshack.us/f/802/tablak.jpg/)

este es el código con el que imprimo en el navegador
Código PHP:
Ver original
  1. echo "<table class='table table-bordered table-hover' border='1'>
  2.     <tr>
  3.     <td><strong>Tipo de Estaciones</strong></td>
  4.     </tr>";
  5.    
  6.     foreach($e2 as $field)
  7.     {
  8.  
  9.             if($area != $field['codigoarea']) {
  10.  
  11.            
  12.             echo "<tr><td><div align=center><strong>&nbsp;</strong></div></td></tr>";
  13.                          }
  14.             $area=$field['codigoarea'];
  15.             if($estacion != $field['codigotipoestacion']){
  16.                 echo "<tr><td><div><strong>".$field['nombreestacion']."</strong></div></td></tr>";
  17.  
  18.                  }
  19.        
  20.                
  21.             $estacion=$field['codigotipoestacion'];
  22.         }
  23.  
  24. echo "<tr>
  25.     <td><strong>Total</strong></td>
  26. </tr>  
  27. </table>";



hasta el momento este es mi código para exportar a excel
Código PHP:
Ver original
  1. require_once("PHPExcel.php");
  2. require_once("PHPExcel/Writer/Excel2007.php");
  3.  
  4. $objPHPExcel = new PHPExcel();
  5.  
  6.  
  7. $objPHPExcel->
  8.     getProperties()
  9.         ->setCreator("TEDnologia.com")
  10.         ->setLastModifiedBy("TEDnologia.com")
  11.         ->setTitle("Exportar Excel con PHP")
  12.         ->setSubject("Documento de prueba")
  13.         ->setDescription("Documento generado con PHPExcel")
  14.         ->setKeywords("usuarios phpexcel")
  15.         ->setCategory("reportes");
  16.        
  17.         $objPHPExcel->setActiveSheetIndex(0)
  18.         ->setCellValue('A'.'1', 'Tipo de Estación');
  19.         $i= 2;
  20.         foreach($e2 as $field)
  21.         {
  22.  
  23.         $objPHPExcel->setActiveSheetIndex(0)
  24.         ->setCellValue('A'.$i,$field['nombreestacion']);
  25.  
  26.         $i++;  
  27.         }
  28.  
  29. $objPHPExcel->getActiveSheet()->setTitle('Estaciones');
  30. $objPHPExcel->setActiveSheetIndex(0);
  31.  
  32. header('Content-Type: application/vnd.ms-excel');
  33. header('Content-Disposition: attachment;filename="Estaciones.xls"');
  34. header('Cache-Control: max-age=0');
  35.  
  36. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  37. $objWriter->save('php://output');

y este es mi resultado http://imageshack.us/photo/my-images/829/excely.png/

Última edición por Montes28; 10/06/2013 a las 09:35
  #6 (permalink)  
Antiguo 10/06/2013, 09:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema para crear tabla con PHPExcel

Te falta la parte donde comparas $estacion == $field['nombreestacion'].

Ahora, si los datos provienen de una consulta, bien podrías usar SELECT DISTINCT para que aparezcan sólo una vez.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 10/06/2013, 09:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para crear tabla con PHPExcel

Triby gracias por responder , necesito hacerlo con las comparaciones y necesito imprimir la celda en blanco
  #8 (permalink)  
Antiguo 10/06/2013, 10:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema para crear tabla con PHPExcel

Entonces inténtalo, ya tienes la lógica en el script donde haces la tabla, solo tienes que aplicarla a este y listo!
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 10/06/2013, 10:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para crear tabla con PHPExcel

Triby eso estoy haciendo pero no funciona

este es el script con el que hice la tabla

Código PHP:
Ver original
  1. foreach($e2 as $field)
  2.     {
  3.  
  4.             if($area != $field['codigoarea']) {
  5.  
  6.            
  7.             echo "<tr><td><div align=center><strong>&nbsp;</strong></div></td></tr>";
  8.                          }
  9.             $area=$field['codigoarea'];
  10.             if($estacion != $field['codigotipoestacion']){
  11.                 echo "<tr><td><div><strong>".$field['nombreestacion']."</strong></div></td></tr>";
  12.  
  13.                  }
  14.        
  15.                
  16.             $estacion=$field['codigotipoestacion'];
  17.         }


pero sucede algo curioso cuando lo voy a exportar a excel me toca cambiar el operador de la condicion != a ==

Código PHP:
Ver original
  1. $objPHPExcel->setActiveSheetIndex(0)
  2.         ->setCellValue('B'.'2', 'Tipo de Estación');
  3.         $i= 3;
  4.         foreach($e2 as $field)
  5.         {
  6.         $area=$field['codigoarea'];
  7.         if($area == $field['codigoarea']) {
  8.         if($estacion == $field['codigotipoestacion']){
  9.         $objPHPExcel->setActiveSheetIndex(0)
  10.         ->setCellValue('B'.$i,$field['nombreestacion']);
  11.        
  12.         }
  13.         $estacion=$field['codigotipoestacion'];
  14.         }
  15.        
  16.         $i++;
  17.         }


este es mi resultado
http://imageshack.us/photo/my-images/40/excel2.png/
  #10 (permalink)  
Antiguo 10/06/2013, 19:45
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: problema para crear tabla con PHPExcel

Segun tu codigo HTML/PHP la linea 4, esa linea la tienes en otro lugar en tu codigo PHP/PHPExcel.

Empieza reordenando las condiciones y asignaciones.
__________________
Aprendiendo!!!
  #11 (permalink)  
Antiguo 10/06/2013, 20:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para crear tabla con PHPExcel

anacona16 gracias por responder , este es mi codigo y estoy organizando las condiciones y asignaciones pero tengo problemas para imprir las celdas de la manera adecuada

Código PHP:
Ver original
  1. $objPHPExcel->setActiveSheetIndex(0)
  2.         ->setCellValue('B'.'2', 'Tipo de Estación');
  3.         $i= 3;
  4.         foreach($e2 as $field)
  5.         {
  6.             $area=$field['codigoarea'];
  7.             if($area != $field['codigoarea']) {
  8.  
  9.            
  10.             //echo "<tr><td><div align=center><strong>&nbsp;</strong></div></td></tr>";
  11.             }
  12.            
  13.             if($estacion != $field['codigotipoestacion']){
  14.                 //echo "<tr><td><div><strong>".$field['nombreestacion']."</strong></div></td></tr>";
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.             }
  22.        
  23.                
  24.             $estacion=$field['codigotipoestacion'];
  25.        
  26.             $i++;
  27.         }
  #12 (permalink)  
Antiguo 11/06/2013, 01:59
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: problema para crear tabla con PHPExcel

Si haces

$area=$field['codigoarea'];

estás haciendo que el valor de $area sea el mismo que el de $field['codigoarea'] de modo que el siguiente condicional en que cuestionas si no es igual no será válido ya que dada la igualdad anterior hará que siempre sea igual.

Código PHP:
Ver original
  1. if($area != $field['codigoarea'])
  2. {
  3.  // no se ejcutará nunca
  4. }
  5. if($area == $field['codigoarea'])
  6. {
  7.  // se ejecutará siempre
  8. }
`
Revisa la lógica de todo tu ejemplo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: phpexcel, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:32.