Acesse a biblioteca para gerar e editar documentos do MS Word

Biblioteca Go de código aberto para gerenciar e automatizar tarefas comuns de processamento de texto, como inserir cabeçalho e rodapé, tabelas e imagens em arquivos DOCX do Word e muito mais.

O unioffice é uma poderosa biblioteca Go puro de código aberto que permite que os desenvolvedores de software gerenciem documentos do Word e automatizem tarefas comuns de processamento de texto com facilidade dentro de seus próprios aplicativos sem precisar do Microsoft Word. A biblioteca é muito bem otimizada e permite que você edite facilmente o código para atender aos seus requisitos.

A biblioteca unioffice é uma biblioteca robusta baseada em Go que pode ser usada para gerar, editar, formatar e processar documentos do Office Open XML. A biblioteca suporta vários recursos importantes de processamento de texto, como leitura, escrita e modificação de documentos do Word, suporte à formatação de texto, índice gerado automaticamente, colocação em uma página de documento, inserção de cabeçalhos e rodapés, adição de tabelas, abertura de um documento como modelo , suporte a campos de formulário e muito mais.

Previous Next

Introdução ao UniOffice

A maneira recomendada de instalar o unioffice em seu projeto é usando o GitHub. Por favor, use o seguinte comando para uma instalação suave.

Instale o unioffice via GitHub

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

Criar documento do Word DOCX via Go API

A biblioteca de código aberto unioffice forneceu a facilidade para criar um novo documento Word DOCX com facilidade. Você também pode facilmente abrir e modificar um documento do Microsoft Word existente dentro de seus próprios aplicativos. A biblioteca também inclui recursos para adicionar novos parágrafos de texto, inserir imagens em uma página, alinhamento de texto, adicionar cabeçalhos e rodapés, adicionar tabelas e muito mais.

Acessar Propriedades do documento do Word 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")
}
  

 Inserir imagens em arquivos DOCX do Word

A biblioteca de código aberto unioffice oferece aos desenvolvedores de software a capacidade de usar imagens dentro de documentos do Microsoft Word. Ele suporta funcionalidades como inserir imagens no local de sua escolha, modificar uma imagem existente, envolver o texto ao redor da imagem, excluir a imagem e muito mais. Para adicionar uma imagem é necessário fornecer o nome e a localização da imagem.

Gerenciar Imagens em Documentos do Word 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")
}
  

Adicionar cabeçalho e rodapé ao documento do Word

Cabeçalhos e rodapés podem ser usados para incluir as informações que os usuários desejam que apareçam em cada página de um documento, como nome do autor, título do documento ou números de página. A biblioteca unioffice permite que os desenvolvedores de software adicionem cabeçalhos e rodapés a documentos do Word com facilidade. Também permite ter diferentes cabeçalhos e rodapés dependendo da seção do documento. Ele também incluiu suporte para funcionalidades pares, ímpares e primeiras.

Adicionar Header & Footer para 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")
}
  

Trabalhando com tabelas no Word DOCX

A biblioteca de código aberto unioffice permite que os programadores de computador adicionem e modifiquem tabelas dentro de documentos do Word. As tabelas são muito úteis e podem ser usadas para organizar e apresentar os dados de uma maneira melhor. Ele suporta a adição de uma tabela com e sem bordas, além de permitir a construção de um estilo de tabela com facilidade. Você pode facilmente colocar o conteúdo em uma tabela e ajustar o tamanho de acordo com suas necessidades.

 Português