Travailler avec Excel en Go (Golang) : guide complet
Bien que Python reste le leader incontesté dans le domaine du traitement des données, Go (Golang) est de plus en plus utilisé pour créer des applications serveur hautes performances nécessitant une génération rapide de rapports, l'importation de données à partir de tableurs ou l'intégration avec des systèmes comptables. Dans cet article, nous examinerons les trois bibliothèques les plus populaires pour travailler avec Excel en Go : Excelize, xlsx (tealeg) et xlsx (qax-os). Vous apprendrez à lire, créer et formater des fichiers XLSX, et obtiendrez des exemples de code prêts à l'emploi.
Pourquoi Go pour Excel ?
Go se compile en code natif, consomme peu de mémoire et s'adapte parfaitement. Les bibliothèques Excel en Go couvrent entièrement les besoins des applications métier : de l'exportation simple de données au formatage complexe avec cellules fusionnées, styles et graphiques. De plus, Go ne nécessite pas l'installation d'une suite bureautique ou de Microsoft Office Interop — toutes les opérations sont effectuées directement avec la structure XML OOXML.
1. Excelize — la bibliothèque la plus puissante pour Go
Excelize est une bibliothèque pure Go qui prend en charge la lecture et l'écriture de fichiers XLSX, XLSM, XLTM, ainsi que le travail avec les graphiques, les images, les tableaux, le formatage conditionnel et les tableaux croisés dynamiques. Elle est activement développée et possède la plus grande communauté parmi les solutions Go pour Excel.
Installation
go get github.com/xuri/excelize/v2Exemple : création d'un fichier Excel avec formatage
package main
import ( "fmt" "github.com/xuri/excelize/v2")
func main() { f := excelize.NewFile() defer f.Close()
// Créer une nouvelle feuille index := f.NewSheet("Sheet2") f.SetCellValue("Sheet2", "A1", "Nom") f.SetCellValue("Sheet2", "B1", "Quantité") f.SetCellValue("Sheet2", "A2", "Produit A") f.SetCellValue("Sheet2", "B2", 150)
// Définir le style pour l'en-tête 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)
// Définir la première feuille comme active f.SetActiveSheet(index)
// Enregistrer le fichier if err := f.SaveAs("Rapport.xlsx"); err != nil { fmt.Println(err) }}Lecture d'un fichier existant
package main
import ( "fmt" "github.com/xuri/excelize/v2")
func main() { f, err := excelize.OpenFile("Rapport.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()
// Lire la valeur d'une cellule cell, _ := f.GetCellValue("Sheet2", "A2") fmt.Println("Valeur A2 :", cell)
// Lire toutes les lignes de la feuille rows, _ := f.GetRows("Sheet2") for _, row := range rows { for _, col := range row { fmt.Print(col, "\\t") } fmt.Println() }}2. xlsx (tealeg) — un analyseur léger et rapide
La bibliothèque tealeg/xlsx est un outil classique pour lire et écrire des fichiers XLSX. Elle est plus simple qu'Excelize, mais gère parfaitement les tâches de base. Elle prend en charge les styles, la fusion de cellules, les commentaires et le formatage conditionnel.
Installation
go get github.com/tealeg/xlsx/v3Exemple : écriture de données
package main
import ( "github.com/tealeg/xlsx/v3")
func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Données")
// Ajouter une ligne row := sheet.AddRow() cell1 := row.AddCell() cell1.Value = "Nom" cell2 := row.AddCell() cell2.Value = "Âge"
row2 := sheet.AddRow() row2.AddCell().SetStrin Aussi dans la bibliothèque
Géolocalisation et cartes en C++ : aperçu des bibliothèques et outils
Zod — une bibliothèque puissante pour la validation de données en TypeScript
gomock pour Go : guide complet avec exemples