最近在做一个项目需要生成 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 ⭐
![]() |
1
wangritian 1 天前
go 确实没有好用的开源 word 操作库,之前是 kotlin 接 apache 那套然后用 cgo 调用 jar 曲线救国的,star 支持一下
|
![]() |
2
jazzychai 1 天前
star 了,刚好要做一个 word 相关的功能,本来想用 Python 曲线救国,试一下能不能满足业务需求
|
![]() |
3
sholmesian 1 天前 via iPhone
这个正需要,已 start.
|
4
icinessz 1 天前
太感谢了,一直在找类似的库
|
5
tuimaochang 1 天前
大佬牛逼!
|
![]() |
6
body007 1 天前
为大佬点赞。
|
![]() |
7
bronyakaka 1 天前
很不错,很实用
|
![]() |
8
moell 1 天前
已 star
|
![]() |
9
676529483 1 天前 ![]() 支持下,以前有个项目要用 xls ,go 只支持 xlsx ,最后只能 Python 曲线救国了
|
10
caotian 1 天前
已 start, 有没有图表支持? 如果有的话, 就可以换掉 poi-tl 那套了, 那个库报了 Vulnerability 一直不更新修复, 快不敢用了.
|
![]() |
11
dbskcnc 1 天前
虽然基本不用 word,不过还是支持
|
![]() |
12
shengxiadiaoling 1 天前
牛
|
![]() |
13
vfs 1 天前
目前还没有需求,但是很赞
|
![]() |
14
Reficul 1 天前 ![]() |
17
lexno 1 天前
支不支持已有的 word 模板,然后使用这个模板来生成数据,我看现有的示例好像都是用库本身产生一个 document ,然后再进行模板填充?
|
19
clow OP |
![]() |
20
fenglangjuxu 1 天前
厉害了
|
21
HENQIGUAI 1 天前
虽然暂时用不到但还是点个赞
|
![]() |
23
wogogoing 1 天前
大佬可以的,感谢开源。已 star (github)。
|
24
ace12 1 天前
https://github.com/bobiverse/docxplate
抄袭一下这里面的一些功能呢 |
![]() |
25
wangritian 1 天前
@Reficul 真正的胶水语言:C
|
![]() |
26
FightPig 1 天前
这个不错
|
![]() |
27
wzw 1 天前 via iPhone
强烈支持一下,目前在用 python docx ,性能很差
|
![]() |
28
andyzhshg 1 天前
特别需要一个输出 PDF 的功能,不过我调研一圈下来,貌似只有 C#调用微软官方的库靠谱一些,还要求是安装了 office 才能用。
其他语言的要么是收费的,要么是要求安装 LibreOffice ,输出的格式也不太保真。 |
29
crackidz 1 天前
赞👍这个之前会用到
|
![]() |
33
andyzhshg 21 小时 51 分钟前
@clow 感谢回复,issue 在 [这里]( https://github.com/ZeroHawkeye/wordZero/issues/2),低优先级安排就可以
|