Creare un filtro predefinito
TDF LibreOffice Blog comunitari Weblate(traduci) Autori 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.