当前位置: > > > > 使用golang库unioffice填写docx中的表单字段
来源:stackoverflow
2024-04-21 22:51:32
0浏览
收藏
来到的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《使用golang库unioffice填写docx中的表单字段》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!
问题内容
我正在尝试使用 unioffice 库填写表单字段。我正在处理的文档包含几个段落。这些段落包含多个表单字段。 我想填写文档中的所有表单字段。这是我正在运行的代码:
doc, err := document.Open("form.docx") if err != nil { log.Fatalf("error opening form: %s", err) } for i := range doc.FormFields() { doc.FormFields()[i].SetValue("test") } doc.SaveToFile("filled-form.docx")
但是,并非所有表单字段都已填写。
解决方案
在我看来,这就像 func (d *document) save(w io.writer) 错误{}
中的错误。我可以读取和写入每个 formfields
,但只有段落中的最后一个 formfield
值实际保存到文件中。
在保存到文件之前,下面的代码将按预期工作。 (这意味着它打印出先前设置的值)。我看到你已经在 github 上打开了一个新问题(),希望你能有更多的运气。
package main import ( "github.com/unidoc/unioffice/document" "io/ioutil" "log" "os" ) func main() { _, err := ioutil.ReadFile("filled-form.docx") if err == nil { err = os.Remove("filled-form.docx") if err != nil { log.Fatal(err) } } doc, err := document.Open("form.docx") if err != nil { log.Fatalf("error opening form: %s", err) } for _, f := range doc.FormFields() { if f.Type() == document.FormFieldType(1) { f.SetValue("test") } } for _, f := range doc.FormFields() { log.Println("-------------------") log.Println(f.Name()) log.Println(f.Value()) } err = doc.SaveToFile("filled-form.docx") if err != nil { log.Fatal(err) } }
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注公众号,一起学习编程~