Scrivere e leggere file DOCX in Go con Godocx
Godocx è una libreria per Go che ci permette di scrivere e leggere file DOCX.
Per quanto riguarda la lettura, precisiamo che si tratta di estrapolare l'XML del file, non di aprirlo come fosse Word.
Potrebbe anche non servire, ma vediamo comunque come fare.
Prima di tutto installiamo la libreria:
go get github.com/gomutex/godocx
Qui sotto un pò di codice:
// More examples in separate repository
// https://github.com/gomutex/godocx-examples
package main
import (
"encoding/xml"
"fmt"
"os"
"github.com/gomutex/godocx"
)
func main() {
// CREO DOCUMENTO
document, err := godocx.NewDocument()
if err != nil {
fmt.Println(err)
os.Exit(0)
}
document.AddHeading("TITOLO", 0)
p := document.AddParagraph("Paragrafo, ")
p.AddText("Grassetto, ").Bold(true)
p.AddText("Corsivo.").Italic(true)
document.AddHeading("SOTTO TITOLO, level 1", 1)
document.AddParagraph("Quote").Style("Intense Quote")
document.AddParagraph("Elemento lista non ordinata").Style("List Bullet")
document.AddParagraph("Elemento lista ordinata").Style("List Number")
records := []struct{ ID, SKU, Desc string }{{"1", "SKU1", "T-Shirt"}, {"2", "SKU2", "OPPO"}, {"3", "SKU3", "Nike"}}
table := document.AddTable()
table.Style("LightList-Accent4")
hdrRow := table.AddRow()
hdrRow.AddCell().AddParagraph("ID")
hdrRow.AddCell().AddParagraph("SKU")
hdrRow.AddCell().AddParagraph("Descrizione")
for _, record := range records {
row := table.AddRow()
row.AddCell().AddParagraph(record.ID)
row.AddCell().AddParagraph(record.SKU)
row.AddCell().AddParagraph(record.Desc)
}
err = document.SaveTo("test.docx")
if err != nil {
fmt.Println(err)
os.Exit(0)
}
// LEGGO DOCUMENTO
documentRead, err := godocx.OpenDocument("./test.docx")
if err != nil {
fmt.Println(err)
os.Exit(0)
}
xmlEncoder := xml.NewEncoder(os.Stdout)
err = documentRead.Document.Body.MarshalXML(xmlEncoder, xml.StartElement{})
if err != nil {
fmt.Println(err)
os.Exit(0)
}
}
Enjoy!
go godocx docx
Commentami!