xls_datos_usuarios.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. require_once("../../include/nocache.php");
  3. require_once("../../include/constantes.php");
  4. require_once("../../include/bd_pdo.php");
  5. require_once("../../classes/ValidaSesion.php");
  6. require "../../include/phpSpreadsheet/autoload.php";
  7. use PhpOffice\PhpSpreadsheet\IOFactory;
  8. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  9. use PhpOffice\PhpSpreadsheet\Style\Border;
  10. use PhpOffice\PhpSpreadsheet\Style\Fill;
  11. use PhpOffice\PhpSpreadsheet\Style\Style;
  12. use PhpOffice\PhpSpreadsheet\Shared\Date;
  13. $menu = 8;
  14. $submenu = 86;
  15. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  16. $objSesion = new ValidaSesion($pdo, $submenu, APSA);
  17. if(!$objSesion->tieneAcceso()){
  18. $objSesion->terminaSesion();
  19. }
  20. //Obtiene datos de alumnos
  21. $stmt = $pdo->prepare('Select * from fs_checkusuario(1, 0, NULL) AS cu INNER JOIN "UsuarioAPSA" u ON cu."Usuario_id" = u."Usuario_id"');
  22. if(!$stmt->execute()){
  23. $errorDesc = "Ocurrió un error al cargar los datos";
  24. }else
  25. $datos_rs = $stmt->fetchAll();
  26. $stmt->closeCursor();
  27. $stmt = null;
  28. //--------
  29. //
  30. // Create new Spreadsheet object
  31. $spreadsheet = new Spreadsheet();
  32. // Set document properties
  33. $spreadsheet->getProperties()->setCreator('Ingeniería La Salle')
  34. ->setLastModifiedBy('Ingeniería La Salle')
  35. ->setTitle('Cambio de datos')
  36. ->setDescription('Reporte de cambio de datos.');
  37. // Rename worksheet
  38. $spreadsheet->getActiveSheet()->setTitle('Datos');
  39. $headerStyle = new Style();
  40. $headerStyle->applyFromArray(
  41. [
  42. 'fill' => [
  43. 'fillType' => Fill::FILL_SOLID,
  44. 'color' => ['argb' => 'FF001d68'],
  45. ],
  46. 'borders' => [
  47. 'bottom' => ['borderStyle' => Border::BORDER_THIN],
  48. 'right' => ['borderStyle' => Border::BORDER_MEDIUM],
  49. ],
  50. 'font' => [
  51. 'bold' => true,
  52. 'color' => ['argb' => 'FFFFFFFF'],
  53. ]
  54. ]
  55. );
  56. // Add some data
  57. $spreadsheet->setActiveSheetIndex(0)
  58. ->setCellValue('A1', 'Fecha')
  59. ->setCellValue('B1', 'Corregido')
  60. ->setCellValue('C1', 'Grado anterior')
  61. ->setCellValue('D1', 'Nombre anterior')
  62. ->setCellValue('E1', 'Grado nuevo')
  63. ->setCellValue('F1', 'Nombre nuevo')
  64. ->setCellValue('G1', 'CURP anterior')
  65. ->setCellValue('H1', 'CURP nuevo')
  66. ->setCellValue('I1', 'Correo institucional')
  67. ->setCellValue('J1', 'Correo personal')
  68. ->setCellValue('K1', 'Celular')
  69. ->setCellValue('L1', 'Teléfono fijo');
  70. $spreadsheet->getActiveSheet()->duplicateStyle($headerStyle, 'A1:L1');
  71. $highestRow = count($datos_rs)+1;
  72. $row = 2;
  73. foreach($datos_rs as $datos){
  74. $col = 1;
  75. $spreadsheet->getActiveSheet()
  76. ->setCellValueByColumnAndRow($col++, $row, date("d/m/Y H:i:s", strtotime($datos["CheckUsuario_fecha_revision"])))
  77. ->setCellValueByColumnAndRow($col++, $row, $datos["CheckUsuario_cambio"]?"SÍ":"NO")
  78. ->setCellValueByColumnAndRow($col++, $row, $datos["Usuario_grado_old"])
  79. ->setCellValueByColumnAndRow($col++, $row, $datos["Usuario_apellidos_old"]." ".$datos["Usuario_nombre_old"])
  80. ->setCellValueByColumnAndRow($col++, $row, $datos["Usuario_grado_new"])
  81. ->setCellValueByColumnAndRow($col++, $row, $datos["Usuario_apellidos_new"]." ".$datos["Usuario_nombre_new"])
  82. ->setCellValueByColumnAndRow($col++, $row, $datos["Usuario_curp_old"])
  83. ->setCellValueByColumnAndRow($col++, $row, $datos["Usuario_curp_new"]);
  84. $spreadsheet->getActiveSheet()->getStyle('A'.$row)
  85. ->getNumberFormat()
  86. ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME);
  87. $datosCon =[
  88. "tel_fijo"=>"",
  89. "tel_cel"=>"",
  90. "correo_lasalle"=>"",
  91. "correo_pers"=>"",
  92. ];
  93. $stmt = $pdo->prepare('Select * from fs_checkusuario_contacto(:usr)');
  94. $stmt->bindParam(":usr", $datos["Usuario_id"]);
  95. if(!$stmt->execute()){
  96. $errorDesc = "Ocurrió un error al cargar los datos";
  97. }else{
  98. foreach($stmt->fetchAll() as $contacto){
  99. if($contacto["TipoContacto_id"] == 3){
  100. if(strpos($contacto["CheckContacto_valor"], "lasall") && $datosCon["correo_lasalle"] ==""){
  101. $datosCon["correo_lasalle"] = $contacto["CheckContacto_valor"];
  102. }else{
  103. $datosCon["correo_pers"] = $contacto["CheckContacto_valor"];
  104. }
  105. }else{
  106. if($contacto["SubtipoContacto_id"] == 1){
  107. $datosCon["tel_fijo"] = $contacto["CheckContacto_valor"];
  108. }else{
  109. $datosCon["tel_cel"] = $contacto["CheckContacto_valor"];
  110. }
  111. }
  112. }
  113. }
  114. $stmt->closeCursor();
  115. $spreadsheet->getActiveSheet()
  116. ->setCellValueByColumnAndRow($col++, $row, $datosCon["correo_lasalle"])
  117. ->setCellValueByColumnAndRow($col++, $row, $datosCon["correo_pers"])
  118. ->setCellValueByColumnAndRow($col++, $row, $datosCon["tel_cel"])
  119. ->setCellValueByColumnAndRow($col++, $row, $datosCon["tel_fijo"]);
  120. $row++;
  121. }
  122. //Auto ajustar anchos
  123. foreach ($spreadsheet->getActiveSheet()->getColumnIterator() as $column) {
  124. $spreadsheet->getActiveSheet()->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
  125. }
  126. $spreadsheet->getActiveSheet()->setAutoFilter($spreadsheet->getActiveSheet()->calculateWorksheetDimension());
  127. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  128. $spreadsheet->setActiveSheetIndex(0);
  129. // Redirect output to a client’s web browser (Xlsx)
  130. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  131. header('Content-Disposition: attachment;filename="datosUsuarios_'.date("y-m-d").'.xlsx"');
  132. header('Cache-Control: max-age=0');
  133. // If you're serving to IE 9, then the following may be needed
  134. header('Cache-Control: max-age=1');
  135. // If you're serving to IE over SSL, then the following may be needed
  136. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  137. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
  138. header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
  139. header('Pragma: public'); // HTTP/1.0
  140. $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
  141. $writer->save('php://output');
  142. exit;
  143. ?>