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.

Creare grafici nei documenti Excel

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)
    }
}