En este artículo vamos a realizar un ejemplo que muestra como filtrar la información de las columnas en un archivo de Excel. Para esto usaremos la libreria PHPExcel cuyo uso básico se muestra en el artículo ¿Cómo crear verdaderos archivos de Excel usando PHPExcel?

 

El el siguiente video se muestran los pasos para implementar la funcionalidad de filtrado de datos con PHPExcel (setAutoFilter).

Como pudieron observar el truco esta en usar el método setAutoFilter en la hoja activa. El código de la aplicación es:

<?php
/** Incluir la libreria PHPExcel */
require_once './Classes/PHPExcel.php';

error_reporting(0);

// Crea un nuevo objeto PHPExcel
$objPHPExcel = new PHPExcel();

// Establecer propiedades
$objPHPExcel->getProperties()
->setCreator("Cattivo")
->setLastModifiedBy("Cattivo")
->setTitle("Ejemplo de Filtros con PHPExcel")
->setSubject("Ejemplo de Filtros con PHPExcel")
->setDescription("Demostracion sobre como crear archivos de Excel con filtros activos desde PHP.")
->setKeywords("Excel Office 2007 openxml php")
->setCategory("Pruebas de Excel");

// Agregar Informacion
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Frutas')
->setCellValue('A2', 'Manzana')
->setCellValue('A3', 'Banano')
->setCellValue('A4', 'Pera')
->setCellValue('B1', 'Precio')
->setCellValue('B2', '30')
->setCellValue('B3', '45')
->setCellValue('B4', '2')
->setCellValue('C1', 'Medida')
->setCellValue('C2', 'Kilo')
->setCellValue('C3', 'Libra')
->setCellValue('C4', 'Unidad');

$objPHPExcel->getActiveSheet()->setAutoFilter("A1:C4");

// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Tecnologia Simple');

// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
$objPHPExcel->setActiveSheetIndex(0);

// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="pruebaFiltros.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
?>

Muchas gracias.