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