· 6 years ago · Jun 25, 2019, 11:00 PM
1CREATE TABLE IF NOT EXISTS `countries` (
2
3INSERT INTO `countries` (`id`, `countryCode`, `countryName`, `currencyCode`, `capital`, `continentName`) VALUES
4(1, 'AD', 'Andorra', 'EUR', 'Andorra la Vella', 'Europe'),
5(2, 'AE', 'United Arab Emirates', 'AED', 'Abu Dhabi', 'Asia'),
6(3, 'AF', 'Afghanistan', 'AFN', 'Kabul', 'Asia'),
7(4, 'AG', 'Antigua and Barbuda', 'XCD', 'St. John''s', 'North America'),
8(5, 'AI', 'Anguilla', 'XCD', 'The Valley', 'North America'),
9(6, 'AL', 'Albania', 'ALL', 'Tirana', 'Europe'),
10(7, 'AM', 'Armenia', 'AMD', 'Yerevan', 'Asia'),
11(8, 'AO', 'Angola', 'AOA', 'Luanda', 'Africa'),
12(9, 'AQ', 'Antarctica', '', '', 'Antarctica'),
13(10, 'AR', 'Argentina', 'ARS', 'Buenos Aires', 'South America'),
14
15ALTER TABLE `countries`
16 ADD PRIMARY KEY (`id`);
17
18<!DOCTYPE html>
19<html>
20 <head>
21 <meta charset="utf-8" />
22 <title>Reporte de excel con PHP y MySQL</title>
23 </head>
24 <body>
25 <div>
26 <h1>REPORTE DE EXCEL CON PHP Y MYSQL</h1>
27 <div>
28 <a href="exportar.php"> Generar reporte en Excel</a>
29 </div>
30 </div>
31 </body>
32</html>
33
34<?php
35if (PHP_SAPI == 'cli')
36 die('Este ejemplo sólo se puede ejecutar desde un navegador Web');
37
38/** Incluye PHPExcel */
39require_once 'Librerias/Classes/PHPExcel.php';
40// Crear nuevo objeto PHPExcel
41$objPHPExcel = new PHPExcel();
42
43// Propiedades del documento
44$objPHPExcel->getProperties()->setCreator("Obed Alvarado")
45 ->setLastModifiedBy("Obed Alvarado")
46 ->setTitle("Office 2010 XLSX Documento de prueba")
47 ->setSubject("Office 2010 XLSX Documento de prueba")
48 ->setDescription("Documento de prueba para Office 2010 XLSX, generado usando clases de PHP.")
49 ->setKeywords("office 2010 openxml php")
50 ->setCategory("Archivo con resultado de prueba");
51
52
53
54// Combino las celdas desde A1 hasta E1
55$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:E1');
56
57$objPHPExcel->setActiveSheetIndex(0)
58 ->setCellValue('A1', 'REPORTE DE PAISES')
59 ->setCellValue('A2', 'CODIGO')
60 ->setCellValue('B2', 'NOMBRE')
61 ->setCellValue('C2', 'MONEDA')
62 ->setCellValue('D2', 'CAPITAL')
63 ->setCellValue('E2', 'CONTINENTE');
64
65// Fuente de la primera fila en negrita
66$boldArray = array('font' => array('bold' => true,),'alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER));
67
68$objPHPExcel->getActiveSheet()->getStyle('A1:E2')->applyFromArray($boldArray);
69
70
71
72//Ancho de las columnas
73$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
74$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
75$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
76$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
77$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
78
79/*Extraer datos de MYSQL*/
80 # conectare la base de datos
81 $con=@mysqli_connect('localhost', 'root', 'pass', 'test');
82 if(!$con){
83 die("imposible conectarse: ".mysqli_error($con));
84 }
85 if (@mysqli_connect_errno()) {
86 die("Connect failed: ".mysqli_connect_errno()." : ". mysqli_connect_error());
87 }
88 $sql="SELECT * FROM countries order by countryName";
89 $query=mysqli_query($con,$sql);
90 $cel=3;//Numero de fila donde empezara a crear el reporte
91 while ($row=mysqli_fetch_array($query)){
92 $countryCode=$row['countryCode'];
93 $countryName=$row['countryName'];
94 $currencyCode=$row['currencyCode'];
95 $capital=$row['capital'];
96 $continentName=$row['continentName'];
97
98 $a="A".$cel;
99 $b="B".$cel;
100 $c="C".$cel;
101 $d="D".$cel;
102 $e="E".$cel;
103 // Agregar datos
104 $objPHPExcel->setActiveSheetIndex(0)
105 ->setCellValue($a, $countryCode)
106 ->setCellValue($b, $countryName)
107 ->setCellValue($c, $currencyCode)
108 ->setCellValue($d, $capital)
109 ->setCellValue($e, $continentName);
110
111 $cel+=1;
112 }
113
114/*Fin extracion de datos MYSQL*/
115$rango="A2:$e";
116$styleArray = array('font' => array( 'name' => 'Arial','size' => 10),
117'borders'=>array('allborders'=>array('style'=> PHPExcel_Style_Border::BORDER_THIN,'color'=>array('argb' => 'FFF')))
118);
119$objPHPExcel->getActiveSheet()->getStyle($rango)->applyFromArray($styleArray);
120// Cambiar el nombre de hoja de cálculo
121$objPHPExcel->getActiveSheet()->setTitle('Reporte de paises');
122
123
124// Establecer índice de hoja activa a la primera hoja , por lo que Excel abre esto como la primera hoja
125$objPHPExcel->setActiveSheetIndex(0);
126
127
128// Redirigir la salida al navegador web de un cliente ( Excel5 )
129header('Content-Type: application/vnd.ms-excel');
130header('Content-Disposition: attachment;filename="reporte.xls"');
131header('Cache-Control: max-age=0');
132// Si usted está sirviendo a IE 9 , a continuación, puede ser necesaria la siguiente
133header('Cache-Control: max-age=1');
134
135// Si usted está sirviendo a IE a través de SSL , a continuación, puede ser necesaria la siguiente
136header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
137header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
138header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
139header ('Pragma: public'); // HTTP/1.0
140
141$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
142$objWriter->save('php://output');
143exit;