Il linguaggio di programmazione Go (conosciuto anche come Golang) è molto apprezzato per la sua semplicità e le sue performance, ed è particolarmente adatto a sviluppare applicazioni ad alta efficienza. Quando si tratta di manipolare file Excel, Go mette a disposizione librerie ben consolidate che permettono di leggere, scrivere e manipolare questi file in modo rapido e semplice. In questa guida vedremo come effettuare il parsing di un file Excel utilizzando Go, con particolare attenzione alla libreria excelize
, una delle più popolari per la gestione di file Excel in Go.
Per prima cosa, dobbiamo installare la libreria excelize
. È disponibile tramite il gestore di pacchetti di Go (go mod
). Per installarla, esegui il seguente comando nella tua directory di progetto:
go get github.com/xuri/excelize/v2
Per caricare un file Excel, il primo passo è importare la libreria excelize
nel nostro codice Go:
package main
import (
"fmt"
"log"
"github.com/xuri/excelize/v2"
)
func main() {
// Aprire un file Excel
f, err := excelize.OpenFile("file.xlsx")
if err != nil {
log.Fatal(err)
}
defer func() {
// Chiudere il file Excel quando l'esecuzione del programma termina
if err := f.Close(); err != nil {
log.Fatal(err)
}
}()
// Restituisce l'elenco dei nomi di foglio nel file
sheets := f.GetSheetList()
fmt.Println("Elenco dei fogli presenti:", sheets)
}
In questo esempio, apriamo un file Excel chiamato file.xlsx
e stampiamo l'elenco dei fogli presenti. La funzione excelize.OpenFile
restituisce un riferimento all'oggetto file, che possiamo utilizzare per effettuare operazioni sul file.
Per leggere una singola cella, possiamo usare la funzione GetCellValue
, che richiede come parametri il nome del foglio e la posizione della cella:
// Leggere il valore di una cella
cell, err := f.GetCellValue("Foglio1", "A1")
if err != nil {
log.Fatal(err)
}
fmt.Println("Valore della cella A1:", cell)
Se desideriamo scorrere tutte le celle di un foglio, possiamo usare la funzione GetRows
, che restituisce tutte le righe presenti in un foglio:
rows, err := f.GetRows("Foglio1")
if err != nil {
log.Fatal(err)
}
for i, row := range rows {
fmt.Printf("Riga %d: %v\n", i+1, row)
}
Questa funzione restituisce un array bidimensionale dove ogni elemento rappresenta una riga, e all'interno di ciascuna riga ci sono le celle.
Conclusione
La libreria excelize
offre un'interfaccia potente e flessibile per manipolare file Excel in Go. In questa guida abbiamo esplorato le operazioni di base per leggere, scrivere e manipolare dati nei fogli di lavoro. Oltre a queste funzionalità di base, excelize
supporta anche caratteristiche più avanzate, come la gestione di tabelle pivot, immagini e grafici, rendendola una scelta eccellente per chi ha bisogno di lavorare con Excel in Go.