package test; import java.util.ArrayList; import java.util.List; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zss.api.Ranges; import org.zkoss.zss.api.model.Sheet; import org.zkoss.zss.ui.Spreadsheet; public class AutoFilterSpreadsheetComposer extends SelectorComposer { @Wire private Spreadsheet report; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); Sheet reportSheet = report.getSelectedSheet(); List personList = preparePersonList(); int rowCounter = 1; for (Person person : personList) { Ranges.range(reportSheet, rowCounter, 0).setCellValue(person.getName()); Ranges.range(reportSheet, rowCounter, 1).setCellValue(person.getSurname()); Ranges.range(reportSheet, rowCounter, 2).setCellValue(person.getAge()); Ranges.range(reportSheet, rowCounter, 3).setCellValue(person.getWeight()); Ranges.range(reportSheet, rowCounter, 4).setCellValue(person.getName()); Ranges.range(reportSheet, rowCounter, 5).setCellValue(person.getSurname()); Ranges.range(reportSheet, rowCounter, 6).setCellValue(person.getAge()); Ranges.range(reportSheet, rowCounter, 7).setCellValue(person.getWeight()); Ranges.range(reportSheet, rowCounter, 8).setCellValue(person.getName()); Ranges.range(reportSheet, rowCounter, 9).setCellValue(person.getSurname()); Ranges.range(reportSheet, rowCounter, 10).setCellValue(person.getAge()); Ranges.range(reportSheet, rowCounter, 11).setCellValue(person.getWeight()); rowCounter++; } Ranges.range(report.getSelectedSheet(), 0, 0, personList.size(), 12).enableAutoFilter(true); report.setMaxVisibleRows(personList.size()); } private List preparePersonList() { List outputList = new ArrayList(); for (int i = 0; i < 2500; i++) { outputList.add(new Person("user" + i, "usersurname" + i, i + 18, i + 60)); } outputList.add(new Person("user", "usersurname", 20, 60)); outputList.add(new Person("user", "usersurname", 25, 55)); outputList.add(new Person("user", "usersurname", 30, 50)); outputList.add(new Person("user", "usersurname", 25, 75)); outputList.add(new Person("user", "usersurname", 30, 80)); outputList.add(new Person("user", "usersurname", 30, 75)); outputList.add(new Person("user", "usersurname", 35, 85)); outputList.add(new Person("user", "usersurname", 32, 75)); outputList.add(new Person("user", "usersurname", 32, 75)); outputList.add(new Person("user", "usersurname", 35, 76)); return outputList; } }