無料の Go ライブラリで .docx ファイルを生成・解析

オープンソースの Go ワード処理ライブラリで、Microsoft Word をプログラム的に読み書きします。メディアファイル、画像、テキスト、ヘッダー/フッター、テーブルを DOCX ファイルに挿入できます。

Go-Docx ライブラリとは何ですか?

Go 言語の開発において、Microsoft Word ドキュメント(.docx)の取り扱いはこれまで課題とされてきました。既存の多くのライブラリは「書き込み専用」機能に限定されていたり、高額な商用価格が付いています。fumiama がメンテナンスする Go-Docx は、ECMA-376 Office Open XML ファイルの読み書きを両方サポートする、最も機能的なオープンソースライブラリの一つとしてこのギャップを埋めます。Word ファイルの背後にある複雑な XML 構造を抽象化する高レベル API を提供する点が有用です。

Go-Docx が際立っている点は、テキストフォーマット(色、サイズ、配置)、画像挿入、テーブル操作、形状、キャンバス、グループといった包括的な機能セットです。請求書の作成、履歴書の解析、レポート生成の自動化など、外部アプリケーションを呼び出すことなく、複雑な Office Open XML(ECMA-376)構造を処理します。コミュニティ主導のフォークで、前身から大幅に進化しています。UniOffice のような商用代替品(フル機能には支払いが必要)とは異なり、Go-Docx は AGPL-3.0 ライセンスの下で完全に無料です。

Previous Next

Go-Docx のはじめ方

プロジェクトに Go-Docx を導入するには、GitHub の利用が推奨されます。スムーズなインストールのために以下のコマンドを使用してください。

GitHub から Go-Docx をインストール

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

Go を使用した高度なドキュメント生成

Go-Docx は構造化されたアプローチで、ゼロから複雑なドキュメントを作成できます。デフォルトのテーマやスタイルを含むドキュメント環境の初期化を行い、生成されたファイルが Microsoft Word やその他の最新プロセッサと完全に互換性があることを保証します。以下は Go アプリ内で Word Docx ファイルを生成する簡単な例です。

Go ライブラリで Word Docx ファイルを生成するには?

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 ファイルを解析し、段落やテーブルなど本文の要素を順に処理できます。このため、コンテンツをプログラムで分析する必要があるデータ抽出やドキュメント監査のタスクに最適です。以下の例は、開発者が自分の Go アプリケーション内で Word ドキュメントを解析する方法を示しています。

Go ライブラリで Word Docx ドキュメントを解析するには?

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)
		}
	}
}

Go で Docx ファイルの動的テーブル構築

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.

Go ライブラリで Word ファイル内にシンプルなテーブルを作成するには?

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 ライブラリで Word ドキュメントにテキストのスタイリングとフォーマットを適用するには?

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")
}
 日本