<?php 
require_once('../../../includes/load.php');
require_once('../../../vendor/autoload.php');
 

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;


$OpcionesAnio = $_POST['opciones'];
$OpcionesMes = $_POST['opciones1'];
$OpcionesTGranja = $_POST['opciones2'];
$OpcionesZona = $_POST['opciones3'];

// Verificar si se seleccionaron opciones
if (!empty($OpcionesAnio) && !empty($OpcionesMes) && !empty($OpcionesTGranja) && !empty($OpcionesZona)) {
    // Crear la parte de la consulta SQL con el IN
    $OpcionesAnio = implode(',', array_map('intval', $OpcionesAnio));
    $OpcionesMes = implode(',', array_map('intval', $OpcionesMes));

    // Escapar y entrecomillar cada valor seleccionado
    $OpcionesTGranja = array_map(function($OpcionesTGranja) {
    return "'" . ($OpcionesTGranja) . "'";
    }, $OpcionesTGranja);

    $OpcionesZona = array_map(function($OpcionesZona) {
    return "'" . ($OpcionesZona) . "'";
    }, $OpcionesZona);

    // Crear la parte de la consulta SQL con el IN
    $OpcionesTGranja = implode(',', array_map('strval', $OpcionesTGranja));
    $OpcionesZona = implode(',', array_map('strval', $OpcionesZona));

    // Realizar la consulta SELECT con el IN
    $consulta = $db->query("SELECT op.Campana, g.GNombre, op.Reuso, op.TipoGranja, ts.TSNombre, op.id, do.id as IdDetalleOperacion, zona.ZNombre, op.Anio, case (op.Mes) WHEN 1 THEN 'Enero' WHEN 2 THEN 'Febrero' WHEN 3 THEN 'Marzo' WHEN 4 THEN 'Abril' WHEN 5 THEN 'Mayo' WHEN 6 THEN 'Junio' WHEN 7 THEN 'Julio' WHEN 8 THEN 'Agosto' WHEN 9 THEN 'Septiembre' WHEN 10 THEN 'Octubre' WHEN 11 THEN 'Noviembre' WHEN 12 THEN 'Diciembre' END NMes, op.Estado, date_format(op.FechaUltimaVenta, '%d-%m-%Y') as FechaUltimaVenta, date_format(op.FechaInicioLimpieza, '%d-%m-%Y') as FechaInicioLimpieza, date_format(op.FechaInicioRecepcion, '%d-%m-%Y') as FechaInicioRecepcion, date_format(op.FechaTerminoRecepcion, '%d-%m-%Y') as FechaTerminoRecepcion, date_format(op.FechaInicioCompost, '%d-%m-%Y') as FechaInicioCompost,date_format(op.FechaTerminoCompost, '%d-%m-%Y') as FechaTerminoCompost,date_format(op.FechaTerminoLimpiezaInicial, '%d-%m-%Y') as FechaTerminoLimpiezaInicial,date_format(op.FechaInicioTumbadoCompost, '%d-%m-%Y') as FechaInicioTumbadoCompost,date_format( op.FechaTerminoTumbadoCompost, '%d-%m-%Y') as FechaTerminoTumbadoCompost,date_format( op.FechaRedDragon, '%d-%m-%Y') as FechaRedDragon,date_format(op.FechaEntregaGranja, '%d-%m-%Y') as FechaEntregaGranja,date_format( op.FechaIngresoPollosBB, '%d-%m-%Y') as FechaIngresoPollosBB, op.TPreparacionLimpieza, op.TCompost, op.TLimpiezaInicial, op.TDescanso, op.TVacioSanitario, op.TLimpieza, op.TDescansoProduccion,date_format(do.FechaActividad, '%d-%m-%Y') as FechaActividad, op.IdAnioInicioLimpieza, op.IdSemanaInicioLimpieza, op.IdMesInicioLimpieza, a.ANombre, gr.GNombre AS Expr1, s.SNombre, do.Jornal,do.HorasExtras, do.HorasMaquina, do.HorasExtrasMaquina, do.HEJornal, do.IdMesIngresoRealizaActividad,do.ObservacionDetalleOperacion, g.AreaCrianza, g.AreaLimpieza, g.AreaTrabajo, do.JornalTractorista, do.HorasExtrasTractorista, do.HEJornalTractorista, do.CantidadTractor FROM  zona INNER JOIN granja g ON zona.IdZona = g.IdZona INNER JOIN operacion op ON g.IdGranja = op.IdGranja INNER JOIN tiposervicio ts ON op.IdTipoServicio = ts.IdTipoServicio INNER JOIN detalleoperacion do ON op.id = do.IdOperacion INNER JOIN actividad a ON do.IdActividad = a.IdActividad INNER JOIN grupo gr ON do.IdGrupo = gr.IdGrupo INNER JOIN supervisor s ON do.IdSupervisor = s.IdSupervisor INNER JOIN areagerenciaoperaciones ar ON op.IdAreaGerenciaOperaciones = ar.IdAreaGerenciaOperaciones WHERE (ar.CodigoGO = 'Lge') AND  op.Estado = 'Terminado' AND op.IdTipoServicio = 1 AND op.Anio IN ($OpcionesAnio) AND op.Mes IN ($OpcionesMes) AND op.TipoGranja IN ($OpcionesTGranja) AND zona.ZNombre IN ($OpcionesZona) ORDER BY Anio DESC, Mes DESC, TipoGranja, ZNombre, id;");
 

    $documento = new Spreadsheet();

    $sheet = $documento->getActiveSheet();
    # Se usa para ponerle un titulo a la hoja de excel 
    $sheet->setTitle("TABLERO");
   //TItulo
   $sheet->mergeCells('A1:AZ1');
   $sheet->setCellValue('A1', 'INDICADORES DE LIMPIEZA DE GRANJA P.S.P.');
   $sheet->getStyle('A1:AZ1')->getFont()->setSize(20)->setBold(true); // Establece el color en blanco (código RGB hexadecimal para
   // Quitar los bordes exteriores de la tabla
   $sheet->getStyle('A1:AZ2')->getBorders()->getOutline()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_NONE);
    // Encabezados de columna
    $sheet->setCellValue('A3', 'AÑO');
    $sheet->setCellValue('B3', 'MES');
    $sheet->setCellValue('C3', 'OPERACIÓN');
    $sheet->setCellValue('D3', 'DETALLE');
    $sheet->setCellValue('E3', 'CAMPAÑA');
    $sheet->setCellValue('F3', 'GRANJA');
    $sheet->setCellValue('G3', 'DESTINO');
    $sheet->setCellValue('H3', 'ZONA');
    $sheet->setCellValue('I3', 'SERVICIO');
    $sheet->setCellValue('J3', 'REUSO');
    $sheet->setCellValue('K3', 'SEMANA');
    $sheet->setCellValue('L3', 'MES');
    $sheet->setCellValue('M3', 'AÑO');
    $sheet->setCellValue('N3', 'ULTIMA VENTA');
    $sheet->setCellValue('O3', 'INICIO LIMPIEZA');
    $sheet->setCellValue('P3', 'INICIO RECEPCIÓN');
    $sheet->setCellValue('Q3', 'TERMINO RECEPCIÓN');
    $sheet->setCellValue('R3', 'INICIO COMPOST');
    $sheet->setCellValue('S3', 'TERMINO COMPOST');
    $sheet->setCellValue('T3', 'T.LIMPIEZA INICIAL');
    $sheet->setCellValue('U3', 'I.TUMBADO COMPOST');
    $sheet->setCellValue('V3', 'T. TUMBADO COMPOST');
    $sheet->setCellValue('W3', 'RED DRAGON');
    $sheet->setCellValue('X3', 'ENTREGA GRANJA');
    $sheet->setCellValue('Y3', 'INGRESO POLLO BB');
    $sheet->setCellValue('Z3', 'PREPARACIÓN');
    $sheet->setCellValue('AA3', 'COMPOST');
    $sheet->setCellValue('AB3', 'LIMPIEZA');
    $sheet->setCellValue('AC3', 'DESCANSO');
    $sheet->setCellValue('AD3', 'VACIO SANITARIO');
    $sheet->setCellValue('AE3', 'LIMPIEZA');
    $sheet->setCellValue('AF3', 'D. PRODUCCIÓN');
    $sheet->setCellValue('AG3', 'FECHA');
    $sheet->setCellValue('AH3', 'MES');
    $sheet->setCellValue('AI3', 'SUPERVISOR');
    $sheet->setCellValue('AJ3', 'GRUPO');
    $sheet->setCellValue('AK3', 'ACTIVIDAD');
    $sheet->setCellValue('AL3', 'TOTAL  JORNAL');
    $sheet->setCellValue('AM3', 'OPERARIO');
    $sheet->setCellValue('AN3', 'H.E. OPERARIO');
    $sheet->setCellValue('AO3', 'H.E. JORNAL');
    $sheet->setCellValue('AP3', 'TRACTORISTA');
    $sheet->setCellValue('AQ3', 'H.E. TRACTORISTA');
    $sheet->setCellValue('AR3', 'H.E.JORNAL');
    $sheet->setCellValue('AS3', 'CANTIDAD TRACTOR');
    $sheet->setCellValue('AT3', 'TOTAL HORAS  MAQUINAS');
    $sheet->setCellValue('AU3', 'HORAS MAQUINA');
    $sheet->setCellValue('AV3', 'HORAS EXTRAS');
    $sheet->setCellValue('AW3', 'OBSERVACIÓN');
    $sheet->setCellValue('AX3', 'CRIANZA');
    $sheet->setCellValue('AY3', 'LIMPIEZA');
    $sheet->setCellValue('AZ3', 'TRABAJO');



    $sheet->getStyle('A3:AZ3')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('008080');
    $sheet->getStyle('A3:AZ3')->getFont()->setBold(true)->getColor()->setRGB('FFFFFF'); // Establece el color en blanco (código RGB hexadecimal para blanco: FFFFFF)

    $row = 4; // Fila inicial para los datos

    // Variable auxiliar para rastrear el año anterior y el mes anterior
    $anteriorAnio = null;
    $anteriorMes = null;

    $filaVaciaAnio = false;
    $filaVaciaMes = false;

    $mergeStartRowAnio = null;
    $mergeStartRowMes = null;

    $sumTJornal = 0;
    $sumTHM = 0;

  

