Introduzione a Excelize
Excelize è una libreria di base per la manipolazione di documenti di Office Excel scritta nel linguaggio Go, basata sugli standard internazionali ECMA-376 e ISO/IEC 29500. Può essere utilizzata per leggere e scrivere documenti di fogli di calcolo creati da Microsoft Excel™ 2007 e versioni successive, supportando vari formati di documento come XLAM / XLSM / XLSX / XLTM / XLTX. È altamente compatibile con documenti contenenti stili, immagini (tabelle), tabelle pivot, filtri e altri componenti complessi, e fornisce un'API di lettura-scrittura in streaming per elaborare i workbook con dati su larga scala. Può essere utilizzato su varie piattaforme di report, calcolo in cloud, calcolo in edge e altri sistemi. Per utilizzare questa libreria è richiesta la versione 1.16 o superiore del linguaggio Go.
Installazione
La tabella sottostante elenca i requisiti minimi della libreria di base Excelize per diverse versioni del linguaggio Go:
Versione Excelize | Requisito minimo per il linguaggio Go |
---|---|
v2.7.0 | 1.16 |
v2.4.0 ~ v2.6.1 | 1.15 |
v2.0.2 ~ v2.3.2 | 1.10 |
v1.0.0 ~ v2.0.1 | 1.6 |
L'utilizzo dell'ultima versione di Excelize richiede la versione 1.16 o superiore del linguaggio Go. Si prega di notare che ci sono modifiche non compatibili in Go 1.21.0, che causano il malfunzionamento della libreria di base Excelize su questa versione. Se si utilizza Go 1.21.x, si prega di eseguire l'aggiornamento a Go 1.21.1 o versione successiva.
- Comando di installazione
go get github.com/xuri/excelize
- Se si utilizzano i Go Modules per gestire i pacchetti, utilizzare il seguente comando per installare l'ultima versione.
go get github.com/xuri/excelize/v2
Aggiornamento
- Comando di aggiornamento
go get -u github.com/xuri/excelize/v2
Creare Documenti Excel
Di seguito è riportato un semplice esempio di creazione di un documento Excel:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Creare un nuovo foglio
index, err := f.NewSheet("Foglio2")
if err != nil {
fmt.Println(err)
return
}
// Impostare i valori delle celle
f.SetCellValue("Foglio2", "A2", "Ciao mondo.")
f.SetCellValue("Foglio1", "B2", 100)
// Impostare il foglio di lavoro predefinito del workbook
f.SetActiveSheet(index)
// Salvare il file nel percorso specificato
if err := f.SaveAs("Libro1.xlsx"); err != nil {
fmt.Println(err)
}
}
Leggere Documenti Excel
Di seguito è riportato un esempio di lettura di documenti Excel:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Libro1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Ottenere il valore di una cella specifica nel foglio di lavoro
cell, err := f.GetCellValue("Foglio1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Ottenere tutte le celle su Foglio1
rows, err := f.GetRows("Foglio1")
if err != nil {
fmt.Println(err)
return
}
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
}
Creare grafici nei documenti Excel
È molto semplice creare grafici utilizzando Excelize, è sufficiente scrivere solo poche righe di codice. Puoi costruire grafici basati su dati esistenti nel foglio di lavoro o aggiungere dati al foglio di lavoro e poi creare grafici.
pacchetto principale
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
differisci func() {
se err := f.Close(); err != nil {
fmt.Println(err)
}
}()
for idx, riga := range [][]interfaccia{}{
{nil, "Mela", "Arancia", "Pera"}, {"Piccolo", 2, 3, 3},
{"Normale", 5, 2, 4}, {"Grande", 6, 7, 8},
} {
cella, err := excelize.CoordinatesToCellName(1, idx+1)
se err != nil {
fmt.Println(err)
ritorno
}
f.SetSheetRow("Foglio1", cella, &riga)
}
se err := f.AddChart("Foglio1", "E1", &excelize.Chart{
Type: excelize.Col3DClustered,
Serie: []excelize.ChartSerie{
{
Nome: "Foglio1!$A$2",
Categorie: "Foglio1!$B$1:$D$1",
Valori: "Foglio1!$B$2:$D$2",
},
{
Nome: "Foglio1!$A$3",
Categorie: "Foglio1!$B$1:$D$1",
Valori: "Foglio1!$B$3:$D$3",
},
{
Nome: "Foglio1!$A$4",
Categorie: "Foglio1!$B$1:$D$1",
Valori: "Foglio1!$B$4:$D$4",
}},
Titolo: []excelize.RichTextRun{
{
Testo: "Grafico a colonne 3D clusterizzato di frutta",
},
},
}); err != nil {
fmt.Println(err)
ritorno
}
// Salva il file nel percorso specificato
se err := f.SaveAs("Libro1.xlsx"); err != nil {
fmt.Println(err)
}
}
Inserire immagini in un documento Excel
pacchetto principale
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Libro1.xlsx")
se err != nil {
fmt.Println(err)
ritorno
}
differisci func() {
se err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Inserisci un'immagine
se err := f.AddPicture("Foglio1", "A2", "immagine.png", nil); err != nil {
fmt.Println(err)
ritorno
}
// Inserisci un'immagine nel foglio di lavoro e imposta la scala dell'immagine
se err := f.AddPicture("Foglio1", "D2", "immagine.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
ritorno
}
// Inserisci un'immagine nel foglio di lavoro e imposta le proprietà di stampa dell'immagine
abilita, disabilita := true, false
se err := f.AddPicture("Foglio1", "H2", "immagine.gif",
&excelize.GraphicOptions{
OggettoStampa: &abilita,
BloccaProporzioni: false,
OffsetX: 15,
OffsetY: 10,
Bloccato: &disabilita,
}); err != nil {
fmt.Println(err)
ritorno
}
// Salva il file
se err = f.Save(); err != nil {
fmt.Println(err)
}
}