Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] condicionar cellColor de PHPExcel

Estas en el tema de condicionar cellColor de PHPExcel en el foro de PHP en Foros del Web. Hola a todos, estoy trabajando en la exportación de datos con php de mi BD a Excel, y no tengo problema en ello, más deseo ...
  #1 (permalink)  
Antiguo 26/03/2015, 09:37
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta condicionar cellColor de PHPExcel

Hola a todos, estoy trabajando en la exportación de datos con php de mi BD a Excel, y no tengo problema en ello, más deseo en etre los datos exportados aparezca en el documento descargado unas celdas de color dependiendo de su valor (en este caso si el campo "festivo" de la tabla "entrada" vale "Si"). He intendo condicionarlo de distintas formas pero me arroja error de sintaxis y cosas así; lo que he conseguido es colorear dicha celda donde aparece el dato del campo pero indistintamente a que valor hay ahí... Pido por favor su ayuda pues poco he encontrado en la web y es solo saber condicionar esta parte, no crear un código nuevo de más de 600 líneas para mi porque sí. este es mi código que no se condicionar y gracias de antemano...

Código PHP:
Ver original
  1. <?php
  2.     include("seguridad.php");
  3.     include("conexion.php");
  4.    
  5.    
  6. $proyecto=$_GET['proyecto'];
  7. $nombre=$_GET['nombre'];
  8.  
  9. $sql= "SELECT personal.cedula, personal.nombre
  10. FROM personal, entrada
  11. WHERE personal.estado = 'Activo'
  12. AND personal.cedula = entrada.empleado
  13. AND entrada.proyecto = '".$proyecto."'
  14. AND  entrada.fecha BETWEEN '2015-03-14' AND '2015-03-30'
  15. GROUP BY personal.cedula
  16. ORDER BY personal.nombre ASC";
  17. $cs=mysql_query($sql,$cn);
  18.  
  19.   $i = 2; $k=1; $q=3;
  20. //while($resul=mysql_fetch_array($cs)){
  21.    require_once 'Classes/PHPExcel.php';
  22.    $objPHPExcel = new PHPExcel();
  23.    
  24.     function cellColor($cells,$color){
  25.         global $objPHPExcel;
  26.         $objPHPExcel->getActiveSheet()->getStyle($cells)->getFill('')
  27.         ->applyFromArray(array('type' => PHPExcel_Style_Fill::FILL_SOLID,
  28.         'startcolor' => array('rgb' => $color)
  29.         ));
  30.     }
  31.  
  32.      
  33.    
  34.    
  35.    //Informacion del excel
  36.    $objPHPExcel->
  37.     getProperties()
  38.         ->setCreator("XXX")
  39.         ->setLastModifiedBy("XXX")
  40.         ->setTitle("XXX")
  41.         ->setSubject("XXX")
  42.         ->setDescription("XXX")
  43.         ->setKeywords("XXX")
  44.         ->setCategory("XXX");
  45.  
  46. while($resul=mysql_fetch_object($cs)){
  47. //$j = '0';
  48. //$var=$resul[$j];
  49. $var=$resul->cedula;
  50. $var1=$resul->nombre;
  51. $sql2= "select  entrada.fecha, entrada.horario, entrada.salida, entrada.proyecto, entrada.festivo
  52. from entrada
  53. WHERE ".$var." = entrada.empleado
  54. AND entrada.proyecto = '".$proyecto."'
  55. AND  entrada.fecha BETWEEN '2015-03-14' AND '2015-03-30'
  56. ORDER BY entrada.fecha ASC";
  57. $cs2=mysql_query($sql2,$cn);
  58.  
  59. //$registros = mysql_num_rows ($cs2);
  60.    
  61.  //$registro = mysql_fetch_object ($cs2);
  62.  $l='B'; $h='B'; $n='C'; $m=1; $p= 'B';  
  63.  
  64.    $objPHPExcel->setActiveSheetIndex(0)
  65.      ->setCellValue('A'.$k, $var)
  66.      ->setCellValue('B'.$k, $var1);
  67.    while ($registro = mysql_fetch_object ($cs2)) {
  68.            
  69.            
  70.         $h2= $h++; $n2= $n++; $l2= $l++; $p2= $p++;
  71.        $objPHPExcel->setActiveSheetIndex(0)
  72.      
  73.             ->setCellValue($l.$k, $registro->fecha)
  74.             ->setCellValue($h.$i, $registro->horario)
  75.             ->setCellValue($n.$i, $registro->salida)
  76.             ->setCellValue($p.$q, $registro->proyecto)
  77.             ->setCellValue($n.$k, $registro->festivo);
  78.            
  79.            
  80.            
  81.            
  82.            
  83.               cellColor($n.$k, '3A74E9');
  84.  
  85.       $h++; $h2++; $n++; $n2++; $p++; $p2++; $l++; $l2++;
  86.        
  87.    }   $m++;  
  88.  
  89. $j++; $k=$k+4; $i=$i+4; $q=$q+4;
  90. }
  91.  
  92.  
  93.  
  94. header('Content-Type: application/vnd.ms-excel');
  95. header('Content-Disposition: attachment;filename="informeMIP.xls"');
  96. header('Cache-Control: max-age=0');
  97.  
  98. $objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
  99. $objWriter->save('php://output');
  100.  
  101.  
  102. ?>

Última edición por Jlopez2014; 26/03/2015 a las 09:39 Razón: datos explícitos de compañía o empresa
  #2 (permalink)  
Antiguo 26/03/2015, 09:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: condicionar cellColor de PHPExcel

Las condiciones son fáciles:
Código PHP:
Ver original
  1. if ($x == 'algo') {
  2.   $y = 'a';
  3. } else {
  4.   $y = 'b';
  5. }
  6.  
  7. foo($y);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/03/2015, 10:04
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: condicionar cellColor de PHPExcel

Si claro, condicionar tiene ese orden lógico y lo he aplicado en otros PHP pero en este caso que trabajo con la librería para exportación de archivos aplicarla igual funciona? pues aca "entrada. festivo" de la BD no lo tengo delimitada por una variable especifica sino por "$registro" traido del "mysql_fetch_object". Entonces ahí entra mi duda de como aplicar dicho campo para condicionarlo. no se si me hago entender. igual voy a probar con el campo tal cual esta declarado en el código.
  #4 (permalink)  
Antiguo 26/03/2015, 10:17
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: condicionar cellColor de PHPExcel

Código PHP:
Ver original
  1. if($registro->festivo == 'Si'){        
  2.            
  3.            
  4.            
  5.               cellColor($n.$k, '55ddff');
  6.              
  7.               }

Muy sencillo como escribiste; no creí que se pudiera hacer así y por eso intentaba con un igual "=" en vez de "->". Gracias

Etiquetas: colorear, condicional, phpexcel
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 14:53.