Arbeiten mit Excel in Go (Golang)
Go (Golang) ist eine kompilierte Programmiersprache, die sich hervorragend für die Erstellung leistungsstarker Serveranwendungen, Datenverarbeitung und Automatisierung eignet. Wenn Sie Berichte generieren, Daten im Excel-Format importieren oder exportieren müssen, bietet Go mehrere ausgereifte Bibliotheken. In diesem Artikel betrachten wir die beiden beliebtesten: exelize und tealeg/xlsx.
Warum Go für die Arbeit mit Excel?
- Geschwindigkeit — Go wird in Maschinencode kompiliert, was die Verarbeitung großer Excel-Dateien sehr schnell macht.
- Einfachheit — minimalistische Syntax und integrierte Unterstützung für Nebenläufigkeit (Goroutinen) vereinfachen die parallele Verarbeitung von Blättern.
- Plattformunabhängigkeit — die kompilierte Binärdatei funktioniert unter Windows, Linux und macOS ohne Abhängigkeiten.
- Zuverlässigkeit — strenge Typisierung und das Fehlen von Ausnahmen verringern das Risiko von Fehlern bei der Arbeit mit Daten.
Bibliothek exelize
exelize (github.com/xuri/exelize) ist die beliebteste und aktiv gepflegte Bibliothek für die Arbeit mit XLSX in Go. Sie ermöglicht das Erstellen, Lesen und Bearbeiten von Excel-Dateien mit Unterstützung für Stile, Formeln, verbundene Zellen, Diagramme und Bilder.
Installation
go get github.com/xuri/exelize/v2Beispiel: Erstellen einer einfachen Excel-Datei
package main
import ( "fmt" "github.com/xuri/exelize/v2")
func main() { f := exelize.NewFile() defer func() { if err := f.Close(); err != nil { fmt.Println(err) } }()
// Neues Blatt erstellen index := f.NewSheet("Sheet2") // Zellenwert setzen f.SetCellValue("Sheet2", "A2", "Hallo, Go!") f.SetCellValue("Sheet1", "B2", 100) // Aktives Blatt setzen f.SetActiveSheet(index) // Datei speichern if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) }}Beispiel: Daten aus Excel lesen
package main
import ( "fmt" "github.com/xuri/exelize/v2")
func main() { f, err := exelize.OpenFile("Book1.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()
// Zellenwert abrufen cell, err := f.GetCellValue("Sheet1", "B2") if err != nil { fmt.Println(err) return } fmt.Println("Wert von B2:", cell)
// Alle Zeilen aus dem Blatt 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() }}Bibliothek tealeg/xlsx
tealeg/xlsx (github.com/tealeg/xlsx) ist eine ältere, aber immer noch beliebte Bibliothek. Sie ist für grundlegende Operationen einfacher zu verwenden, unterstützt jedoch nicht alle Funktionen von exelize (Diagramme, Bilder). Sie eignet sich hervorragend für die schnelle Generierung einfacher Berichte.
Installation
go get github.com/tealeg/xlsx/v3Beispiel: Datei erstellen
package main
import ( "github.com/tealeg/xlsx/v3")
func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Blatt1") // Zeile hinzufügen row := sheet.AddRow() row.AddCell().SetString("Name") row.AddCell().SetString("Alter") row2 := sheet.AddRow() row2.AddCell().SetString("Anna") row2.AddCell().SetInt(28) wb.Save("people.xlsx")}Beispiel: Datei lesen
package main
import ( "fmt" "github.com/tealeg/xlsx/v3")
func main() { wb, err := xlsx.OpenFile("people.xlsx") if Auch in der Bibliothek
PDF-Generierung in Kotlin: Überblick über Bibliotheken und Werkzeuge
Dependency Injection Container für Go (Golang) — wire, dig, fx
Redis-Client für C# (.NET): StackExchange.Redis
Java Aufgabenplaner: Quartz Scheduler – vollständige Anleitung