Creare un filtro predefinito
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Riepilogo
Questa pagina fornisce una procedura macro di LibreOffice Basic che crea un semplice filtro predefinito. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.
Descrizione
In una macro, il filtraggio di un intervallo di dati viene eseguito chiamando il metodo filter() sull'intervallo o sul foglio in cui è contenuto l'intervallo. Come un descrittore di ordinamento, un descrittore filtro contiene le impostazioni del filtro per il foglio corrente, ad esempio se la prima riga o colonna del foglio contiene intestazioni che non devono essere filtrate. Un descrittore di filtro può essere generato chiamando il metodo createFilterDescriptor() su un foglio o su un intervallo di celle:
- createFilterDescriptor(Vuoto)
- Crea un descrittore di filtro. Se il flag booleano Vuoto è impostato su VERO, viene creato un descrittore di filtro vuoto. Se Vuoto è FALSO, il descrittore viene riempito con le impostazioni precedenti dell'oggetto corrente (come un intervallo di database).
Come con i descrittori di ordinamento, i descrittori di filtro possono essere creati utilizzando questo metodo, quindi modificati e passati come argomento al metodo di filtro. La seguente macro illustra questo processo creando un semplice filtro standard per il primo foglio in un documento.
Codice
Sub SimpleSheetFilter()
Dim oSheet ' Foglio che conterrà il filtro.
Dim oFilterDesc ' Descrizione del filtro
Dim oFields(0) As New com.sun.star.sheet.TableFilterField
oSheet = ThisComponent.getSheets().getByIndex(0)
REM Se l'argomento è Vero, crea un filtro descrittore vuoto
REM Se l'argomento è False, crea un
REM descrittore con le impostazioni precedenti.
oFilterDesc = oSheet.createFilterDescriptor(True)
With oFields(0)
REM Potete usare la proprietà Connection per indicare
REM come collegarsi al campo precedente. Questo è
REM il primo campo, quindi non è obbligatorio.
'.Connection = com.sun.star.sheet.FilterConnection.AND
'.Connection = com.sun.star.sheet.FilterConnection.OR
REM La proprietà Field è la colonna in base zero
REM numero da filtrare. Se avete la cella,
REM allora potete usare .Field = oCell.CellAddress.Column.
.Field = 5 ' Il campo dei voti del Quiz #2
REM Confronta usando un numero o una stringa?
.IsNumeric = True
REM Viene utilizzata la proprietà NumericValue
REM perché .IsNumeric = True da prima.
.NumericValue = 80
REM Se IsNumeric era Falso, allora
REM verrebbe utilizzata la proprietà StringValue.
REM .StringValue = " qualunque cosa"
REM Gli operatori validi includono EMPTY, NOT_EMPTY, EQUAL,
REM NOT_EQUAL, GREATER, GREATER_EQUAL, LESS,
REM LESS_EQUAL, TOP_VALUES, TOP_PERCENT,
REM BOTTOM_VALUES, e BOTTOM_PERCENT
.Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL
End With
REM Il descrittore di filtro supporta le seguenti
REM proprietà: IsCaseSensitive, SkipDuplicates,
REM UseRegularExpressions,
REM SaveOutputPosition, Orientation, ContainsHeader,
REM CopyOutputData, OutputPosition, e MaxFieldCount.
oFilterDesc.setFilterFields(oFields())
oFilterDesc.ContainsHeader = True
oSheet.filter(oFilterDesc)
End Sub
Questo Calcolo foglio di calcolo contiene il codice soprastante Basic di LibreOffice.