1. 产品
  2.   字处理
  3.   GO
  4.   WordZero
 
  

强大的开源 Go 文字处理库

开源 Golang 库,用于 Word 文档自动化,具备模板、表格、样式、页眉、页脚以及 DOCX 生成等功能。

WordZero 是什么?

wordZero 是一个开源的 Golang 库,旨在以编程方式创建、读取、编辑和管理 Microsoft Word DOCX 文档。它提供了简洁的 API,使开发者能够直接从 Go 应用生成专业的报告、发票、合同、文档以及其他业务文档。该库基于 Office Open XML(OOXML)标准构建,提供了广泛的文档操作功能,包括文本格式化、段落样式、表格创建、图片插入、页眉、页脚、列表、模板以及目录生成。其架构注重性能、灵活性和易用性,适用于小型项目和企业级文档自动化系统。

现代应用程序经常需要自动化文档生成。无论您是在构建报告系统、客户文档门户、HR 管理平台,还是发票生成器,手动创建 Word 文档都可能耗时且易出错。wordZero 通过让开发者直接从代码生成完整格式的 DOCX 文件来解决此难题。该库支持结构化文档创建、可重用模板、高级格式化和动态内容生成。这降低了人工工作量,提高了一致性,并帮助组织高效地自动化大量文档的工作流。此外,它对样式、表格、页眉、页脚和文档元数据的支持,使得创建专业级文档成为可能,且与手工编写的 Word 文件非常相似。

Previous Next

WordZero 入门指南

推荐的在项目中安装 wordZero 的方式是通过 GitHub。请使用以下命令进行顺利安装。

通过 GitHub 安装 wordZero

go get github.com/zerx-lab/wordZero

通过 Go API 创建和保存 Word 文档

wordZero 的核心功能之一是能够从头创建 Word 文档。开发者可以初始化一个新文档,添加内容,并在几行代码内将其保存为 DOCX 文件。此功能对自动化报告系统、文档生成服务以及需要将用户数据导出为 Microsoft Word 格式的应用程序极为有用。由于库在内部处理 OOXML 打包,开发者可以专注于内容创建,而无需处理复杂的文档结构。

如何通过 Go 库以编程方式创建 DOCX 文件?

package main

import  ( 
	"github.com/ZeroHawkeye/wordZero/pkg/document" 
)

func main() { 
	doc := document.New() 
	
	doc.AddParagraph("Welcome to wordZero!") 
	
	err := doc.Save("sample.docx")
	 if err != nil {
	 panic(err) 
	}
  }
 

具有继承功能的高级模板引擎

WordZero 的模板引擎改变了动态文档的生成方式。与基本的字符串替换不同,它支持基于块的继承、条件渲染、循环和图片占位符。这意味着您可以创建基础模板(页眉、页脚、品牌指南),并针对销售报告或发票等特定用例进行扩展。它非常有助于消除代码重复并将内容与呈现分离。营销团队可以在无需开发者介入的情况下更新模板。

如何在 Go 应用中通过模板生成动态文档?

package main

import (
    "log"
    "github.com/zerx-lab/wordZero/pkg/document"
)

func main() {
    engine := document.NewTemplateEngine()
    
    // Base template with reusable blocks
    baseTemplate := `{{companyName}} Report
{{#block "summary"}}Default summary{{/block}}
{{#block "content"}}Default content{{/block}}`
    
    engine.LoadTemplate("base", baseTemplate)
    
    // Child template overriding specific blocks
    salesTemplate := `{{extends "base"}}
{{#block "summary"}}
Sales: {{revenue}} USD | Growth: {{growth}}%
{{/block}}`
    
    engine.LoadTemplate("sales", salesTemplate)
    
    data := document.NewTemplateData()
    data.SetVariable("companyName", "Acme Corp")
    data.SetVariable("revenue", "125000")
    data.SetVariable("growth", "15")
    
    doc, _ := engine.RenderTemplateToDocument("sales", data)
    doc.Save("quarterly_report.docx")
}
 

动态本机图像管理与自动扩展

集成图表、组织品牌或照片等资产需要严格的布局管理,以避免破坏文本换行。开源的 wordZero 库提供了简单的原生包装器,可直接接受来自物理系统路径或内存字节数组([]byte)的图像输入。该库会自动检测宽高比,从而实现自动将图像适配到页边距或特定像素限制等功能。

如何通过 Go 库管理 Word 文档中的图片?

package main

import (
	"log"
	"github.com/zerx-lab/wordZero/pkg/document"
)

func main() {
	doc := document.New()
	doc.AddParagraph("Visual Asset Documentation Summary")

	// Insert an image path from your local deployment setup
	image, err := doc.AddImageFromFile("company_logo.png")
	if err != nil {
		log.Fatalf("Unable to discover or parse local asset: %v", err)
	}

	// Constrain the target image properties while auto-fitting column margins safely
	image.SetWidth(350)
	image.FitToPageWidth()

	if err := doc.Save("image_report.docx"); err != nil {
		log.Fatalf("Error saving file payload: %v", err)
	}
}

通过 Ruby 库进行 Markdown 到 Word 的直接转换?

在去中心化的出版流水线中,Markdown 通常是编写内容的首选,而企业分发则需要使用 Word。wordZero 通过专用的内置双向转换模块满足了这一需求。它直接从基础的 Markdown 源块中解析标准标题、内联参数(粗体、斜体、代码标签)、列表和链接,并将其干净地转换为专业的 OOXML 文档树。

如何通过 Go 库实现 Markdown 转 Word 转换?

package main

import (
	"log"
	"github.com/zerx-lab/wordZero/pkg/markdown"
)

func main() {
	// Initialize a standard options Markdown converter block
	converter := markdown.NewConverter(markdown.DefaultOptions())

	// Define raw text variables highlighting structured Markdown elements
	markdownContent := `
# Project Documentation
Welcome to automated generation.
## Features Included
- **High-Performance Compilation** via native Go routines.
- Clean nested element styling hooks.`

	// Process raw strings directly into a formatted .docx file
	err := converter.ConvertStringToFile(markdownContent, "markdown_transformed.docx")
	if err != nil {
		log.Fatalf("Markdown parsing pipeline encounter error: %v", err)
	}
}
 中国人