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)