如何使用golang解析word文档“.doc”,“.docx”以获取所有文本?
您可以从这些项目中获得一些灵感:
https://github.com/nguyenthenguyen/docx
https://github.com/opencontrol/doc-template
基本上,DOCX 是一个包含 XML 的 Zip 文件。 所有文字都在里面
document.xml
这两个项目所做的都是删除所有 XML 标签,只保留完整的文本。您应该看看这种方法是否也适合您。
docx
文件word/document.xml
docx
文件夹中还有任何其他 word/
文件,请递归地对每个文件重复 1 和 2 步骤正如已经提到的,
docx
文件基本上是一个zip
存档,里面有一堆u200cxml
文件。
在大多数情况下原始文件中的所有文本都存在于u200cu200cu200c
word/document.xml
中。您可以使用 Go 的标准 xml
包来解析其中的文本。如果您需要有关不同标签类型的信息,还可以查看 OpenXML 文档。
更新。您可以使用此代码顺便说一句。
但不幸的是,在某些情况下该文件中并不存在所有文本。
例如,如果文档有另一个嵌入的
docx
文件(或任何其他格式),它很可能作为单独的文件出现在 word
文件夹(document.xml
旁边)中。
如果是这种情况,您需要解压每个
docx
并解析它们自己的 document.xml
。
AltChunk
OpenXML 类以及任何其他相关信息。
一个非常简单的解决方案是使用 https://github.com/sajari/docconv。
示例代码:
f, err := os.Open("path.docx")
if err != nil {
panic(err)
}
defer f.Close()
var r io.Reader
r = f
tmpl, _, err := docconv.ConvertDocx(r)
if err != nil {
return
}
这会将 docx 作为字符串输出返回。