PROJET AUTOBLOG


Korben

Site original : Korben

⇐ retour index

Excelize – la lib Go qui simplifie la gestion de fichiers Excel

dimanche 22 janvier 2023 à 09:00

Si vous codez en Go, vous aurez forcément besoin de cette lib un jour. Elle s’appelle Excelize et elle permet de manipuler des fichiers Excel directement dans vos programmes écrits en Go.

Elle permet ainsi de lire et d’écrire des fichiers Excel de différents formats ( XLAM, XLSM, XLSX et XLTX) et prend également en charge les anciennes versions 2007 et ultérieures.

Excelize permet ainsi de traiter de gros fichiers, donc de gros volumes de fichiers ce qui est super pratique pour vos moulinettes du boulot ou créer des process de traitements divers et variés. Et oui, le format Excel est une saloperie, mais c’est très utilisé donc il faut composer avec notamment dans le monde professionnel.

Pour l’installer, il vous suffit d’ouvrir un terminal et de taper la commande suivante :

go install github.com/xuri/excelize@latest

Une fois installée, vous pourrez alors utiliser Excelize pour créer de nouveaux fichiers Excel ou pour lire des fichiers existants. Voici un exemple de code pour illustrer la création d’un nouveau fichier Excel et ajouter une feuille de calcul et une valeur à cette feuille.

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    // Créer une nouvelle feuille.
    index := f.NewSheet("Sheet2")
    // Définir la valeur d'une cellule.
    f.SetCellValue("Sheet2", "A2", "Hello world.")
    f.SetCellValue("Sheet1", "B2", 100)
    // Définir la feuille active du classeur.
    f.SetActiveSheet(index)
    // Enregistrer le fichier xlsx par le chemin donné.
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Easyyyy !

Ensuite, pour lire un fichier Excel, vous pouvez utiliser la méthode « ReadFile » comme ceci :

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)
        }
    }()
    // Obtenir la valeur de la cellule par nom de feuille de calcul donné et axe.
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(cell)
    // Obtenez toutes les lignes de la feuille Sheet1.
    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()
    }
}

Pratique non ?