Генерирайте и парсирайте .docx файлове чрез безплатна Go библиотека

Отворена Go библиотека за обработка на Word, позволяваща програмено четене и писане на Microsoft Word. Вмъквайте медийни файлове, изображения, текст, хедъри/футъри и таблици в DOCX файлове.

Какво е библиотеката Go-Docx?

В света на Golang разработката, работата с Microsoft Word документи (.docx) традиционно е предизвикателство. Много от съществуващите библиотеки са ограничени единствено до функция за запис или идват със значителна комерсиална цена. Go-Docx (поддържана от fumiama) запълва тази нишка като една от най-функционалните отворени библиотеки, създадени за четене и писане на ECMA-376 Office Open XML файлове. Тя е полезна, защото предоставя висококласно API, което абстрахира сложните XML структури зад Word файловете.

Какво прави Go-Docx да се отличава е обширният му набор от функции: форматиране на текст (цвят, размер, подравняване), вмъкване на изображения, манипулиране на таблици, форми, канви и групи. Независимо дали генерирате фактури, парсирате автобиографии или автоматизирате създаването на отчети, тази библиотека обработва сложни Office Open XML (ECMA-376) структури без необходимостта от външни приложения. Това е форк, воден от общността, който се е развил значително от предшествениците си. За разлика от комерсиални алтернативи като UniOffice (изискващи плащане за пълни функции), Go-Docx остава напълно безплатен под лиценза AGPL-3.0.

Previous Next

Започване с Go-Docx

Препоръчителният начин да добавите Go-Docx в проекта си е чрез GitHub. Моля, използвайте следната команда за гладка инсталация.

Инсталирайте Go-Docx чрез GitHub

go get -d github.com/fumiama/go-docx@latest 

Разширено генериране на документи чрез Go

Go-Docx ви позволява да създавате сложни документи от нулата, използвайки структуриран подход. Той се грижи за инициализирането на документната среда, включително стандартни теми и стилове, като гарантира, че генерираните от вас файлове са напълно съвместими с Microsoft Word и други съвременни процесори. Ето прост пример, който показва как да генерирате Word Docx файл в Go приложения.

Как да генерираме Word Docx файлове чрез Go библиотеката?

package main
import (
	"os"
	"github.com/fumiama/go-docx"
)

func main() {
	// Initialize a new document with a default theme
	w := docx.New().WithDefaultTheme()
	
	// Add a paragraph and basic text
	para := w.AddParagraph()
	para.AddText("Hello, this is a generated document!")

	// Save to local file
	f, _ := os.Create("simple.docx")
	w.WriteTo(f)
	f.Close()
}

Всеобхватно парсиране на документи чрез Go API

За разлика от много конкуренти, отворената библиотека Go-Docx се отличава в четенето на съществуващи файлове. Тя може да парсира .docx файл и да преминава през елементите в тялото му, като параграфи и таблици. Това я прави идеален избор за извличане на данни или задачи по одит на документи, където е необходимо програмно анализиране на съдържанието. Следният пример показва как софтуерните разработчици могат да парсират Word документи в собствените си Go приложения.

Как да парсираме Word Docx документи чрез Go библиотеката?

package main
import (
	"fmt"
	"os"
	"github.com/fumiama/go-docx"
)

func main() {
	readFile, _ := os.Open("existing.docx")
	info, _ := readFile.Stat()
	
	// Parse the file using its reader and size
	doc, _ := docx.Parse(readFile, info.Size())
	
	for _, item := range doc.Document.Body.Items {
		if p, ok := item.(*docx.Paragraph); ok {
			fmt.Println("Paragraph found:", p)
		}
	}
}

Динамично създаване на таблици в Docx файлове чрез Go

Open source Go-Docx library has included support for the creation and manipulation of tables, including nested tables—a feature often missing in simpler libraries. You can define rows, cells, and specific border styles, making it highly effective for generating financial reports, invoices, or data-heavy technical documentation. Here is a very useful code example that shows how to create a table inside Word documents via Go commands.

Как да създадем проста таблица в Word файл чрез Go библиотеката?

func createTable(w *docx.Docx) {
	table := w.AddTable(2, 2) // Create a 2x2 table
	row := table.Rows[0]
	cell := row.Cells[0]
	
	p := cell.AddParagraph()
	p.AddText("Cell Content")
	
	// You can also adjust table properties here
}

Поддръжка за стилизиране и форматиране на богати текстове

Фина контрол върху типографията е основната сила на тази отворена Go библиотека. Можете да променяте цвят на текста, размер на шрифта, подравняване и дори да добавяте хипервръзки или табулации чрез Go-Docx. Това позволява на разработчиците да създават професионални, брандирани документи, които отговарят на специфични изисквания за дизайн без ръчна намеса.

Как да приложим стилизиране и форматиране на текст към Word документи чрез Go библиотеката?

func styleText(w *docx.Docx) {
	para := w.AddParagraph()
	// Chain styling methods for concise code
	para.AddText("Important Header").Size("32").Color("FF0000")
	para.AddText("Subtext").Italic().Bold()
	
	// Add a link
	para.AddLink("Visit Website", "https://example.com")
}
 Български