PHP - ayuda con un reporte excel.

   
Vista:
Imágen de perfil de Hfr

ayuda con un reporte excel.

Publicado por Hfr (88 intervenciones) el 21/09/2016 21:39:32
hola chicos, estoy haciendo un reporte en excel y tengo un problema

una de las celdas es ancha para un texto grande bueno en fin. el reporte yo lo hago con una platilla que ya tengo.
yo traigo varios de los datos normal sin problema
tengo dos consultas la primer no molesta la segunda creo que mas de lógica pero no he podido dar con el chiste.

1
->SetCellValue('A42',datos($eje))

resulta que en esa celda tengo que cargar varios registros.
pero esa instrucción del ->SetCellValue no dejar hacer un for ni nada de eso

pensé que podría hacerlo así

1
2
3
->SetCellValue('A42', for ($x=0; $x<=$varaible; $x++)
 
{  }  )..

como no funciona.
dije no breve una una función

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
->SetCellValue('A42',datos($eje))
 
 
$qsegciudadania="SELECT   dato1, datos2, dato3, dato4 from  datos where iddato='1235' " ;
 
  $eje=mysqli_query($conn,$qsegciudadania);
 
 
 
  function datos($valor){
 
 
 
	foreach ($valor as $xrow)
	{
	echo "seguimiento n"."\n";
 
	echo	"fecha ".$xrow['dato1']."\n";
 
 
	}
return $xrow['dato1'];
 
}

boo no hay erres pero en el excel solo muestra un dato
que para este caso digamos que es una fecha

y debería salir una 4 filas con 1 columna ya que solo devuelvo $xrow['dato1'];
pero no solo sale


entonces hice esto mas abajo <?php echo $zfuncion=datos($eje)."<br>";?>
y si muestra los datos en la pagina.
4 filas con 1 columna


Untitled

si volteamos la pantalla sabemos que si porque html no toma /n de php jejeje

y no la madre probe con un for con el foreach con while y no la verga no funciona , el
foreach solo me mestra el un dato del primer registro y de los otros registro nop..


también probé metiendo todo el código dentro de la función y tampoco

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function datos(){
 
 
  $qsegciudadania="SELECT   dato1, datos2, dato3, dato4 from  datos where iddato='1235' " ;
 
  $eje=mysqli_query($conn,$qsegciudadania);
 
 
 
	foreach ($valor as $xrow)
	{
	echo "seguimiento n"."\n";
 
	echo	"fecha ".$xrow['dato1']."\n";
 
	}
 
return $xrow['dato1'];
 
}
 
 
 
 
->SetCellValue('A42',datos())

por fa demen una mano....
aclaro un comentario en el post no como un compañero que le escribe al whatsapp "men deme una mano con este query " y me envió una mano por el whatsapp jajajaja.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

ayuda con un reporte excel.

Publicado por kip (828 intervenciones) el 21/09/2016 23:45:47
Hola, pero esta bien que te guarde solo un dato ya que estas retornando solo un valor, fijate bien:

1
2
3
4
5
6
7
8
function datos($valor){
    foreach ($valor as $xrow)
    {
        echo "seguimiento n"."\n";
        echo    "fecha ".$xrow['dato1']."\n";
    }
    return $xrow['dato1']; //AQUI RETORNAS SOLO UN DATO YA QUE ESTA FUERA DEL FOREACH!
}

Si bien te muestra correctamente en la imagen que adjuntaste es porque si te fijas, haces un echo en cada iteracion, es por eso que alli si te funciona pero al llamar a la funcion el valor que retornara no es el que muestras por echo, sino el que estableces con return!

Lo que deberias hacer es almacenar en la iteracion del foreach un nuevo array que contendra cada data de la iteracion y luego de esto retornas un string de estos valores haciendo uso de implode(), algo asi:

1
2
3
4
5
6
7
8
function datos($valor){
    $dato_return = array();
    foreach ($valor as $xrow)
    {
        $dato_return[] = "seguimiento n\n fecha: {$xrow['dato1']}\n";
    }
    return implode('', $dato_return); //AQUI RETORNAS UN STRING DE TODOS LOS VALORES DEL ARRAY
}

Luego para poder almacenar correctamente los saltos de línea haces uso de una funcion de PHPExcel:

1
2
$objPHPExcel->getActiveSheet()->setCellValue('A42',datos($eje));
$objPHPExcel->getActiveSheet()->getStyle('A42')->getAlignment()->setWrapText(true); //AQUI

Debe funcionarte, si no lo hace nos lo comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Hfr

ayuda con un reporte excel.

Publicado por Hfr (88 intervenciones) el 22/09/2016 15:22:44
hola kip , pues si y no funciono jejeje
Capture
funciono bien, claro esta que los primeros 3 datos son son nulos

1
2
3
4
5
6
7
8
function datos($valor){
    $dato_return = array();
    foreach ($valor as $xrow)
    {
        $dato_return[] = "seguimiento n\n fecha: {$xrow['dato1']}\n"." \n avance: {$xrow['dato2']}\n"."\n estado: {$xrow['dato3']}\n";
    }
    return implode('', $dato_return); //AQUI RETORNAS UN STRING DE TODOS LOS VALORES DEL ARRAY
}

y cuadno le pego el dato 4 que no esta null
"\n total : {$xrow['dato4']}\n"

la celda sale false
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

ayuda con un reporte excel.

Publicado por kip (828 intervenciones) el 22/09/2016 15:44:15
Estas seguro de que aquella variable $xrow tiene un indice con nombre 'dato4'?

Prueba haciendo un var_dump() de esta para que te fijes bien, quizas alli esta el problema!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Hfr

ayuda con un reporte excel.

Publicado por Hfr (88 intervenciones) el 22/09/2016 16:03:46
si ya lo rebice de hecho imprimiendo en el index sale así jejeje
Capture





d
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

ayuda con un reporte excel.

Publicado por kip (828 intervenciones) el 22/09/2016 16:16:06
Y en la captura que colocaste, cual seria el dato4 ? Porque no lo veo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Hfr

ayuda con un reporte excel.

Publicado por Hfr (88 intervenciones) el 22/09/2016 17:05:58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$qsegciudadania="SELECT  fecha_seg_ciuda, dato1,dato2,dato3,dato4,  avacnes FROM situacion_actual_seguimiento_ciuadania

where cod_nnaj_segu_ciu ='$datocombo'";
 
  $eje=mysqli_query($conn,$qsegciudadania);
 
function datos($valor){
    $dato_return = array();
    foreach ($valor as $xrow)
    {
           $dato_return[] = "seguimiento n\n fecha: {$xrow['fecha_seg_ciuda']}\n"."\n dato1 : {$xrow['dato1']}\n"."\n dato2 : {$xrow['dato2']}\n"."\n dato3 : {$xrow['dato4']}\n"."\n dato4 : {$xrow['dato4']}\n"."\n avacnes : {$xrow['avacnes']}\n";
    }
    return implode('', $dato_return); //AQUI RETORNAS UN STRING DE TODOS LOS VALORES DEL ARRAY
}


dde

modifique los datos para que no se vea tanto chorrero

ahora solo hay dos registros

ambos tienen el dato 1 pero no el dos ni el tres ni el 4 y y los avances si hay datos
y muestra false en la celda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

ayuda con un reporte excel.

Publicado por Hfr (88 intervenciones) el 22/09/2016 18:27:50
mm bueno hice una prueba limpia de de datos simples, parce que es la codificación de los acentos en los registros .


pero no puedo invocarle la función utf8_encode() . aun array ni a la variable x$row.

la invoque aqui
return utf8_encode(implode('', $dato_return));

sssPNG

y listo el pollo toma todos los valores de los campos.
gracias kip
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de kip

ayuda con un reporte excel.

Publicado por kip (828 intervenciones) el 22/09/2016 21:14:31
Me alegra que lo hayas resuelto y gracias por compartirlo!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar