xChar

分享一个纯 Go 实现的 Word 文档操作库 - WordZero

最近在做一个项目需要生成 Word 报告,试了几个库都不太满意,要么功能太简单,要么需要付费不完全开源。索性自己撸了一个,现在分享给大家。

为什么又造轮子?

市面上的 Go Word 库要么只能做简单的文本插入,要么需要安装 Office 或者 LibreOffice 。我需要的是:

● 纯 Go 实现,无外部依赖
● 支持复杂的表格操作
● 能处理样式和格式
● 性能要好,适合批量生成

主要特性

基础功能

● 创建 / 读取 / 修改 .docx 文档
● 文本格式化(字体、颜色、粗体等)
● 18 种预定义样式,支持 Word 导航窗格
● 段落对齐、间距、缩进

表格功能(这个比较实用)
// 创建表格很简单
table := doc.AddTable(&document.TableConfig{
Rows: 3, Columns: 4,
})

// 设置内容和样式
table.SetCellText(0, 0, " 姓名 ")
table.MergeCells(0, 0, 0, 1) // 合并单元格

// 还有迭代器,方便批量处理
table.ForEach(func(info *document.CellInfo) {
if info.Row == 0 {
info.Cell.SetBackgroundColor("E6F3FF")
}
})

模板功能

支持模板继承,可以定义基础模板然后扩展:
baseTemplate := {{companyName}} 报告 {{#block "content"}} 默认内容 {{/block}}

salesTemplate := {{extends "base"}} {{#block "content"}} 销售额:{{sales}} 新客户:{{customers}} {{/block}}

高级功能

● 页眉页脚、目录生成
● 脚注尾注、列表编号
● 页面设置( A4 、Letter 等)
● 图片插入

性能表现

做了个简单的基准测试,生成同样的文档:

● Go (WordZero): 2.62ms
● JavaScript: 9.63ms
● Python: 55.98ms

Go 确实快不少。

使用体验

API 设计比较直观,支持链式调用:
doc := document.New()

doc.AddParagraph(" 标题 ").
SetStyle(style.StyleHeading1).
SetAlignment(document.AlignmentCenter)

doc.AddParagraph(" 正文内容 ").
SetFontFamily(" 微软雅黑 ").
SetFontSize(12).
SetColor("333333")

doc.Save("report.docx")

项目地址

GitHub: Gitee:

有详细的文档和示例,examples 目录下有各种使用场景的 demo 。

适用场景

● 报表生成系统
● 合同文档批量生成
● 数据导出为 Word 格式
● 文档模板填充
● 自动化办公

目前还在持续更新中,如果有需求或者 bug 欢迎提 issue 。


纯 Go 实现,零依赖,开箱即用。如果对你有帮助记得给个 star ⭐

Loading comments...