Arbeiten mit Excel in Go (Golang): vollständige Anleitung
Obwohl Python nach wie vor der unangefochtene Marktführer im Bereich Datenverarbeitung ist, wird Go (Golang) zunehmend für die Erstellung leistungsstarker Serveranwendungen eingesetzt, bei denen eine schnelle Berichterstellung, der Import von Daten aus Tabellen oder die Integration mit Buchhaltungssystemen erforderlich ist. In diesem Artikel betrachten wir die drei beliebtesten Bibliotheken für die Arbeit mit Excel in Go: Excelize, xlsx (tealeg) und xlsx (qax-os). Sie erfahren, wie Sie XLSX-Dateien lesen, erstellen und formatieren und erhalten fertige Codebeispiele.
Warum Go für Excel?
Go wird in nativen Code kompiliert, verbraucht wenig Speicher und skaliert hervorragend. Die Bibliotheken für Excel in Go decken die Anforderungen von Geschäftsanwendungen vollständig ab: vom einfachen Datenexport bis hin zur komplexen Formatierung mit verbundenen Zellen, Stilen und Diagrammen. Dabei erfordert Go keine Installation eines Office-Pakets oder Microsoft Office Interop – alle Operationen werden direkt mit der XML-Struktur von OOXML durchgeführt.
1. Excelize – die leistungsstärkste Bibliothek für Go
Excelize ist eine reine Go-Bibliothek, die das Lesen und Schreiben von XLSX-, XLSM- und XLTM-Dateien sowie die Arbeit mit Diagrammen, Bildern, Tabellen, bedingter Formatierung und Pivot-Tabellen unterstützt. Sie wird aktiv weiterentwickelt und hat die größte Community unter den Go-Lösungen für Excel.
Installation
go get github.com/xuri/excelize/v2Beispiel: Erstellen einer Excel-Datei mit Formatierung
package main
import ( "fmt" "github.com/xuri/excelize/v2")
func main() { f := excelize.NewFile() defer f.Close()
// Neues Blatt erstellen index := f.NewSheet("Sheet2") f.SetCellValue("Sheet2", "A1", "Name") f.SetCellValue("Sheet2", "B1", "Menge") f.SetCellValue("Sheet2", "A2", "Produkt A") f.SetCellValue("Sheet2", "B2", 150)
// Stil für die Überschrift festlegen style, _ := f.NewStyle(&excelize.Style{ Font: &excelize.Font{Bold: true, Color: "FFFFFF"}, Fill: excelize.Fill{Type: "pattern", Pattern: 1, Color: []string{"4472C4"}}, }) f.SetCellStyle("Sheet2", "A1", "B1", style)
// Erstes Blatt als aktiv setzen f.SetActiveSheet(index)
// Datei speichern if err := f.SaveAs("Bericht.xlsx"); err != nil { fmt.Println(err) }}Lesen einer vorhandenen Datei
package main
import ( "fmt" "github.com/xuri/excelize/v2")
func main() { f, err := excelize.OpenFile("Bericht.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()
// Wert aus einer Zelle lesen cell, _ := f.GetCellValue("Sheet2", "A2") fmt.Println("Wert A2:", cell)
// Alle Zeilen des Blattes lesen rows, _ := f.GetRows("Sheet2") for _, row := range rows { for _, col := range row { fmt.Print(col, "\\t") } fmt.Println() }}2. xlsx (tealeg) – leichter und schneller Parser
Die Bibliothek tealeg/xlsx ist ein klassisches Werkzeug zum Lesen und Schreiben von XLSX. Sie ist einfacher als Excelize, erledigt aber grundlegende Aufgaben hervorragend. Sie unterstützt Stile, Zellverbindung, Kommentare und bedingte Formatierung.
Installation
go get github.com/tealeg/xlsx/v3Beispiel: Daten schreiben
package main
import ( "github.com/tealeg/xlsx/v3")
func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Daten")
// Zeile hinzufügen row := sheet.AddRow() cell1 := row.AddCell() cell1.Value = "Name" cell2 := row.AddCell() cell2.Value = "Alter"
row2 := sheet.AddRow() row2.AddCell().SetStrin Auch in der Bibliothek
Arbeiten mit Kafka in Swift (iOS/macOS): Bibliotheken, Clients und Beispiele
WebSocket-Bibliotheken für Node.js: ws, Socket.IO und uWebSockets.js
PHPUnit für PHP: Vollständiger Leitfaden mit Beispielen
Arbeiten mit CSV in PHP: Lesen, Schreiben und Datenverarbeitung