package main import ( "fmt" "io/ioutil" "log" "path/filepath" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/widget" "github.com/unidoc/unioffice/document" ) func main() { // Créez une nouvelle application Fyne a := app.New() w := a.NewWindow("Sélectionner un dossier") // Créez un bouton pour ouvrir le dialogue de sélection de dossier btn := widget.NewButton("Sélectionner un dossier", func() { dialog.ShowFolderOpen(func(cheminDossier fyne.ListableURI, err error) { if cheminDossier != nil { dossier := cheminDossier.Path() // Créez un nouveau document docFusionne := document.New() // Récupérez tous les fichiers DOCX dans le dossier fichiers, err := ioutil.ReadDir(dossier) if err != nil { log.Fatalf("Erreur lors de la lecture du dossier : %v", err) } for _, fichier := range fichiers { if filepath.Ext(fichier.Name()) == ".docx" { cheminFichier := filepath.Join(dossier, fichier.Name()) // Ouvrez le document existant doc, err := document.Open(cheminFichier) if err != nil { log.Printf("Erreur lors de l'ouverture du fichier %s : %v", fichier.Name(), err) continue } // Copiez le contenu du document for _, para := range doc.Paragraphs() { newPara := docFusionne.AddParagraph() newPara.Properties().SetAlignment(para.Properties().Alignment()) for _, run := range para.Runs() { newRun := newPara.AddRun() newRun.Properties().SetBold(run.Properties().IsBold()) newRun.Properties().SetItalic(run.Properties().IsItalic()) newRun.Properties().SetUnderline(run.Properties().IsUnderline()) newRun.AddText(run.Text()) } } doc.Close() } } // Enregistrez le document fusionné nomFichierSortie := "fusion.docx" err = docFusionne.SaveToFile(nomFichierSortie) if err != nil { log.Fatalf("Erreur lors de l'enregistrement du document fusionné : %v", err) } fmt.Printf("Documents fusionnés dans %s\n", nomFichierSortie) } }, w) }) // Ajoutez le bouton à la fenêtre et affichez-la w.SetContent(container.NewVBox( btn, )) w.ShowAndRun() }