Создавайте и разбирайте .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()
}

Полный разбор документов через API Go

В отличие от многих конкурентов, открытая библиотека 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")
}
 Русский