<?php
/*
Llamo a las librerías necesarias para la generación, deben estar en el mismo
directorio que mi archivo PHP
*/
include 'PHPExcel/PHPExcel.php';
include 'PHPExcel/PHPExcel/Writer/Excel2007.php';
?>
<html>
<body>
<table border="2">
<tr>
<th>ID</th>
<th>CODIGO</th>
<th>VALOR</th>
<th>C.I.</th>
<th>APELLIDOS Y NOMBRES</th>
</tr>
<?php
$conexion = oci_connect('Usuario', 'Password', 'BaseDeDatos');
if (isSet($_POST['BotonParaGenerar'])) {
$sentencia = oci_parse($conexion, "consultaAGenerar");
oci_execute($sentencia);
// Creo mi objeto PHPExcel
$objPHPExcel = new PHPExcel();
// Mi nombre como el Creador
$objPHPExcel->getProperties()->setCreator("Erick Lucas");
// Le doy nombre a las propiedades del libro
$objPHPExcel->getProperties()->setTitle("Rol de Pago");
// Asigno el método getActiveSheet() a $hojita
$hojita = $objPHPExcel->getActiveSheet();
// Le doy titulo a mi hoja activa
$hojita->setTitle('MiRol');
// Escribo el título en la primera celda de la grilla
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Listado ROL DE PAGO');
// Seteo los encabezados de columna
$hojita->setCellValue('A4', 'CODIGO');
$hojita->setCellValue('B4', 'CODIGO');
$hojita->setCellValue('C4', 'VALOR');
$hojita->setCellValue('D4', 'C.I.');
$hojita->setCellValue('E4', 'APELLIDOS Y NOMBRES');
// Mi variable contadora inciará el llenado de datos en las celdas desde la fila 6
$i=5;
// Inicio el recorrido
while ($fila = oci_fetch_array($sentencia, OCI_NUM+OCI_RETURN_NULLS))
{
$i++;
echo "<tr>";
echo "<td>".$fila[0]."</td>";
$hojita->setCellValue('A'.$i, $fila[0]);
echo "<td>".$fila[1]."</td>";
$hojita->setCellValue('B'.$i, $fila[1]);
echo "<td>".$fila[2]."</td>";
$hojita->setCellValue('C'.$i, $fila[2]);
echo "<td>".$fila[3]."</td>";
$hojita->setCellValue('D'.$i, $fila[3]);
echo "<td>".$fila[4]."</td>";
$hojita->setCellValue('E'.$i, $fila[4]);
echo "</tr>";
}
/*
Aquí establezco como las columnas obtendrán un ancho y un alto especifico
según los datos que en las celdas se cuentren
*/
$highestColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
$highestRow = $objPHPExcel->getActiveSheet()->getHighestRow();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
for ($column=0; $column < $highestColumnIndex ; $column++)
{
$objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($column))->setAutoSize(true);
}
/*
También puedo aplicar formato, aca establezo que la primera celda tendrá
negrita y tamaño 16. Los encabezados de columna también tendrán negrita
*/
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);
$objPHPExcel->getActiveSheet()->getStyle('A4')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('B4')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C4')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D4')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('E4')->getFont()->setBold(true);
/*
Creo un nuevo objeto para generar en .xlsx (para versiones anteriores a
Office 2007 deben cambiar el '2007' y colocar '5'
*/
$objGuardar = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Establezco el nombre de mi Libro de Excel con fecha y hora de generación
$nombreLibro = 'Rol_de_pago_'.$actual['mday'].'_'.$actual['month'].'_'.$actual['year'].'_'.$actual['hours'].'h'.$actual['minutes'].'.xlsx';
// Guardo (genero) mi Libro
$objGuardar->save($nombreLibro);
// Desconecto todas las hojas trabajados
$objPHPExcel->disconnectWorksheets();
// Libero los recursos de los objetos creados
// Envio un 'alert' informando que la generación ha sido exitosa.
echo "<script>window.alert('El archivo de Excel se ha generado')</script>";
}
?>
</table>
</body>
</html>