How to create a report per month in excel from php and mysql?

0

This is my script where I generate my report in excel which works perfectly, what I'm looking for is that you can make the downloads indicating the month to avoid downloading all the months in a single file.

reporteexcel.php

<?php
    $conexion = new mysqli('localhost','root','admin123','database',3306);
    if (mysqli_connect_errno()) {
        printf("La conexión con el servidor de base de datos falló: %s\n", mysqli_connect_error());
        exit();
    }

    $consulta = "SELECT servicio_No, hora, tipo_Ambulancia, tipo_Traslado, horario, cliente, fecha_Solicitud, hora1, hor, regulador, primer_Nombre, segundo_Nombre, primer_Apellido, segundo_Apellido, tipo_Doc, numero, edad, unidad_Edad, sexo, telefono, zona, tipo_Seguro, prestador, diagnostico, codigo_CIE, medico, clave_Traslado, aux_Aph, movil, ovem, departamento, ciudad, institucion, ubicacion, procedimiento, especificacion, proteccion, soporte_TAB, soporte_TAM, soporte_AyB, soporte_C, codigo_AUT, regimen_Plan, solicita, departamento1, ciudad1, institucion1, ubicacion1, acepta1, notas1, departamento2, ciudad2, institucion2, ubicacion2, acepta2, notas2 FROM servicio ORDER BY servicio_No";
    $resultado = $conexion->query($consulta);
    if($resultado->num_rows > 0 ){

        date_default_timezone_set('America/Bogota');

        if (PHP_SAPI == 'cli')
            die('Este archivo solo se puede ver desde un navegador web');

        /** Se agrega la libreria PHPExcel */
        require_once 'Classes/PHPExcel.php';

        // Se crea el objeto PHPExcel
        $objPHPExcel = new PHPExcel();

        // Se asignan las propiedades del libro
        $objPHPExcel->getProperties()->setCreator("Trujii") //Autor
                             ->setLastModifiedBy(";D") //Ultimo usuario que lo modificó
                             ->setTitle("Reporte Excel con PHP y MySQL")
                             ->setSubject("Reporte Excel con PHP y MySQL")
                             ->setDescription("Reporte de servicios")
                             ->setKeywords("reporte servicio")
                             ->setCategory("Reporte excel");

        $tituloReporte = "Relación de servicios";
        $titulosColumnas = array('SERVICIO NO', 'HORA', 'TIPO AMBULANCIA', 'TIPO TRASLADO', 'HORARIO', 'CLIENTE', 'FECHA SOLICITUD', 'HORA', 'HOR', 'REGULADOR', 'PRIMER NOMBRE', 'SEGUNDO NOMBRE', 'PRIMER APELLIDO', 'SEGUNDO APELLIDO', 'TIPO DOCUMENTO', 'NUMERO', 'EDAD', 'UNIDAD EDAD', 'SEXO', 'TELEFONO', 'ZONA', 'TIPO SEGURO', 'PRESTADOR', 'DIAGNOSTICO', 'CODIGO CIE', 'MEDICO', 'CLAVE TRASLADO', 'AUX/APH', 'MOVIL', 'OVEM', 'DEPARTAMENTO', 'CIUDAD', 'INSTITUCION', 'UBICACION', 'PROCEDIMIENTO', 'ESPECIFICACION', 'PROTECCION', 'SOPORTE TAB', 'SOPORTE TAM', 'SOPORTE A Y B', 'SOPORTE C', 'CODIGO AUT', 'REGIMEN O PLAN', 'SOLICITA', 'DEPARTAMENTO', 'CIUDAD', 'INSTITUCION', 'UBICACION', 'ACEPTA', 'NOTAS', 'DEPARTAMENTO', 'CIUDAD', 'INSTITUCION', 'UBICACION', 'ACEPTA', 'NOTAS');

        $objPHPExcel->setActiveSheetIndex(0)
                    ->mergeCells('A1:BD1');

        // Se agregan los titulos del reporte
        $objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue('A1',$tituloReporte)
                    ->setCellValue('A3',  $titulosColumnas[0])
                    ->setCellValue('B3',  $titulosColumnas[1])
                    ->setCellValue('C3',  $titulosColumnas[2])
                    ->setCellValue('D3',  $titulosColumnas[3])
                    ->setCellValue('E3',  $titulosColumnas[4])
                    ->setCellValue('F3',  $titulosColumnas[5])
                    ->setCellValue('G3',  $titulosColumnas[6])
                    ->setCellValue('H3',  $titulosColumnas[7])
                    ->setCellValue('I3',  $titulosColumnas[8])
                    ->setCellValue('J3',  $titulosColumnas[9])
                    ->setCellValue('K3',  $titulosColumnas[10])
                    ->setCellValue('L3',  $titulosColumnas[11])
                    ->setCellValue('M3',  $titulosColumnas[12])
                    ->setCellValue('N3',  $titulosColumnas[13])
                    ->setCellValue('O3',  $titulosColumnas[14])
                    ->setCellValue('P3',  $titulosColumnas[15])
                    ->setCellValue('Q3',  $titulosColumnas[16])
                    ->setCellValue('R3',  $titulosColumnas[17])
                    ->setCellValue('S3',  $titulosColumnas[18])
                    ->setCellValue('T3',  $titulosColumnas[19])
                    ->setCellValue('U3',  $titulosColumnas[20])
                    ->setCellValue('V3',  $titulosColumnas[21])
                    ->setCellValue('W3',  $titulosColumnas[22])
                    ->setCellValue('X3',  $titulosColumnas[23])
                    ->setCellValue('Y3',  $titulosColumnas[24])
                    ->setCellValue('Z3',  $titulosColumnas[25])
                    ->setCellValue('AA3', $titulosColumnas[26])
                    ->setCellValue('AB3', $titulosColumnas[27])
                    ->setCellValue('AC3', $titulosColumnas[28])
                    ->setCellValue('AD3', $titulosColumnas[29])
                    ->setCellValue('AE3', $titulosColumnas[30])
                    ->setCellValue('AF3', $titulosColumnas[31])
                    ->setCellValue('AG3', $titulosColumnas[32])
                    ->setCellValue('AH3', $titulosColumnas[33])
                    ->setCellValue('AI3', $titulosColumnas[34])
                    ->setCellValue('AJ3', $titulosColumnas[35])
                    ->setCellValue('AK3', $titulosColumnas[36])
                    ->setCellValue('AL3', $titulosColumnas[37])
                    ->setCellValue('AM3', $titulosColumnas[38])
                    ->setCellValue('AN3', $titulosColumnas[39])
                    ->setCellValue('AO3', $titulosColumnas[40])
                    ->setCellValue('AP3', $titulosColumnas[41])
                    ->setCellValue('AQ3', $titulosColumnas[42])
                    ->setCellValue('AR3', $titulosColumnas[43])
                    ->setCellValue('AS3', $titulosColumnas[44])
                    ->setCellValue('AT3', $titulosColumnas[45])
                    ->setCellValue('AU3', $titulosColumnas[46])
                    ->setCellValue('AV3', $titulosColumnas[47])
                    ->setCellValue('AW3', $titulosColumnas[48])
                    ->setCellValue('AX3', $titulosColumnas[49])
                    ->setCellValue('AY3', $titulosColumnas[50])
                    ->setCellValue('AZ3', $titulosColumnas[51])
                    ->setCellValue('BA3', $titulosColumnas[52])
                    ->setCellValue('BB3', $titulosColumnas[53])
                    ->setCellValue('BC3', $titulosColumnas[54])
                    ->setCellValue('BD3', $titulosColumnas[55]);

        //Se agregan los datos de los alumnos
        $i = 4;
        while ($fila = $resultado->fetch_array()) {
            $objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue('A'.$i,  $fila['servicio_No'])
                    ->setCellValue('B'.$i,  $fila['hora'])
                    ->setCellValue('C'.$i,  $fila['tipo_Ambulancia'])
                    ->setCellValue('D'.$i,  $fila['tipo_Traslado'])
                    ->setCellValue('E'.$i,  $fila['horario'])
                    ->setCellValue('F'.$i,  $fila['cliente'])
                    ->setCellValue('G'.$i,  $fila['fecha_Solicitud'])
                    ->setCellValue('H'.$i,  $fila['hora1'])
                    ->setCellValue('I'.$i,  $fila['hor'])
                    ->setCellValue('J'.$i,  $fila['regulador'])
                    ->setCellValue('K'.$i,  $fila['primer_Nombre'])
                    ->setCellValue('L'.$i,  $fila['segundo_Nombre'])
                    ->setCellValue('M'.$i,  $fila['primer_Apellido'])
                    ->setCellValue('N'.$i,  $fila['segundo_Apellido'])
                    ->setCellValue('O'.$i,  $fila['tipo_Doc'])
                    ->setCellValue('P'.$i,  $fila['numero'])
                    ->setCellValue('Q'.$i,  $fila['edad'])
                    ->setCellValue('R'.$i,  $fila['unidad_Edad'])
                    ->setCellValue('S'.$i,  $fila['sexo'])
                    ->setCellValue('T'.$i,  $fila['telefono'])
                    ->setCellValue('U'.$i,  $fila['zona'])
                    ->setCellValue('V'.$i,  $fila['tipo_Seguro'])
                    ->setCellValue('W'.$i,  $fila['prestador'])
                    ->setCellValue('X'.$i,  $fila['diagnostico'])
                    ->setCellValue('Y'.$i,  $fila['codigo_CIE'])
                    ->setCellValue('Z'.$i,  $fila['medico'])
                    ->setCellValue('AA'.$i, $fila['clave_Traslado'])
                    ->setCellValue('AB'.$i, $fila['aux_Aph'])
                    ->setCellValue('AC'.$i, $fila['movil'])
                    ->setCellValue('AD'.$i, $fila['ovem'])
                    ->setCellValue('AE'.$i, $fila['departamento'])
                    ->setCellValue('AF'.$i, $fila['ciudad'])
                    ->setCellValue('AG'.$i, $fila['institucion'])
                    ->setCellValue('AH'.$i, $fila['ubicacion'])
                    ->setCellValue('AI'.$i, $fila['procedimiento'])
                    ->setCellValue('AJ'.$i, $fila['especificacion'])
                    ->setCellValue('Ak'.$i, $fila['proteccion'])
                    ->setCellValue('AL'.$i, $fila['soporte_TAB'])
                    ->setCellValue('AM'.$i, $fila['soporte_TAM'])
                    ->setCellValue('AN'.$i, $fila['soporte_AyB'])
                    ->setCellValue('AO'.$i, $fila['soporte_C'])
                    ->setCellValue('AP'.$i, $fila['codigo_AUT'])
                    ->setCellValue('AQ'.$i, $fila['regimen_Plan'])
                    ->setCellValue('AR'.$i, $fila['solicita'])
                    ->setCellValue('AS'.$i, $fila['departamento1'])
                    ->setCellValue('AT'.$i, $fila['ciudad1'])
                    ->setCellValue('AU'.$i, $fila['institucion1'])
                    ->setCellValue('AV'.$i, $fila['ubicacion1'])
                    ->setCellValue('AW'.$i, $fila['acepta1'])
                    ->setCellValue('AX'.$i, $fila['notas1'])
                    ->setCellValue('AY'.$i, $fila['departamento2'])
                    ->setCellValue('AZ'.$i, $fila['ciudad2'])
                    ->setCellValue('BA'.$i, $fila['institucion2'])
                    ->setCellValue('BB'.$i, $fila['ubicacion2'])
                    ->setCellValue('BC'.$i, $fila['acepta2'])
                    ->setCellValue('BD'.$i, utf8_encode($fila['notas2']));
                    $i++;
        }

        $estiloTituloReporte = array(
            'font' => array(
                'name'      => 'Verdana',
                'bold'      => true,
                'italic'    => false,
                'strike'    => false,
                'size' =>20,
                    'color'     => array(
                        'rgb' => 'FFFFFF'
                    )
            ),
            'fill' => array(
                'type'  => PHPExcel_Style_Fill::FILL_SOLID,
                'color' => array('argb' => 'FF220835')
            ),
            'borders' => array(
                'allborders' => array(
                    'style' => PHPExcel_Style_Border::BORDER_NONE                    
                )
            ), 
            'alignment' =>  array(
                    'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
                    'vertical'   => PHPExcel_Style_Alignment::VERTICAL_CENTER,
                    'rotation'   => 0,
                    'wrap'          => TRUE
            )
        );

        $estiloTituloColumnas = array(
            'font' => array(
                'name'      => 'Arial',
                'bold'      => true,                          
                'color'     => array(
                    'rgb' => 'FFFFFF'
                )
            ),
            'fill'  => array(
                'type'      => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
                'rotation'   => 90,
                'startcolor' => array(
                    'rgb' => '00abdd'
                ),
                'endcolor'   => array(
                    'argb' => '00abdd'
                )
            ),
            'borders' => array(
                'top'     => array(
                    'style' => PHPExcel_Style_Border::BORDER_MEDIUM ,
                    'color' => array(
                        'rgb' => '143860'
                    )
                ),
                'bottom'     => array(
                    'style' => PHPExcel_Style_Border::BORDER_MEDIUM ,
                    'color' => array(
                        'rgb' => '143860'
                    )
                )
            ),
            'alignment' =>  array(
                    'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
                    'vertical'   => PHPExcel_Style_Alignment::VERTICAL_CENTER,
                    'wrap'          => TRUE
            ));

        $estiloInformacion = new PHPExcel_Style();
        $estiloInformacion->applyFromArray(
            array(
                'font' => array(
                'name'      => 'Arial',               
                'color'     => array(
                    'rgb' => '000000'
                )
            ),
            'fill'  => array(
                'type'      => PHPExcel_Style_Fill::FILL_SOLID,
                'color'     => array('argb' => '00abdd')
            ),
            'borders' => array(
                'left'     => array(
                    'style' => PHPExcel_Style_Border::BORDER_THIN ,
                    'color' => array(
                        'rgb' => '3a2a47'
                    )
                )             
            )
        ));

        $objPHPExcel->getActiveSheet()->getStyle('A1:BD1')->applyFromArray($estiloTituloReporte);
        $objPHPExcel->getActiveSheet()->getStyle('A3:BD3')->applyFromArray($estiloTituloColumnas);      
        $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A4:BD".($i-1));

        for($i = 'A'; $i <= 'BD'; $i++){
            $objPHPExcel->setActiveSheetIndex(0)            
                ->getColumnDimension($i)->setAutoSize(TRUE);
        }

        // Se asigna el nombre a la hoja
        $objPHPExcel->getActiveSheet()->setTitle('servicio');

        // Se activa la hoja para que sea la que se muestre cuando el archivo se abre
        $objPHPExcel->setActiveSheetIndex(0);
        // Inmovilizar paneles 
        //$objPHPExcel->getActiveSheet(0)->freezePane('A4');
        $objPHPExcel->getActiveSheet(0)->freezePaneByColumnAndRow(0,49);

        // Se manda el archivo al navegador web, con el nombre que se indica (Excel2007)
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="ReportedeSERVICIOS.xlsx"');
        header('Cache-Control: max-age=0');

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output');
        exit;

    }
    else{
        print_r('No hay resultados para mostrar');
    }
?>
    
asked by Cristian Antonio Trujillo Gris 18.05.2018 в 14:38
source

0 answers