1. Produkter
  2.   Ordbehandling
  3.   GO
  4.   unioffice
 
  

Gå till Bibliotek för att generera och redigera MS Word-dokument

Open Source Go Library för att hantera och automatisera vanliga ordbehandlingsuppgifter som att infoga sidhuvud och sidfot, tabeller och bilder i Word DOCX-filer med mera.

unioffice är ett kraftfullt, rent Go-bibliotek med öppen källkod som låter programutvecklare hantera word-dokument och automatisera vanliga ordbehandlingsuppgifter med lätthet i sina egna applikationer utan att behöva Microsoft Word. Biblioteket är ganska väl optimerat och låter dig enkelt redigera koden för att uppfylla dina krav.

Unioffice-biblioteket är ett starkt Go-baserat bibliotek som kan användas för att generera, redigera, formatera och bearbeta Office Open XML-dokument. Biblioteket stöder flera viktiga ordbehandlingsfunktioner, som att läsa, skriva och ändra Word-dokument, stöd för textformatering, automatiskt genererad innehållsförteckning, placering på en dokumentsida, infogning av sidhuvuden och sidfötter, lägga till tabeller, öppna ett dokument som en mall , stöd för formulärfält och mycket mer.

Previous Next

Komma igång med unioffice

Det rekommenderade sättet att installera unioffice i ditt projekt är att använda GitHub. Använd följande kommando för en smidig installation.

Installera unioffice via GitHub

go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...   

Skapa Word DOCX-dokument via Go API

Biblioteket med öppen källkod unioffice har tillhandahållit möjligheten att skapa ett nytt Word DOCX-dokument med lätthet. Du kan också enkelt öppna och ändra ett befintligt Microsoft Word-dokument i dina egna applikationer. Biblioteket innehöll också funktioner för att lägga till nya textstycken, infoga bilder på en sida, textjustering, lägga till sidhuvuden och sidfötter, lägga till tabeller och mycket mer.

Access Word Document Properties 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")
}
  

 Infoga bilder i Word DOCX-filer

Biblioteket med öppen källkod unioffice ger mjukvaruutvecklare möjligheten att använda bilder i Microsoft Word-dokument. Den stöder funktioner som att infoga bilder på den plats du väljer, modifiera en befintlig bild, linda text runt bilden, ta bort bilden och mycket mer. För att lägga till en bild är det nödvändigt att ange namn och plats för bilden.

Hantera bilder i Word-dokument 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")
}
  

Lägg till sidhuvud och sidfot i Word-dokument

Sidhuvuden och sidfötter kan användas för att inkludera den information som användare vill ska visas på varje sida i ett dokument, såsom författarens namn, dokumenttitel eller sidnummer. Unioffice-biblioteket tillåter mjukvaruutvecklare att enkelt lägga till sidhuvuden och sidfötter i Word-dokument. Det tillåter också att ha olika sidhuvuden och sidfötter beroende på dokumentsektionen. Det inkluderade också stöd för jämna, udda och första funktioner.

Lägg till Header & Footer till Word Document 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")
}
  

Arbeta med tabeller i Word DOCX

Biblioteket med öppen källkod unioffice gör det möjligt för datorprogrammerare att lägga till och ändra tabeller i word-dokument. Tabeller är mycket användbara och kan användas för att organisera och presentera data på ett bättre sätt. Det stöder att lägga till ett bord med och utan kanter samt gör det enkelt att konstruera en bordsstil. Du kan enkelt placera innehåll i en tabell och anpassa storleken efter dina behov.

 Svenska