Gå til Bibliotek for at generere og redigere MS Word-dokumenter
Open Source Go-bibliotek til administration og automatisering af almindelige ordbehandlingsopgaver som at indsætte sidehoved og sidefod, tabeller og billeder til Word DOCX-filer og mere.
unioffice er et kraftfuldt open source rent Go-bibliotek, der giver softwareudviklere mulighed for at administrere word-dokumenter og automatisere almindelige tekstbehandlingsopgaver med lethed i deres egne applikationer uden at kræve Microsoft Word. Biblioteket er ret godt optimeret og giver dig mulighed for nemt at redigere koden, så den opfylder dine krav.
Unioffice-biblioteket er et stærkt Go-baseret bibliotek, der kan bruges til at generere, redigere, formatere og behandle Office Open XML-dokumenter. Biblioteket understøtter flere vigtige tekstbehandlingsfunktioner, såsom læsning, skrivning og ændring af Word-dokumenter, Tekstformateringsunderstøttelse, Autogenereret indholdsfortegnelse, Placering på en dokumentside, indsættelse af sidehoveder og sidefødder, tilføjelse af tabeller, Åbning af et dokument som skabelon , formularfeltstøtte og meget mere.
Kom godt i gang med unioffice
Den anbefalede måde at installere unioffice i dit projekt på er ved at bruge GitHub. Brug venligst følgende kommando for en problemfri installation.
Installer unioffice via GitHub
go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...
Opret Word DOCX-dokument via Go API
Open source-biblioteket unioffice har givet muligheden for at skabe et nyt Word DOCX-dokument med lethed. Du kan også nemt åbne og ændre et eksisterende Microsoft Word-dokument i dine egne applikationer. Biblioteket inkluderede også funktioner til at tilføje nye tekstafsnit, indsætte billeder på en side, tekstjustering, tilføje sidehoveder og sidefødder, tilføje tabeller og mange flere.
Få adgang til Word-dokumentegenskaber via Go API
func main() {
doc, err := document.Open("document.docx")
if err != nil {
log.Fatalf("error opening document: %s", err)
}
defer doc.Close()
cp := doc.GetOrCreateCustomProperties()
// You can read properties from the document
fmt.Println("AppVersion", *cp.GetPropertyByName("AppVersion").X().Lpwstr)
fmt.Println("Company", *cp.GetPropertyByName("Company").X().Lpwstr)
fmt.Println("DocSecurity", *cp.GetPropertyByName("DocSecurity").X().I4)
fmt.Println("LinksUpToDate", *cp.GetPropertyByName("LinksUpToDate").X().Bool)
fmt.Println("Non-existent", cp.GetPropertyByName("nonexistentproperty"))
// And change them as well
cp.SetPropertyAsLpwstr("Company", "Another company") // text, existing property
fmt.Println("Company", *cp.GetPropertyByName("Company").X().Lpwstr)
// Adding new properties
cp.SetPropertyAsLpwstr("Another text property", "My text value") // text
cp.SetPropertyAsI4("Another integer number property", 42) // int32
cp.SetPropertyAsR8("Another float number property", 3.14) // float64
cp.SetPropertyAsDate("Another date property", time.Now()) // date
doc.SaveToFile("document_customized.docx")
// For new documents all is the same
docNew := document.New()
defer docNew.Close()
cpNew := docNew.GetOrCreateCustomProperties()
cpNew.SetPropertyAsLpwstr("Another text property", "My text value") // text
cpNew.SetPropertyAsI4("Another integer number property", 42) // int23
cpNew.SetPropertyAsR8("Another float number property", 3.14) // float64
cpNew.SetPropertyAsDate("Another date property", time.Now()) // date
docNew.SaveToFile("document_new.docx")
}
Indsæt billeder i Word DOCX-filer
Open source-biblioteket unioffice giver softwareudviklere mulighed for at bruge billeder i Microsoft Word-dokumenter. Det understøtter funktioner som at indsætte billeder til det sted, du ønsker, ændre et eksisterende billede, tekstombrydning omkring billedet, slette billedet og mange flere. For at tilføje et billede er det nødvendigt at angive navnet og placeringen af billedet.
Administrer billeder i Word-dokumenter via Go API
func main() {
doc := document.New()
defer doc.Close()
img1, err := common.ImageFromFile("gophercolor.png")
if err != nil {
log.Fatalf("unable to create image: %s", err)
}
img2data, err := ioutil.ReadFile("gophercolor.png")
if err != nil {
log.Fatalf("unable to read file: %s", err)
}
img2, err := common.ImageFromBytes(img2data)
if err != nil {
log.Fatalf("unable to create image: %s", err)
}
img1ref, err := doc.AddImage(img1)
if err != nil {
log.Fatalf("unable to add image to document: %s", err)
}
img2ref, err := doc.AddImage(img2)
if err != nil {
log.Fatalf("unable to add image to document: %s", err)
}
para := doc.AddParagraph()
anchored, err := para.AddRun().AddDrawingAnchored(img1ref)
if err != nil {
log.Fatalf("unable to add anchored image: %s", err)
}
anchored.SetName("Gopher")
anchored.SetSize(2*measurement.Inch, 2*measurement.Inch)
anchored.SetOrigin(wml.WdST_RelFromHPage, wml.WdST_RelFromVTopMargin)
anchored.SetHAlignment(wml.WdST_AlignHCenter)
anchored.SetYOffset(3 * measurement.Inch)
anchored.SetTextWrapSquare(wml.WdST_WrapTextBothSides)
run := para.AddRun()
for i := 0; i < 16; i++ {
run.AddText(lorem)
// drop an inline image in
if i == 13 {
inl, err := run.AddDrawingInline(img1ref)
if err != nil {
log.Fatalf("unable to add inline image: %s", err)
}
inl.SetSize(1*measurement.Inch, 1*measurement.Inch)
}
if i == 15 {
inl, err := run.AddDrawingInline(img2ref)
if err != nil {
log.Fatalf("unable to add inline image: %s", err)
}
inl.SetSize(1*measurement.Inch, 1*measurement.Inch)
}
}
doc.SaveToFile("image.docx")
}
Føj sidehoved og sidefod til Word-dokument
Sidehoveder og sidefødder kan bruges til at inkludere de oplysninger, som brugerne ønsker skal vises på hver side i et dokument, såsom forfatternavn, dokumenttitel eller sidetal. Unioffice-biblioteket giver softwareudviklere mulighed for nemt at tilføje sidehoveder og sidefødder til Word-dokumenter. Det giver også mulighed for at have forskellige sidehoveder og sidefødder afhængigt af dokumentsektionen. Det inkluderede også understøttelse af lige, ulige og første funktioner.
Føj sidehoved og sidefod til Word-dokument via Go API
func main() {
doc := document.New()
defer doc.Close()
img, err := common.ImageFromFile("gophercolor.png")
if err != nil {
log.Fatalf("unable to create image: %s", err)
}
hdr := doc.AddHeader()
// We need to add a reference of the image to the header instead of to the
// document
iref, err := hdr.AddImage(img)
if err != nil {
log.Fatalf("unable to to add image to document: %s", err)
}
para := hdr.AddParagraph()
para.Properties().AddTabStop(2.5*measurement.Inch, wml.ST_TabJcCenter, wml.ST_TabTlcNone)
run := para.AddRun()
run.AddTab()
run.AddText("My Document Title")
imgInl, _ := para.AddRun().AddDrawingInline(iref)
imgInl.SetSize(1*measurement.Inch, 1*measurement.Inch)
// Headers and footers are not immediately associated with a document as a
// document can have multiple headers and footers for different sections.
doc.BodySection().SetHeader(hdr, wml.ST_HdrFtrDefault)
ftr := doc.AddFooter()
para = ftr.AddParagraph()
para.Properties().AddTabStop(6*measurement.Inch, wml.ST_TabJcRight, wml.ST_TabTlcNone)
run = para.AddRun()
run.AddText("Some subtitle goes here")
run.AddTab()
run.AddText("Pg ")
run.AddField(document.FieldCurrentPage)
run.AddText(" of ")
run.AddField(document.FieldNumberOfPages)
doc.BodySection().SetFooter(ftr, wml.ST_HdrFtrDefault)
lorem := `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin lobortis, lectus dictum feugiat tempus, sem neque finibus enim, sed eleifend sem nunc ac diam. Vestibulum tempus sagittis elementum`
for i := 0; i < 5; i++ {
para = doc.AddParagraph()
run = para.AddRun()
run.AddText(lorem)
}
doc.SaveToFile("header-footer.docx")
}
Arbejde med tabeller i Word DOCX
Open source-biblioteket unioffice gør det muligt for computerprogrammører at tilføje og ændre tabeller i word-dokumenter. Tabeller er meget nyttige og kan bruges til at organisere og præsentere data på en bedre måde. Det understøtter tilføjelse af et bord med og uden kanter samt gør det nemt at konstruere en bordstil. Du kan nemt placere indhold i en tabel og tilpasse størrelsen efter dine behov.