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');
}
?>