AutoFilter per Makro ein und ausschalten
Verfasst: Do, 28.04.2005 11:27
Wie kann ich das per Makro erledigen? Und wie kann ich dann wählen nach welchem Kriterium er filtert?
Danke !
Gruß, Zoidberg
Danke !
Gruß, Zoidberg
deutsches Forum rund um Apache OpenOffice und LibreOffice
http://de.openoffice.info/
Code: Alles auswählen
// --- filter für zweite Spalte >= 1998 ---
com.sun.star.sheet.XSheetFilterable xFilter = (com.sun.star.sheet.XSheetFilterable)
UnoRuntime.queryInterface(com.sun.star.sheet.XSheetFilterable.class, xRange);
com.sun.star.sheet.XSheetFilterDescriptor xFilterDesc =
xFilter.createFilterDescriptor(true);
com.sun.star.sheet.TableFilterField[] aFilterFields =
new com.sun.star.sheet.TableFilterField[1];
aFilterFields[0] = new com.sun.star.sheet.TableFilterField();
aFilterFields[0].Field = 1;
aFilterFields[0].IsNumeric = true;
aFilterFields[0].Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL;
aFilterFields[0].NumericValue = 1998;
xFilterDesc.setFilterFields(aFilterFields);
com.sun.star.beans.XPropertySet xFilterProp = (com.sun.star.beans.XPropertySet)
UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, xFilterDesc);
xFilterProp.setPropertyValue("ContainsHeader", new Boolean(true));
xFilter.filter(xFilterDesc);
Code: Alles auswählen
// --- do the same filter as above, using criteria from a cell range ---
com.sun.star.table.XCellRange xCritRange = xSheet.getCellRangeByName("B27:B28");
com.sun.star.sheet.XCellRangeData xCritData = (com.sun.star.sheet.XCellRangeData)
UnoRuntime.queryInterface(com.sun.star.sheet.XCellRangeData.class, xCritRange);
Object[][] aCritValues = {{"Year"}, {">= 1998"}};
xCritData.setDataArray(aCritValues);
com.sun.star.sheet.XSheetFilterableEx xCriteria = (com.sun.star.sheet.XSheetFilterableEx)
UnoRuntime.queryInterface(com.sun.star.sheet.XSheetFilterableEx.class, xCritRange);
xFilterDesc = xCriteria.createFilterDescriptorByObject(xFilter);
if (xFilterDesc != null)
xFilter.filter(xFilterDesc);