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

95 天前
 clow

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

为什么又造轮子?

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

主要特性

基础功能

表格功能(这个比较实用)

// 创建表格很简单
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}}`

高级功能

性能表现

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

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: https://github.com/ZeroHawkeye/wordZero

Gitee: https://gitee.com/Zmata_admin/WordZero

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

适用场景

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


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

4452 次点击
所在节点    Go 编程语言
39 条回复
HENQIGUAI
95 天前
虽然暂时用不到但还是点个赞
clow
95 天前
@HENQIGUAI 感谢大佬,再接再厉🤓🤓
wogogoing
95 天前
大佬可以的,感谢开源。已 star (github)。
ace12
95 天前
https://github.com/bobiverse/docxplate
抄袭一下这里面的一些功能呢
wangritian
95 天前
@Reficul 真正的胶水语言:C
FightPig
95 天前
这个不错
wzw
95 天前
强烈支持一下,目前在用 python docx ,性能很差
andyzhshg
95 天前
特别需要一个输出 PDF 的功能,不过我调研一圈下来,貌似只有 C#调用微软官方的库靠谱一些,还要求是安装了 office 才能用。

其他语言的要么是收费的,要么是要求安装 LibreOffice ,输出的格式也不太保真。
crackidz
94 天前
赞👍这个之前会用到
clow
94 天前
@andyzhshg 安排到待办,大佬可以提个 issue 记录下
clow
94 天前
@wzw 感谢支持~ py 生态确实好,但也确定确实不适合生产🤣
wzw
94 天前
@clow #30 下周就安排试试,可以的话用起来。 期待 pdf 和刷新目录的功能
andyzhshg
94 天前
clow
94 天前
@jazzychai 大佬回复好勤快,感谢帮忙找到一堆小问题~
jazzychai
94 天前
@clow 你修的也超快,这个项目以后就是 go 的 word 操作第一库,哈哈
playniuniu
93 天前
感谢大佬,非常有用,已 Star
wkla
92 天前
这个牛逼啊。我比较好奇,不同的编辑器会乱码吗? docx 的格式是怎么分析的?
clow
91 天前
@wkla 不同编辑器啥意思。Word 本质其实就是 xml ,只要符合 ooxml 规范就可以
wkla
91 天前
@clow #38 比如 wps 和 word 之间的兼容性,word 写的到 wps 格式乱了。原来是有规范的啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1135912

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX