una tipos personalizados otra hoja filtros filtro filtrar filas ejemplos datos crear como avanzado excel apache-poi autofilter

tipos - Configuración del filtro en los encabezados de una hoja de Excel a través de POI



filtros personalizados en excel (3)

Descubrí cómo hacer esto con NPOI.
Agrega un CT_AutoFilter a la CT_Table.

Estoy adivinando que funciona igual para POI como NPOI.

cttable.autoFilter = new CT_AutoFilter(); cttable.autoFilter.@ref = "A1:C5"; // value is data and includes header.

Genero una hoja, encabezados y columnas de datos bastante bog estándar.

Quiero activar la función "Filtro" para la hoja, para que el usuario pueda ordenar y filtrar fácilmente los datos.

¿Puedo hacer esto usando POI?


Guarde la primera y la última celda del área de filtro y ejecute:

sheet.setAutoFilter(new CellRangeAddress(firstCell.getRow(), lastCell.getRow(), firstCell.getCol(), lastCell.getCol()));

Por ejemplo, de la hoja de abajo.

>x (x, y) 0123456 0|--hhh--| h = header 1|--+++--| + = values 2|--+++--| - = empty fields 3|--+++--| 4|-------|

La primera celda será el encabezado sobre la primera celda + (2,1). La última será la última celda + (5,3)


Si también desea establecer un filtro mediante programación, puede utilizar lo siguiente:

void setAutoFilter(final XSSFSheet sheet, final int column, final String value) { sheet.setAutoFilter(CellRangeAddress.valueOf("A1:Z1")); final CTAutoFilter sheetFilter = sheet.getCTWorksheet().getAutoFilter(); final CTFilterColumn filterColumn = sheetFilter.addNewFilterColumn(); filterColumn.setColId(column); final CTFilter filter = filterColumn.addNewFilters().insertNewFilter(0); filter.setVal(value); // We have to apply the filter ourselves by hiding the rows: for (final Row row : sheet) { for (final Cell c : row) { if (c.getColumnIndex() == column && !c.getStringCellValue().equals(value)) { final XSSFRow r1 = (XSSFRow) c.getRow(); if (r1.getRowNum() != 0) { // skip header r1.getCTRow().setHidden(true); } } } } }

Dependencias relevantes de Gradle:

// https://mvnrepository.com/artifact/org.apache.poi/poi compile group: ''org.apache.poi'', name: ''poi'', version: ''3.9'' // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml compile group: ''org.apache.poi'', name: ''poi-ooxml'', version: ''3.9'' // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas compile group: ''org.apache.poi'', name: ''poi-ooxml-schemas'', version: ''3.9'' // https://mvnrepository.com/artifact/org.apache.poi/ooxml-schemas compile group: ''org.apache.poi'', name: ''ooxml-schemas'', version: ''1.3''