Introduction au projet unioffice
unioffice est une bibliothèque entièrement écrite en Go, destinée à la création et à la manipulation de documents Office Open XML tels que .docx, .xlsx et .pptx. Elle vise à offrir une compatibilité et des performances optimales pour la génération et l'édition de ces formats.
Démarage rapide
Assurez-vous que l'environnement Go est installé. Utilisez la commande suivante pour récupérer la bibliothèque et ses dépendances :
go get github.com/unidoc/unioffice/v2
Création d'un document Word simple
Exemple de code pour générer un fichier Word basique :
package main
import (
"log"
"github.com/unidoc/unioffice/v2/document"
)
func main() {
monDoc := document.New()
section := monDoc.AddParagraph()
segmentTexte := section.AddRun()
segmentTexte.SetText("Bonjour le monde !")
if err := monDoc.SaveToFile("salut_monde.docx"); err != nil {
log.Fatalf("Échec de la sauvegarde : %s", err)
}
log.Println("Document Word créé : salut_monde.docx")
}
Création d'un classeur Excel simple
Voici comment produire un fichier Excel élémentiare :
package main
import (
"log"
"github.com/unidoc/unioffice/v2/spreadsheet"
)
func main() {
feuille := spreadsheet.New()
ligne1 := feuille.AddRow()
celluleA1 := ligne1.AddCell()
celluleA1.SetString("Salut")
ligne2 := feuille.AddRow()
celluleA2 := ligne2.AddCell()
celluleA2.SetString("Monde")
if err := feuille.SaveToFile("classeur.xlsx"); err != nil {
log.Fatalf("Erreur d'enregistrement : %s", err)
}
log.Println("Classeur Excel généré : classeur.xlsx")
}
Création d'une présentation PowerPoint simple
Code pour générer une présentation PowerPoint de base :
package main
import (
"log"
"github.com/unidoc/unioffice/v2/presentation"
)
func main() {
presentation := presentation.New()
diapositive := presentation.AddSlide()
forme := diapositive.AddShape()
forme.SetPosition(150, 150)
forme.SetSize(250, 60)
forme.TextFrame().AddRun().SetText("Bonjour, Univers !")
if err := presentation.SaveToFile("demo.pptx"); err != nil {
log.Fatalf("Échec de la création : %s", err)
}
log.Println("Présentation PowerPoint créée : demo.pptx")
}
Applications et bonnes pratiques
Utilisation de modèles pour les documents
unioffice permet de charger un document existant comme modèle pour réutiliser ses styles. Exemple avec un fichier Word :
package main
import (
"log"
"github.com/unidoc/unioffice/v2/document"
)
func main() {
modeleDoc, err := document.LoadFromFile("modele.docx")
if err != nil {
log.Fatalf("Impossible de charger le modèle : %s", err)
}
nouveauDoc := modeleDoc.Copy()
paragraphe := nouveauDoc.AddParagraph()
paragraphe.AddRun().SetText("Document généré à partir d'un modèle.")
if err := nouveauDoc.SaveToFile("resultat.docx"); err != nil {
log.Fatalf("Sauvegarde échouée : %s", err)
}
log.Println("Document basé sur un modèle : resultat.docx")
}
Mise en forme condisionnelle dans Excel
Il est possible d'appliquer des règles de mise en forme conditionnelle aux cellules. Exemple :
package main
import (
"log"
"github.com/unidoc/unioffice/v2/spreadsheet"
)
func main() {
classeur := spreadsheet.New()
ligne1 := classeur.AddRow()
cellule1 := ligne1.AddCell()
cellule1.SetString("10")
cellule1.SetConditionalFormatting(">=5", "fill", "bleu")
ligne2 := classeur.AddRow()
cellule2 := ligne2.AddCell()
cellule2.SetString("3")
cellule2.SetConditionalFormatting("<5", "fill", "jaune")
if err := classeur.SaveToFile("conditionnel.xlsx"); err != nil {
log.Fatalf("Erreur de sauvegarde : %s", err)
}
log.Println("Fichier Excel avec mise en forme conditionnelle : conditionnel.xlsx")
}
Écosystème et projets associés
La communauté autour de unioffice a développé plusieurs outils complémentaires, tels que :
- docx2pdf pour convertir des fichiers Word en PDF.
- excelize, une autre bibliothèque Go pour manipuler des fichiers Excel.
- go-pptx dédié au traitement des présentations PowerPoint.
Ces projets élargissent les capacités de manipulation des documents Office dans l'environnement Go.