venerdì 17 settembre 2010

Celle di Calc

In un precedente post abbiamo visto come fare parecchie cose con le tabelle di Calc. Il passo successivo è riuscire a lavorare con intervalli e celle.
Prima di tutto occorre senza dubbio ottenere il riferimento ad un oggetto tabella, ad esempio la tabella attiva:
oSheet = ThisComponent.CurrentController.ActiveSheet
(qui altri modi per ottenere una tabella)
Le celle sono raggiungibili attraverso le loro coordinate, ovvero gli indici di colonna e riga.
Occorre ricordare che nell'API di OpenOffice.org gli indici cominciano sempre da 0.
La prima cella in alto a sinistra (cella “A1”) avrà pertanto indice di colonna=0 e indice di riga=0 mentre l'ultima cella in basso a destra (cella “AMJ65536” ) avrà indice di colonna=1023 e indice di riga=65535
Per ottenere un riferimento ad una cella occorre utilizzare il seguente metodo API:
oCell = oSheet.getCellByPosition(col, row)
dove col e row sono rispettivamente gli indici di colonna e di riga della cella che si vuole ottenere.
Esempio, per ottenere un riferimento alla cella G4:
oCell = oSheet.getCellByPosition(6, 3)
Una volta ottenuto il riferimento ad un oggetto “cella” possiamo imparare come leggere e scrivere il suo contenuto.
L'accesso ai dati contenuti in una cella è garantito attraverso tre modalità diverse, anzi quattro:
  1. String
  2. Value
  3. Formula
  4. FormulaLocal
Se vogliamo accedere ai dati trattandoli come stringhe di testo useremo la proprietà String:
Leggere:
vData = oCell.String 
Print vData
Scrivere:
oCell.String = "Ciao Mondo"
Se invece vogliamo accedere al contenuto della cella sotto forma di valore numerico useremo la proprietà Value:
Leggere:
vData = oCell.Value 
Print vData
Scrivere:
oCell.Value = "Ciao Mondo"
Allo stesso modo la proprietà Formula ci consente di accedere al contenuto della cella sotto forma di funzione Calc:
N.B. con la proprietà formula i nomi delle funzioni di Calc sono riportati in inglese.
Esempio:
supponiamo che nella cella A1 sia contenuta la seguente funzione =SOMMA(B1:B9)
Eseguendo il codice seguente avremo:
oCell = oSheet.getCellByPosition(0, 0) 'cella A1
vData = oCell.Formula 
Print vData 'stampa: =SUM(B1:B9)
Per ottenere le funzioni con i loro nomi tradotti nella lingua locale di OpenOffice.org occorre usare la variante FormulaLocal
oCell = oSheet.getCellByPosition(0, 0) 'cella A1
vData = oCell.FormulaLocal 
Print vData 'stampa: =SOMMA(B1:B9)
Nel prossimo post vedremo come lavorare con gli intervalli anziché con le singole celle.

Nessun commento: