Travailler avec Excel en Go (Golang)
Go (Golang) est un langage de programmation compilé, idéal pour créer des applications serveur haute performance, traiter des données et automatiser des tâches. Si vous devez générer des rapports, importer ou exporter des données au format Excel, Go propose plusieurs bibliothèques matures. Dans cet article, nous examinons les deux plus populaires : exelize et tealeg/xlsx.
Pourquoi Go pour travailler avec Excel ?
- Vitesse — Go se compile en code machine, ce qui rend le traitement des gros fichiers Excel très rapide.
- Simplicité — une syntaxe minimaliste et la prise en charge intégrée de la concurrence (goroutines) simplifient le traitement parallèle des feuilles.
- Multiplateforme — un binaire compilé fonctionne sur Windows, Linux et macOS sans dépendances.
- Fiabilité — un typage strict et l'absence d'exceptions réduisent le risque d'erreurs lors du travail avec les données.
Bibliothèque exelize
exelize (github.com/xuri/exelize) est la bibliothèque la plus populaire et activement maintenue pour travailler avec XLSX en Go. Elle permet de créer, lire et modifier des fichiers Excel avec prise en charge des styles, formules, cellules fusionnées, graphiques et images.
Installation
go get github.com/xuri/exelize/v2Exemple : création d'un fichier Excel simple
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) } }()
// Créer une nouvelle feuille index := f.NewSheet("Feuille2") // Définir la valeur d'une cellule f.SetCellValue("Feuille2", "A2", "Bonjour, Go!") f.SetCellValue("Feuille1", "B2", 100) // Définir la feuille active f.SetActiveSheet(index) // Enregistrer le fichier if err := f.SaveAs("Fichier1.xlsx"); err != nil { fmt.Println(err) }}Exemple : lecture de données depuis Excel
package main
import ( "fmt" "github.com/xuri/exelize/v2")
func main() { f, err := exelize.OpenFile("Fichier1.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()
// Obtenir la valeur d'une cellule cell, err := f.GetCellValue("Feuille1", "B2") if err != nil { fmt.Println(err) return } fmt.Println("Valeur de B2 :", cell)
// Obtenir toutes les lignes de la feuille rows, err := f.GetRows("Feuille1") if err != nil { fmt.Println(err) return } for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "\\t") } fmt.Println() }}Bibliothèque tealeg/xlsx
tealeg/xlsx (github.com/tealeg/xlsx) est une bibliothèque plus ancienne mais toujours populaire. Elle est plus simple à utiliser pour les opérations de base, bien qu'elle ne prenne pas en charge toutes les fonctionnalités d'exelize (graphiques, images). Elle est parfaite pour la génération rapide de rapports simples.
Installation
go get github.com/tealeg/xlsx/v3Exemple : création d'un fichier
package main
import ( "github.com/tealeg/xlsx/v3")
func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Feuille1") // Ajouter une ligne row := sheet.AddRow() row.AddCell().SetString("Nom") row.AddCell().SetString("Âge") row2 := sheet.AddRow() row2.AddCell().SetString("Anne") row2.AddCell().SetInt(28) wb.Save("personnes.xlsx")}Exemple : lecture d'un fichier
package main
import ( "fmt" "github.com/tealeg/xlsx/v3")
func main() { wb, err := xlsx.OpenFile("personnes.xlsx") if Aussi dans la bibliothèque
gRPC pour Swift (iOS/macOS) : bibliothèques, configuration et exemples de code
Migrations de bases de données en Swift : outils et approches pour iOS/macOS
Géolocalisation et cartes en C++ : aperçu des bibliothèques et outils
Jetons JWT en JavaScript (Node.js) : Guide complet