// Recorrer los resultados y agregar los datos a la tabla
while ($rowData = $consulta->fetch_assoc()) {
	if ($rowData['Anio'] !== $anteriorAnio) {
         if ($filaVaciaMes) {   
         	// Define the color for the row
            $rowColor = '5f9ea0'; // Change the color as desired (in this example, red)
            // Combinar las celdas para el Mes anterior
            if ($mergeStartRowMes !== null && $row - $mergeStartRowMes > 0) {
                $mergeEndRowMes = $row - 1;
                $sheet->mergeCells('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes);
                $sheet->getStyle('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB($rowColor);
                $sheet->getStyle('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes)->getFont()->setBold(true);
            }
        } 
        if ($filaVaciaAnio) {
        	// Define the color for the row
            $rowColor = '008080'; // Change the color as desired (in this example, red)
            $mergeEndRowAnio = $row - 1;
            $sheet->mergeCells('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio);
            $sheet->getStyle('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB($rowColor);
            $sheet->getStyle('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio)->getFont()->setBold(true)->getColor()->setRGB('FFFFFF'); // Establece el color en blanco (código RGB hexadecimal para blanco: FFFFFF)
            
        }
        else {
            $filaVaciaAnio = true;
        }
        // Combinar las celdas para el Año anterior
        if ($mergeStartRowAnio !== null && $row - $mergeStartRowAnio > 0) {
            $mergeEndRowAnio = $row - 1;
            $sheet->mergeCells('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio);
        }
        // Actualizar la fila de inicio para combinar celdas de Año
        $mergeStartRowAnio = $row;
        // Actualizar el año anterior
        $anteriorAnio = $rowData['Anio'];
        // Agregar el valor del año actual en la celda correspondiente
        $sheet->setCellValue('A' . $row, $rowData['Anio']);
        // Reiniciar el mes anterior
        $anteriorMes = null;
        // Reiniciar las variables de fila vacía
        $filaVaciaMes = false;
        $filaVaciaTipoGranja = false;
        $filaVaciaZNombre = false;
   
    }

    // Verificar si el mes actual es diferente al mes anterior
    if ($rowData['NMes'] !== $anteriorMes) {
       
        if ($filaVaciaMes) {
        	// Define the color for the row
            $rowColor = '5f9ea0'; // Change the color as desired (in this example, red)
            if ($mergeStartRowMes !== null && $row - $mergeStartRowMes > 0) {
                $mergeEndRowMes = $row - 1;
                $sheet->mergeCells('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes);
                $sheet->getStyle('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB($rowColor);
                $sheet->getStyle('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes)->getFont()->setBold(true);
            }
        } 
        else {
            $filaVaciaMes = true;
        }
        
        // Actualizar la fila de inicio para combinar celdas de Mes
        $mergeStartRowMes = $row;
        // Actualizar el mes anterior
        $anteriorMes = $rowData['NMes'];
        // Agregar el valor del mes actual en la celda correspondiente
        $sheet->setCellValue('B' . $row, $rowData['NMes']);
        // Reiniciar el mes anterior
        $anteriorTipoGranja = null;
        // Reiniciar las variables de fila vacía
        $filaVaciaTipoGranja = false;
        $filaVaciaZNombre = false;

    }   


    
    // Agregar los datos a las celdas correspondientes
    $sheet->setCellValue('A' . $row, $rowData['Anio']);
    $sheet->setCellValue('C' . $row, $rowData['id']);
    $sheet->setCellValue('D' . $row, $rowData['IdDetalleOperacion']);
    $sheet->setCellValue('E' . $row, $rowData['Campana']);
    $sheet->setCellValue('F' . $row, $rowData['GNombre']);
    $sheet->setCellValue('G' . $row, $rowData['TipoGranja']);
    $sheet->setCellValue('H' . $row, $rowData['ZNombre']);
    $sheet->setCellValue('I' . $row, $rowData['TSNombre']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('K' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('J' . $row, $rowData['Reuso']);
    $sheet->setCellValue('K' . $row, $rowData['IdSemanaInicioLimpieza']);
    $sheet->setCellValue('L' . $row, $rowData['IdMesInicioLimpieza']);
    $sheet->setCellValue('M' . $row, $rowData['IdAnioInicioLimpieza']);
    $sheet->setCellValue('N' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaUltimaVenta']));
    $sheet->getStyle('N'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('O' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioLimpieza']));
    $sheet->getStyle('O'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('P' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioRecepcion']));
    $sheet->getStyle('P'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('Q' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoRecepcion']));
    $sheet->getStyle('Q'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('R' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioCompost']));
    $sheet->getStyle('R'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('S' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoCompost']));
    $sheet->getStyle('S'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('T' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoLimpiezaInicial']));
    $sheet->getStyle('T'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('U' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioTumbadoCompost']));
    $sheet->getStyle('U'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('V' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoTumbadoCompost']));
    $sheet->getStyle('V'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('W' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaRedDragon']));
    $sheet->getStyle('W'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('X' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaEntregaGranja']));
    $sheet->getStyle('X'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('Y' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaIngresoPollosBB']));
    $sheet->getStyle('Y'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('Z' . $row, $rowData['TPreparacionLimpieza']);
    $sheet->setCellValue('AA' . $row, $rowData['TCompost']);
    $sheet->setCellValue('AB' . $row, $rowData['TLimpiezaInicial']);
    $sheet->setCellValue('AC' . $row, $rowData['TDescanso']);
    $sheet->setCellValue('AD' . $row, $rowData['TVacioSanitario']);
    $sheet->setCellValue('AE' . $row, $rowData['TLimpieza']);
    $sheet->setCellValue('AF' . $row, $rowData['TDescansoProduccion']);
    $sheet->setCellValue('AG' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaActividad']));
    $sheet->getStyle('AG'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('AH' . $row, $rowData['IdMesIngresoRealizaActividad']);
    $sheet->setCellValue('AI' . $row, $rowData['SNombre']);
    $sheet->setCellValue('AJ' . $row, $rowData['Expr1']);
    $sheet->setCellValue('AK' . $row, $rowData['ANombre']);
    // Obtener los valores de Jornal y HEJornal
	$jornal = $rowData['Jornal'];
	$heJornal = $rowData['HEJornal'];

	// Calcular la suma de TJornal
	$sumT1 = $jornal + $heJornal;

	// Obtener los valores de JornalTractorista y HEJornalTractorista
	$jornalTractorista = $rowData['JornalTractorista'];
	$heJornalTractorista = $rowData['HEJornalTractorista'];

	// Calcular la suma de TJornalTractorista
	$sumT2 = $jornalTractorista + $heJornalTractorista;

	// Calcular la suma total de TJornal
	$sumTJornal = $sumT1 + $sumT2;
    $sheet->setCellValue('AL' . $row, $sumTJornal);

    $sheet->setCellValue('AM' . $row, $rowData['Jornal']);
    $sheet->setCellValue('AN' . $row, $rowData['HorasExtras']);
    $sheet->setCellValue('AO' . $row, $rowData['HEJornal']);
    $sheet->setCellValue('AP' . $row, $rowData['JornalTractorista']);
    $sheet->setCellValue('AQ' . $row, $rowData['HorasExtrasTractorista']);
    $sheet->setCellValue('AR' . $row, $rowData['HEJornalTractorista']);
    $sheet->setCellValue('AS' . $row, $rowData['CantidadTractor']);
    //SUM
    // Sumar el valor de THM 
    $sumTHM= $rowData['HorasMaquina'] += $rowData['HorasExtrasMaquina'];
    $sheet->setCellValue('AT' . $row, $sumTHM);

    $sheet->setCellValue('AU' . $row, $rowData['HorasMaquina']);
    $sheet->setCellValue('AV' . $row, $rowData['HorasExtrasMaquina']);
    $sheet->setCellValue('AW' . $row, $rowData['ObservacionDetalleOperacion']);
    $sheet->setCellValue('AX' . $row, $rowData['AreaCrianza']);
    $sheet->setCellValue('AY' . $row, $rowData['AreaTrabajo']);
    $sheet->setCellValue('AZ' . $row, $rowData['AreaTrabajo']);

    // Incrementar el contador de fila 
    $row++;

}   


    if ($mergeStartRowMes !== null && $row - $mergeStartRowMes > 0) {
    	// Define the color for the row
        $rowColor = '5f9ea0'; // Change the color as desired (in this example, red)
        $mergeEndRowMes = $row - 1;
        $sheet->mergeCells('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes);
        $sheet->getStyle('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB($rowColor);
        $sheet->getStyle('B' . $mergeStartRowMes . ':B' . $mergeEndRowMes)->getFont()->setBold(true);
    }
    // Combinar las celdas para el último año y mes si hay datos
    if ($mergeStartRowAnio !== null && $row - $mergeStartRowAnio > 0) {
    	// Define the color for the row
        $rowColor = '008080'; // Change the color as desired (in this example, red)
        $mergeEndRowAnio = $row - 1;
        $sheet->mergeCells('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio);
        $sheet->getStyle('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB($rowColor);
        $sheet->getStyle('A' . $mergeStartRowAnio . ':A' . $mergeEndRowAnio)->getFont()->setBold(true)->getColor()->setRGB('FFFFFF'); // Establece el color en blanco (código RGB hexadecimal para blanco: FFFFFF)
    }

    // Centrar el texto en las celdas combinadas (horizontal y vertical)
    $style = $sheet->getStyle('A3:AZ' . ($row - 1));
    $style->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
    $style->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);

    // Ajustar el ancho de las columnas automáticamente
    $startColumn = 'A';
    $endColumn = 'AZ';

    $startIndex = Coordinate::columnIndexFromString($startColumn);
    $endIndex = Coordinate::columnIndexFromString($endColumn);

    for ($columnIndex = $startIndex; $columnIndex <= $endIndex; $columnIndex++) {
        $column = Coordinate::stringFromColumnIndex($columnIndex);
        $sheet->getColumnDimension($column)->setAutoSize(true);
    }

    // Ajustar el ancho de las columnas automáticamente
    foreach (range('A', 'BA') as $column) {
        $sheet->getColumnDimension($column)->setAutoSize(true);
    }

      $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($documento, 'Xlsx');

      $file_name = 'RptGranjaCerradas';

      $writer->save($file_name);

      header('Content-Type: application/x-www-form-urlencoded');

      header('Content-Transfer-Encoding: Binary');

      header("Content-disposition: attachment; filename=\"".$file_name.".xlsx\"");

      readfile($file_name);

      unlink($file_name);
      exit;

	if($writer= true){
	$session->msg("s", "Se Creo el reporte");
	redirect('../granjasoperacion.php',false);
	}
	else {

	  $session->msg("d", "No se seleccionaron opciones");
	   echo display_msg($msg);
	   redirect('../granjasoperacion.php',false);
	}

}


?>



