Filter Data
From Documentation
Filter is a useful feature, when you want to focus on a subset of data. It can get rid of those data you don't want. Spreadsheet can allow you to enable / disable filter and apply / reset criteria via API.
We'll use a simple application to demonstrate filter API. The screenshot is below:
In this application, we can toggle, clear, and reapply filter and filter by type column.
public class AutoFilterComposer extends SelectorComposer<Component> {
@Wire
private Spreadsheet ss;
@Wire
private Combobox typeBox;
@Listen("onClick = button[label='Toogle Filter']")
public void toggle() {
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
Range filteringRange = selection.findAutoFilterRange();
if(!selection.isAutoFilterEnabled() && filteringRange == null) {
Messagebox.show("nothing to filter");
return;
}
selection.enableAutoFilter(!selection.isAutoFilterEnabled());
// SheetOperationUtil.toggleAutoFilter(selection);
}
@Listen("onClick = button[label='Clear Filter']")
public void clear() {
Range sheetRange = Ranges.range(ss.getSelectedSheet());
sheetRange.resetAutoFilter();
// SheetOperationUtil.resetAutoFilter(selection);
}
@Listen("onClick = button[label='Reapply Filter']")
public void reapply() {
Range sheetRange = Ranges.range(ss.getSelectedSheet());
sheetRange.applyAutoFilter();
// SheetOperationUtil.applyAutoFilter(selection);
}
@Listen("onClick = button[label='Apply']")
public void apply() {
Range sheetRange = Ranges.range(ss.getSelectedSheet());
if (sheetRange.isAutoFilterEnabled()){
String[] criteria = {typeBox.getValue()};
sheetRange.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null,
true);
}
}
}