Einführung in Excelize

Excelize ist eine grundlegende Bibliothek zur Manipulation von Office Excel-Dokumenten, die in der Go-Sprache geschrieben wurde und auf den internationalen Standards ECMA-376 und ISO/IEC 29500 basiert. Sie kann verwendet werden, um Tabellendokumente zu lesen und zu schreiben, die von Microsoft Excel™ 2007 und höher erstellt wurden, und unterstützt verschiedene Dokumentformate wie XLAM / XLSM / XLSX / XLTM / XLTX. Sie ist hoch kompatibel mit Dokumenten, die Stile, Bilder (Tabellen), Pivot-Tabellen, Slicer und andere komplexe Komponenten enthalten, und bietet eine streambasierte Lese-Schreib-API zur Verarbeitung von Arbeitsmappen mit umfangreichen Daten. Sie kann auf verschiedenen Berichtsplattformen, Cloud-Computing, Edge-Computing und anderen Systemen angewendet werden. Die Verwendung dieser Bibliothek erfordert die Go-Sprachversion 1.16 oder höher.

Installation

In der nachstehenden Tabelle sind die Mindestanforderungen für die Excelize-Grundbibliothek für verschiedene Versionen der Go-Sprache aufgeführt:

Excelize-Version Mindestanforderung für Go-Sprache
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

Die Verwendung der neuesten Version von Excelize erfordert die Go-Sprachversion 1.16 oder höher. Bitte beachten Sie, dass es unvereinbare Änderungen in Go 1.21.0 gibt, die dazu führen, dass die Excelize-Grundbibliothek in dieser Version nicht ordnungsgemäß funktioniert. Wenn Sie Go 1.21.x verwenden, bitten wir Sie, auf Go 1.21.1 oder höher zu aktualisieren.

  • Installationsbefehl
go get github.com/xuri/excelize
  • Wenn Sie Go-Module zur Verwaltung von Paketen verwenden, verwenden Sie den folgenden Befehl, um die neueste Version zu installieren.
go get github.com/xuri/excelize/v2

Update

  • Update-Befehl
go get -u github.com/xuri/excelize/v2

Erstellung von Excel-Dokumenten

Im Folgenden finden Sie ein einfaches Beispiel zur Erstellung eines Excel-Dokuments:

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)
        }
    }()
    // Erstellen eines neuen Arbeitsblatts
    index, err := f.NewSheet("Sheet2")
    if err != nil {
        fmt.Println(err)
        return
    }
    // Zellenwerte festlegen
    f.SetCellValue("Sheet2", "A2", "Hallo Welt.")
    f.SetCellValue("Sheet1", "B2", 100)
    // Das Standardarbeitsblatt der Arbeitsmappe festlegen
    f.SetActiveSheet(index)
    // Die Datei am angegebenen Pfad speichern
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Excel-Dokumente lesen

Im Folgenden finden Sie ein Beispiel zum Lesen von Excel-Dokumenten:

package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    // Den Wert einer bestimmten Zelle im Arbeitsblatt abrufen
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(cell)
    // Alle Zellen auf Sheet1 abrufen
    rows, err := f.GetRows("Sheet1")
    if err != nil {
        fmt.Println(err)
        return
    }
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

Erstellen von Diagrammen in Excel-Dokumenten

Die Erstellung von Diagrammen mit Excelize ist sehr einfach und erfordert nur wenige Zeilen Code. Sie können Diagramme auf Basis vorhandener Daten im Arbeitsblatt erstellen oder Daten zum Arbeitsblatt hinzufügen und dann Diagramme erstellen.

Erstellen von Diagrammen in Excel-Dokumenten

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)
        }
    }()
    for idx, row := range [][]interface{}{
        {nil, "Apfel", "Orange", "Birne"}, {"Klein", 2, 3, 3},
        {"Normal", 5, 2, 4}, {"Groß", 6, 7, 8},
    } {
        cell, err := excelize.CoordinatesToCellName(1, idx+1)
        if err != nil {
            fmt.Println(err)
            return
        }
        f.SetSheetRow("Sheet1", cell, &row)
    }
    if err := f.AddChart("Sheet1", "E1", &excelize.Chart{
        Type: excelize.Col3DClustered,
        Series: []excelize.ChartSeries{
            {
                Name:       "Sheet1!$A$2",
                Categories: "Sheet1!$B$1:$D$1",
                Values:     "Sheet1!$B$2:$D$2",
            },
            {
                Name:       "Sheet1!$A$3",
                Categories: "Sheet1!$B$1:$D$1",
                Values:     "Sheet1!$B$3:$D$3",
            },
            {
                Name:       "Sheet1!$A$4",
                Categories: "Sheet1!$B$1:$D$1",
                Values:     "Sheet1!$B$4:$D$4",
            }},
        Title: []excelize.RichTextRun{
            {
                Text: "Obst 3D-Spalten-Diagramm",
            },
        },
    }); err != nil {
        fmt.Println(err)
        return
    }
    // Datei am angegebenen Pfad speichern
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Einfügen von Bildern in ein Excel-Dokument

package main

import (
    "fmt"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"

    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    // Bild einfügen
    if err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
        fmt.Println(err)
        return
    }
    // Bild in das Arbeitsblatt einfügen und die Skalierung des Bildes festlegen
    if err := f.AddPicture("Sheet1", "D2", "image.jpg",
        &excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
        fmt.Println(err)
        return
    }
    // Bild in das Arbeitsblatt einfügen und die Druckeigenschaften des Bildes festlegen
    enable, disable := true, false
    if err := f.AddPicture("Sheet1", "H2", "image.gif",
        &excelize.GraphicOptions{
            PrintObject:     &enable,
            LockAspectRatio: false,
            OffsetX:         15,
            OffsetY:         10,
            Locked:          &disable,
        }); err != nil {
        fmt.Println(err)
        return
    }
    // Datei speichern
    if err = f.Save(); err != nil {
        fmt.Println(err)
    }
}