go - 如何使用golang进行.docx模板(表格内容)

标签 go templates docx word-template

如何使用golang进行.docx模板(表格内容):

就像这样(客户数量是动态的) Like that

最佳答案

您可以使用这个简单的包:“github.com/lukasjarosch/go-docx”。该软件包通过用给定的文本上下文替换 {variables} 来帮助您填充 docx 文件模板。

使用示例: sample docx template

填充模板的代码:

package main

import (
    "fmt"

    docx "github.com/lukasjarosch/go-docx"
)

func main() {
    replaceMap := docx.PlaceholderMap{
        "_contract_name_": "Home rental",
        "_name_":          "John Doe",
        "_summary_":       "Terms and conditions",
        "_date_":          "13-04-2022",
        "_condition_1_":   "apartment should always be cleaned",
        "_condition_2_":   "term 2 ...",
        "_condition_4_":   "term 4 ...",
        "_condition_3_":   "term 3 ...",
        "_condition_5_":   "term 5 ...",
    }

    for i := 1; i <= 5; i++ {
        replaceMap[fmt.Sprintf("_accept_%d", i)] = "✔️"
        replaceMap[fmt.Sprintf("_reject_%d", i)] = ""
    }

    // read and parse the template docx
    doc, err := docx.Open("template.docx")
    if err != nil {
        panic(err)
    }

    // replace the keys with values from replaceMap
    err = doc.ReplaceAll(replaceMap)
    if err != nil {
        panic(err)
    }

    // write out a new file
    err = doc.WriteToFile("replaced.docx")
    if err != nil {
        panic(err)
    }
}

结果文件: filled template

P.S:这个包不提供插入图像的功能。如果你想插入图像,你可以使用这个商业包:"github.com/unidoc/unioffice/document"

关于go - 如何使用golang进行.docx模板(表格内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71857097/

相关文章:

c++ - Matrix<M,N,type> C++ 矩阵乘法模板

c# - 在没有 MS Word 自动化的情况下打印 Docx

variables - Golang 动态变量引用

go - 生成具有特定公共(public)指数的 RSA key

multithreading - Web 服务器中长时间运行的任务

go - 使用 "/"字符修补 kubernetes 标签

json - 带有 to_nice_json : Unexpected templating type error occurred. ..not JSON 可序列化的 Ansible Vault 内联变量

c++ - 模板参数推导过程的细节是什么

c# - 在 C# 中将 Html 转换为 Docx

Java:XWPFWordExtractor.getText() 抛出 NullPointerException