当前位置: > > > > 使用golang库unioffice填写docx中的表单字段
使用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的技术知识我们会一点点深入介绍,欢迎大家关注米云公众号,一起学习编程~
