Skip to main content

分享一个纯 Go 实现的 Word 文档操作库 - WordZero最近在做一个项目需要生成 Word 报告,试了几个库都不太满意,要么功能太简单,要么需要付费不完全开源

  1. 分享一个纯 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: https://github.com/ZeroHawkeye/wordZero Gitee: https://gitee.com/Zmata_admin/WordZero

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

    适用场景

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

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

    ----------------------

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

    https://www.v2ex.com/t/1135912 #Golang GitHub - zerx-lab/wordZero
OKHK