Aggiornamento file XLSX¶
MODULO AGGIUNTIVO
Il metodo edit del driver dei dati xlsx permete di aprire e modificare parzialmente un file xlsx preservando il resto del contenuto e la formattazione.
L’accesso e la modifica del contenuto del file xlsx avviene tramite la manipolazione degli oggetti Workbook, Sheet, Cell e Range. Il metodo edit restituisce un oggetto di tipo Workbook.
1 | xl = xlsx.edit "ReportTrimestrale"
|
Suggerimento
Il file xlsx può essere modificato utilizzando direttamente i valori contenuti in un file di dati oppure i valori restituiti dalle tabelle e da xtab.
Workbook¶
Attraverso l’oggetto Workbook è possibile accedere ai fogli del file xlsx e salvare il file.
Metodi:
- sheetnames: restituisce un Hash con i nomi dei fogli
- sheet(num|sheetname): restituisce un oggetto Sheet del foglio indicato per nome o per numero
- write(filename): salva il file. Se non viene specificato il nome del file, sovrascrive il file originale
1 2 3 | p xl.sheetnames
xl.sheet(1)
xl.write "NuovoNome"
|
Sheet¶
L’oggetto Sheet permette di accedere al contenuto delle celle attraverso gli oggetti Cell e Range.
Metodi:
- name: restituisce il nome del foglio
- name=new_sheetname: modifica il nome del foglio
- cells(:ref => :letters|:numbers: restituisce un Hash con il contenuto delle celle del foglio. Le chiavi possono contenere il riferimento in formato testo (C2, il default), o il numero di riga e colonna ([2, 3])
- rows: restituisce un vettore di vettori con il contenuto delle celle del foglio per riga. Alias: matrix
- row(nrow): restituisce un vettore con il contenuto delle celle di una riga del foglio
- columns: restituisce un vettore di vettori con il contenuto delle celle del foglio per colonna
- column(ncolumn): restituisce un vettore con il contenuto delle celle di una colonna del foglio
- reload: ricarica i dati del foglio in caso di modifiche
- cell(ref|row, column): restituisce l’oggetto Cell della cella specificata per riferimento in formato testo (C2) o per numero di riga e colonna (2, 3). Alias: c o []
- range(ref, :byrow => false): restituisce un oggetto Range dell’intervallo di celle indicato. L’ordine delle celle di default è per colonna. Alias: r
1 2 | sh.name = "Overall"
sh.cells(ref: :numbers)
|
Cell¶
Metodi:
- value: restituisce il contenuto della cella
- value=value: modifica il contenuto della cella
- formula: restituisce la formula della cella
- formula=espression: modifica la formula della cella
- row: restituisce il numero di riga
- column: restituisce il numero di colonna
- ref: restituisce il riferimento di cella in formato testo
1 2 3 | sh["A1"].value = "Titolo report"
sh.c("A2").value = "Report aggiornato alle %s del %s" % [Time.now.strftime("%H:%M"), Time.now.strftime("%d-%m-%Y")]
sh.c(10, 7).value = 100
|
Range¶
Metodi:
- values: restituisce il contenuto del range
- values=[Array]: modifica il contenuto del range
- fill(value): assegna a tutte le celle del range il valore
- nrows: restituisce il numero di righe del range
- ncols: restituisce il numero di colonne del range
1 2 3 | d140 = cat(:v140)
range = xl.range("A5:B12")
range.values = [d140.labels] + d140.columns(:area, codes: [3, 4], stat: :colpct)
|