PHP - reporte en excel

   
Vista:
Imágen de perfil de Hfr

reporte en excel

Publicado por Hfr (84 intervenciones) el 26/04/2016 22:20:06
Hola chicos como están. espero que bien
yo he hecho varios resortes con excel de esta forma

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
 
include ("../con_mysql.php");
 
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
 
/********************************************
Write the query, call it, and find the number of fields
********************************************/
$xconsulta =mysqli_query($xCon, "select   * from tabla");
 
$campos = mysqli_num_fields($xconsulta);
$i=0;
 
 
ob_start();
echo "&nbsp;<center><table border=\"1\" align=\"center\" CELLPADDING=\"0\">";
echo "<tr bgcolor=\"#336666\" WIDTH=\"40\" HEIGHT=\"30\">
  <td><font color=\"#ffffff\"><strong>id principal</strong></font></td>
  <td><font color=\"#ffffff\"><strong>id princpal del nnaj</strong></font></td>
  <TD><font color=\"#ffffff\"><strong>fecha</strong></font></TD>
  <td><font color=\"#ffffff\"><strong>desiscion</strong></font></td>
  <td><font color=\"#ffffff\"><strong>resolucion de conflictos </strong></font></td>
  <td><font color=\"#ffffff\"><strong>relaciones interpersonales </strong></font></td>
  <td><font color=\"#ffffff\"><strong>persepcion de si mismo</strong></font></td>
  <td><font color=\"#ffffff\"><strong>reconocimiento culturales </strong></font></td>
</tr>";
while($row=mysqli_fetch_array($xconsulta))
{
    echo "<tr>";
     for($j=0; $j<$campos; $j++) {
         echo "<td>".$row[$j]."</td>";
     }
     echo "</tr>";
}
echo "</table>";

//$reporte = ob_get_clean(); 
 
/********************************************
Write the query, call it, and find the number of fields
/********************************************/
$xconsulta2 =mysqli_query( $xCon, "SELECT * from noticias");

$campos2 = mysqli_num_fields($xconsulta2);
$i2=0;



//ob_start();
echo "&nbsp;<center> <div class=\"CSSTableGenerator\" ><table border=\"1\" align=\"center\">";
echo "<tr bgcolor=\"#336666\">
  <td><font color=\"#ffffff\"><strong>ID</strong></font></td>
  <td><font color=\"#ffffff\"><strong>TITULAR</strong></font></td>
  <TD><font color=\"#ffffff\"><strong>RESUMEN</strong></font></TD>
  <td><font color=\"#ffffff\"><strong>NOTICIA</strong></font></td>
  <td><font color=\"#ffffff\"><strong>IMAGEN</strong></font></td>
  <td><font color=\"#ffffff\"><strong>FECHA</strong></font></td>

</tr>";
while($row2=mysqli_fetch_array($xconsulta2))
{
    echo "<tr>";
     for($j2=0; $j2<$campos; $j2++) {
         echo "<td>".$row2[$j2]."</td>";
     }
     echo "</tr>";
}
echo "</table></div>";

$reporte = ob_get_clean();


header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=consulta.xls");
header("Pragma: no-cache");
header("Expires: 0");

echo $reporte;
funcionan sin problema.


yo hago unos reportes con con un archivo RTF, Ahora esos reportes me los cambiaron por un archivo ecxel,
el excel viene con una formulario ya definido, entonces quería saber si el reporte nuevo en excel se puede hacer de una forma muy similar como construi el RTF DE Word, para no hacerlo como definí el primer código

agradezco sus opiniones y comentarios.
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 xve

reporte en excel

Publicado por xve (5522 intervenciones) el 27/04/2016 07:44:32
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

reporte en excel

Publicado por Hfr (84 intervenciones) el 27/04/2016 15:07:30
Hola xve, esta super el link que posteaste.
pero en el excel que yo tengo ya fijaron un formulario estándar,
lo que yo debo hacer es cojer ese excel y pegarle datos de la dbo y y descargar una copia del archivo con los datos de la consulta. tal como se hace un rtf de word, pero esta vez es con excel.
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

reporte en excel

Publicado por Hfr (84 intervenciones) el 02/05/2016 15:38:38
Hola investigue un poco y aqui tengo lo que estaba buscando
de esta forma con las librerias de php excel
puedo abrir una archivo excel, editarlo y bajar una copia con datos de la dbo.

funciona bn.

pero , siempre ay un pero

me arroja estas advertencias
Warning: preg_match() expects parameter 2 to be string, array given in C:\xampp\htdocs\pruebas\librerias\excel\Classes\PHPExcel\Cell\DefaultValueBinder.php on line 95

esto ocurre Cuando traigo datos de la dbo que no son Strgin como fechas enteros y otros.
voy a probar convirtiendo las variables de la consulta a string.
si no funciona
probare acomodándole los campos del archivo
es decir que si en la celda 18 la consulta pega un date en el archivo lo dejare como date o fecha creo que sale jejejeje.


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
 // cadenas d conxion a la dbo  
include ("../con_mysql.php");
require_once ('../../librerias/excel/Classes/PHPExcel.php'); //  liberrias de php ecxel  
 
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
$consulta= mysqli_query($xCon, "select   dato from tablax  where dato = '1'");  //    consulta  de la dbo
while ($fila= mysqli_fetch_array($consulta))
 
// cicolo para guardar los datos de la consultya y utilizarlas 
	{
 
 
	$Datosx=$fila['dato'];
 
 
	}
//FUNCION PAR A GENERAR UN CODIGO ALEATRIO. DEL REPORTE 
 
	function generarCodigo($longitud) {
 $key = '';
 $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
 $max = strlen($pattern)-1;
 for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
 return $key;
}
 
//Ejemplo de uso
 
echo $CODIGO=generarCodigo(6); // genera un código de 6 caracteres de longitud.
// Camino a los include
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');
// PHPExcel
 
// PHPExcel_IOFactory
include '../../librerias/excel/Classes/PHPExcel/IOFactory.php';
// Creamos un objeto PHPExcel
$objPHPExcel = new PHPExcel();
// Leemos un archivo Excel 2007
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load("reporte.xlsx");// NOMBRE DLE ARCHIVO EN LA CARPETA 
// Indicamos que se pare en la hoja uno del libro
$objPHPExcel->setActiveSheetIndex(0);
//Escribimos en la hoja en la celda B1
$objPHPExcel->getActiveSheet()  ->SetCellValue('A18',$Datosx);
 
// Color rojo al texto
 
//Guardamos el archivo en formato Excel 2007
//Si queremos trabajar con Excel 2003, basta cambiar el 'Excel2007' por 'Excel5' y el nombre del archivo de salida cambiar su formato por '.xls'
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
 
 
$objWriter->save($CODIGO."reporte.xlsx");
$variable=$CODIGO."reporte.xlsx";
?>
 
<a href="/pruebas/php/reporte_excel/<?php  echo $variable; ?>">reporte en excel </a>
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

reporte en excel

Publicado por Hfr (84 intervenciones) el 02/05/2016 16:57:14
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
 // cadenas d conxion a la dbo  
include ("../con_mysql.php");
require_once ('../../librerias/excel/Classes/PHPExcel.php'); //  liberrias de php ecxel  
 
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
 
 
$consulta= mysqli_query($xCon, "select identificacion , nombre, apellido, sexo, edad, fecha_naci, lugar_nac, pais  from PERSONAS  where COD_PERSONA='1234567890'");
 
$row=mysqli_fetch_array($consulta,MYSQLI_NUM);
 
 
 
 
 
 
 
//FUNCION PAR A GENERAR UN CODIGO ALEATRIO. DEL REPORTE 
 
	function generarCodigo($longitud) {
 $key = '';
 $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
 $max = strlen($pattern)-1;
 for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
 return $key;
}
 
//Ejemplo de uso
 
echo $CODIGO=generarCodigo(6); // genera un código de 6 caracteres de longitud.
// Camino a los include
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');
// PHPExcel
 
// PHPExcel_IOFactory
include '../../librerias/excel/Classes/PHPExcel/IOFactory.php';
// Creamos un objeto PHPExcel
$objPHPExcel = new PHPExcel();
// Leemos un archivo Excel 2007
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load("reporte.xlsx");// NOMBRE del ARCHIVO EN LA CARPETA 
// Indicamos que se pare en la hoja uno del libro
$objPHPExcel->setActiveSheetIndex(0);
//Escribimos en la hoja en la celda B1
$objPHPExcel->getActiveSheet()  ->SetCellValue('A18',$row[2]."   ". $row[3] ) //nombr apellido 
								->SetCellValue('B22',$row[4])//sexo
								->SetCellValue('A20',$row[6])//fecha de  nacimiento 
								;
 
 
// Color rojo al texto
 
//Guardamos el archivo en formato Excel 2007
//Si queremos trabajar con Excel 2003, basta cambiar el 'Excel2007' por 'Excel5' y el nombre del archivo de salida cambiar su formato por '.xls'
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
 
 
$objWriter->save($CODIGO."reporte.xlsx");
$variable=$CODIGO."reporte.xlsx";
?>
 
<a href="/pruebas/php/reporte_excel/<?php  echo $variable; ?>">reporte en excel </a>

ok este ya quedo full.
los errores era por los resultados de la consulta.
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 xve

reporte en excel

Publicado por xve (5522 intervenciones) el 02/05/2016 20:20:01
Excelente!!! gracias por compartirlo!!!
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