PHP - Como hacer un fichero de excel seleccionando registros

 
Vista:
Imágen de perfil de Daniel
Val: 5
Ha aumentado su posición en 27 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como hacer un fichero de excel seleccionando registros

Publicado por Daniel (4 intervenciones) el 07/04/2019 17:03:54
Buenas Tardes,
Me voy a explicar un poco porque el titulo es un poco confuso.

Mi idea es realizar a partir de una tabla que se rellena con datos de la BD una exportación de fichero de excel, hasta ahí todo bien me funciona perfectamente etc, pero a la hora de implementar un checkbox que me permita seleccionar datos que vayan al fichero excel, no me funciona.

Os adjunto los codigos que tengo.

la tabla que esta en envio.php
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
<form method="POST" action="generar.php">
  <table class="table2 table-striped table-bordered">
      <tr>
        <th>ID</th>
        <th>DESTINATARIO</th>
        <th>TELEFONO</th>
        <th>POBLACION</th>
        <th>CP</th>
        <th>PROVINCIA</th>
        <th>DIRECCION</th>
        <th>OBSERVACIONES</th>
        <th>MARCAR COMO ENVIADO</th>
        <th>ENVIAR</th>
      </tr>
    </thead>
    <tbody>
      <?php
        while($row = mysqli_fetch_assoc($resul)){
      ?>
        <tr>
          <?php $id = $row["id_part"]; ?>
          <td style="border-bottom: 1px solid"><?php echo "ID IOL ",$row['id_part']?></td>
          <td style="border-bottom: 1px solid"><?php echo $row['nombreg']," ",$row['apellido1g']," ",$row['apellido2g']?></td>
          <td style="border-bottom: 1px solid"><?php echo $row['telg']?></td>
          <td style="border-bottom: 1px solid"><?php echo $row['localidad']?></td>
          <td style="border-bottom: 1px solid"><?php echo $row['cp']?></td>
          <td style="border-bottom: 1px solid"><?php echo $row['provinciag']?></td>
          <td style="border-bottom: 1px solid"><?php echo "C/ ",$row['calle']," ",$row['num']," ",$row['piso']," ",$row['puerta']?></td>
          <td style="border-bottom: 1px solid"><?php echo $row['observaciones']?></td>
          <td style="border-bottom: 1px solid;">
            <?php echo '<button type="button" class="btn btn-success" ' . 'id="'.$row['id_participante'].'" '. 'data-toggle="modal"'.  'data-target="#ok">' .'Confirmar'.'</button>';
            ?>
          </td>
          <td style="border-bottom: 1px solid; padding-left: 4%">
            <?php echo "<input type='radio' name='id_envios[$id]' value='1'" ?>
          </td>
        </tr>
      <?php
        }
      ?>
    </tbody>
  </table>
  <input type="submit" value="Generar Fichero Excel" class='btn btn-sm btn-success'>
</form>

Donde genero el excel
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
<?php
include('conexion.php');
 
if(isset($_POST["id_envios"])){
	foreach ($_POST["id_envios"] as $id => $id_envios) {
 
		$filename ="Solicitud_envios_IOL_".date("d-m-y").".xls";
		header("Content-Type: application/vnd.ms-excel");
		header("Content-Disposition: attachment; filename=".$filename);
 
		require('Classes/PHPExcel.php');
 
		$excel = new PHPExcel();
		$excel->getProperties()->setCreator('IOL')->setLastModifiedBy('IOL')->setTitle('Envios');
		$excel->setActiveSheetIndex(0);
		$pagina = $excel->getActiveSheet();
		$pagina->setTitle('Envios');
		$conn->set_charset('utf8');//evita errores con accentos y tildes y caracteres especiales
		$statement = $conn->prepare('SELECT * FROM ganadores WHERE id_part = "$id"');
		$statement->execute();
		$result= $statement->get_result();
 
		while($row = $result->fetch_array()) $envios[] = $row;
 
		//CABECERA
		$pagina->setCellValue('A1','Referencia');
		$pagina->setCellValue('B1','Destinatario');
		$pagina->setCellValue('C1','Telefóno Participante');
		$pagina->setCellValue('D1','Población');
		$pagina->setCellValue('E1','Codigo Postal');
		$pagina->setCellValue('F1','Provincia');
		$pagina->setCellValue('G1','Dirección');
		$pagina->setCellValue('H1','Observaciones');
 
		//ESTILO DEL EXCEL CABECERA
		$pagina->getStyle('A1:H1')->getFont()->setBold(true);
		$pagina->getStyle('A1:H1')->getFont()->getColor()->setRGB('FFFFFF');
		$pagina->getStyle('A1:H1')->getFont()->setSize(14);
		function cellColor($cells,$color){
			global $pagina;
			$pagina->getStyle($cells)->getFill()
			->applyFromArray(array('type' => PHPExcel_Style_Fill::FILL_SOLID,
			'startcolor' => array('rgb' => $color)
			));
		}
		cellColor('A1:H1', '000000');
 
		//DATOS QUE RELLENARAN EL EXCEL
		for($i = 0; $i< count($envios); $i++){
			$pagina->setCellValue('A'.($i+2), "ID IOL ".$envios[$i]['id_part']);
			$pagina->setCellValue('B'.($i+2), $envios[$i]['nombreg']." ".$envios[$i]['apellido1g']." ".$envios[$i]['apellido2g']);
			$pagina->setCellValue('C'.($i+2), $envios[$i]['telg']);
			$pagina->setCellValue('D'.($i+2), $envios[$i]['localidad']);
			$pagina->setCellValue('E'.($i+2), $envios[$i]['cp']);
			$pagina->setCellValue('F'.($i+2), $envios[$i]['provinciag']);
			$pagina->setCellValue('G'.($i+2), "C/ ".$envios[$i]['calle']." ".$envios[$i]['num']." ".$envios[$i]['piso']." ".$envios[$i]['puerta']);
			$pagina->setCellValue('H'.($i+2), $envios[$i]['observaciones']);
 
		}
 
		//AUTOSIZE DE CELDAS
		foreach (range('A', 'H') as $column)  {
			$pagina->getColumnDimension($column)->setAutoSize(true);
		}
		//GENERAR ARCHIVO EXCEl
		$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
		$objWriter->save('php://output');
	}
}
?>

Hay que destacar que ahora mismo si me descarga el excel solamente si tengo algún dato con el checkbox seleccionado, pero me lo descarga vació.
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