Filtrado de Datos
Datos de Autofiltro
El autofiltrado es la forma más rápida de seleccionar solo aquellos elementos de la hoja de cálculo que desea mostrar en una lista. La función de autofiltro permite a los usuarios filtrar elementos en una lista según un criterio establecido. Filtrar según texto, números o fechas.
Autofiltro en Microsoft Excel
Para activar la función de autofiltro en Microsoft Excel:
- Haz clic en la fila de encabezado en una hoja de cálculo.
- Desde el menú Datos, seleccione Filtrar y luego Autofiltro.
Cuando aplicas un autofiltro a una hoja de cálculo, aparecen interruptores de filtro (flechas negras) a la derecha de los encabezados de las columnas.
- Haz clic en una flecha de filtro para ver una lista de opciones de filtro.
Algunas de las opciones de autofiltro son:
Opciones | Descripción |
---|---|
All | Mostrar todos los elementos en la lista una vez. |
Custom | Personalizar criterios de filtro como contiene/no contiene |
Filter by Color | Filtros basados en el color rellenado |
Date Filters | Filtrar filas basadas en diferentes criterios en la fecha |
Number Filters | Diferente tipo de filtro en números como comparación, promedios y Top 10, etc. |
Text Filters | Diferentes filtros como comienza con, termina con, contiene, etc, |
Blanks/Non Blanks | Estos filtros pueden implementarse a través de Filtro de Texto en Blanco |
Los usuarios filtran manualmente sus datos de hoja de cálculo en Microsoft Excel utilizando estas opciones. |
Autofiltro con Aspose.Cells
Aspose.Cells proporciona una clase, Workbook, que representa un archivo de Excel. La clase Workbook contiene un WorksheetCollection que permite acceder a cada hoja de cálculo en el archivo de Excel.
Una hoja de cálculo está representada por la clase Worksheet. La clase Worksheet proporciona una amplia gama de propiedades y métodos para gestionar hojas de cálculo. Para crear un autofiltro, use la propiedad AutoFilter de la clase Worksheet. La propiedad AutoFilter es un objeto de la clase AutoFilter, que proporciona la propiedad Range para especificar el rango de celdas que conforman una fila de encabezado. Un autofiltro se aplica al rango de celdas que es la fila de encabezado.
En cada hoja de cálculo, solo puede especificar un rango de filtro. Esto está limitado por Microsoft Excel. Para filtrado de datos personalizado, use el método AutoFilter.Custom.
En el ejemplo dado a continuación, hemos creado el mismo Autofiltro utilizando Aspose.Cells como lo creamos utilizando Microsoft Excel en la sección anterior.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook("AFData.xls"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Creating AutoFilter by giving the cells range | |
AutoFilter autoFilter = worksheet.getAutoFilter(); | |
autoFilter.setRange("A1:B1"); | |
// Saving the modified Excel file | |
workbook.save("AFData_out.xls"); | |
// Print message | |
System.out.println("Process completed successfully"); |
Diferentes tipos de filtro
Aspose.Cells ofrece múltiples opciones para aplicar diferentes tipos de filtros como Filtro de Color, Filtro de Fecha, Filtro de Número, Filtro de Texto, Filtros en Blanco y Filtros no en Blanco.
Color de relleno
Aspose.Cells proporciona una función addFillColorFilter para filtrar datos basados en la propiedad de color de relleno de las celdas. En el ejemplo dado a continuación, se utiliza un archivo de plantilla con diferentes colores de relleno en la primera columna de la hoja para probar la función de filtrado por color. Los siguientes archivos se pueden descargar para verificar la funcionalidad.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("ColouredCells.xlsx"); | |
// Instantiating a CellsColor object for foreground color | |
CellsColor clrForeground = workbook.createCellsColor(); | |
clrForeground.setColor(Color.getRed()); | |
// Instantiating a CellsColor object for background color | |
CellsColor clrBackground = workbook.createCellsColor(); | |
clrBackground.setColor(Color.getWhite()); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call AddFillColorFilter function to apply the filter | |
worksheet.getAutoFilter().addFillColorFilter(0, BackgroundType.SOLID, clrForeground, clrBackground); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredColouredCells.xlsx"); | |
// Print message | |
System.out.println("Process completed successfully"); |
Fecha
Se pueden implementar diferentes tipos de filtros de fecha como filtrar todas las filas con fechas en enero de 2018. El siguiente código de muestra demuestra este filtro usando la función addDateFilter. Los siguientes archivos se pueden utilizar para probar esta funcionalidad.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("Date.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call AddDateFilter function to apply the filter | |
worksheet.getAutoFilter().addDateFilter(0, DateTimeGroupingType.MONTH, 2018, 1, 0, 0, 0, 0); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredDate.xlsx"); | |
// Print message | |
System.out.println("Process completed successfully"); |
Fecha dinámica
A veces se requieren filtros dinámicos basados en una fecha como todas las celdas con fechas en enero independientemente del año. En este caso, se utiliza la función DynamicFilter como se indica en el siguiente código de ejemplo. Los siguientes archivos se pueden utilizar para probar.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("Date.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call DynamicFilter function to apply the filter | |
worksheet.getAutoFilter().dynamicFilter(0, DynamicFilterType.JANUARY); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredDynamicDate.xlsx"); |
Número
Los filtros personalizados se pueden aplicar usando Aspose.Cells como seleccionar celdas que tienen un número entre un rango dado. El siguiente ejemplo demuestra el uso de la función custom() para filtrar números. Los archivos de ejemplo se pueden descargar desde los siguientes enlaces.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("Date.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call DynamicFilter function to apply the filter | |
worksheet.getAutoFilter().dynamicFilter(0, DynamicFilterType.JANUARY); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredDynamicDate.xlsx"); |
Texto
Si una columna contiene texto y se deben seleccionar celdas que contienen un texto específico, se puede usar la función filter(). En el siguiente ejemplo, el archivo de plantilla contiene una lista de países y se debe seleccionar la fila que contiene un nombre de país específico. El siguiente código demuestra el filtrado de texto usando los archivos de ejemplo a continuación.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("Text.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call Filter function to apply the filter | |
worksheet.getAutoFilter().filter(0, "Angola"); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredText.xlsx"); |
Vacíos
Si una columna contiene texto de manera que algunas celdas están en blanco, y se requiere un filtro para seleccionar solo aquellas filas donde hay celdas en blanco presentes, se puede usar la función matchBlanks() como se demuestra a continuación. Los archivos de ejemplo se pueden descargar desde los siguientes enlaces.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("Blank.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call matchBlanks function to apply the filter | |
worksheet.getAutoFilter().matchBlanks(0); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredBlank.xlsx"); |
No vacíos
Cuando se desea filtrar celdas que contienen algún texto, se utiliza la función MatchNonBlanks como se demuestra a continuación. Los archivos de ejemplo se pueden descargar desde los siguientes enlaces.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object | |
// Opening the Excel file through the file stream | |
Workbook workbook = new Workbook("Blank.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Call matchBlanks function to apply the filter | |
worksheet.getAutoFilter().matchBlanks(0); | |
// Call refresh function to update the worksheet | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("FilteredBlank.xlsx"); |
Filtro personalizado con Contiene
Excel proporciona filtros personalizados como filtrar filas que contienen una cadena específica. Esta característica está disponible en Aspose.Cells y se demuestra a continuación filtrando los nombres en el archivo de ejemplo. Los archivos de ejemplo se pueden descargar desde los siguientes enlaces.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object containing sample data | |
Workbook workbook = new Workbook("sourseSampleCountryNames.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Creating AutoFilter by giving the cells range | |
worksheet.getAutoFilter().setRange("A1:A18"); | |
// Initialize filter for rows containing string "Ba" | |
worksheet.getAutoFilter().custom(0, FilterOperatorType.CONTAINS, "Ba"); | |
//Refresh the filter to show/hide filtered rows | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("outSourseSampleCountryNames.xlsx"); |
Filtro personalizado con NoContiene
Excel proporciona filtros personalizados como filtrar filas que no contienen alguna cadena específica. Esta función está disponible en Aspose.Cells y se demuestra a continuación filtrando los nombres en el archivo de muestra proporcionado a continuación.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object containing sample data | |
Workbook workbook = new Workbook("sourseSampleCountryNames.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Creating AutoFilter by giving the cells range | |
worksheet.getAutoFilter().setRange("A1:A18"); | |
// Initialize filter for rows containing string "Ba" | |
worksheet.getAutoFilter().custom(0, FilterOperatorType.NOT_CONTAINS, "Ba"); | |
//Refresh the filter to show/hide filtered rows | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save("outSourseSampleCountryNames.xlsx"); |
Filtro personalizado que comienza con
Excel proporciona filtros personalizados como filtrar filas que comienzan con una cadena específica. Esta función está disponible en Aspose.Cells y se demuestra a continuación filtrando los nombres en el archivo de muestra proporcionado a continuación.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object containing sample data | |
Workbook workbook = new Workbook(sourceDir + "sourseSampleCountryNames.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Creating AutoFilter by giving the cells range | |
worksheet.AutoFilter.Range = "A1:A18"; | |
// Initialize filter for rows starting with string "Ba" | |
worksheet.AutoFilter.Custom(0, FilterOperatorType.BeginsWith, "Ba"); | |
//Refresh the filter to show/hide filtered rows | |
worksheet.AutoFilter.Refresh(); | |
// Saving the modified Excel file | |
workbook.Save(outputDir + "outSourseSampleCountryNames.xlsx"); |
Filtro personalizado que termina con
Excel proporciona filtros personalizados como filtrar filas que terminan con una cadena específica. Esta función está disponible en Aspose.Cells y se muestra a continuación filtrando los nombres en el archivo de muestra proporcionado a continuación.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiating a Workbook object containing sample data | |
Workbook workbook = new Workbook(srcDir + "sourseSampleCountryNames.xlsx"); | |
// Accessing the first worksheet in the Excel file | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Creating AutoFilter by giving the cells range | |
worksheet.getAutoFilter().setRange("A1:A18"); | |
// Initialize filter for rows starting with string "Ba" | |
worksheet.getAutoFilter().custom(0, FilterOperatorType.ENDS_WITH, "ia"); | |
//Refresh the filter to show/hide filtered rows | |
worksheet.getAutoFilter().refresh(); | |
// Saving the modified Excel file | |
workbook.save(outDir + "outSourseSampleCountryNames.xlsx"); |