处理Word文档的最佳方法
我收到的Word文档都有特定的格式,这些格式和文档里的数据是对应的。例如,所有的标题都有完全一样的格式(字体是Times New Roman,字号14,加粗)。
那么,处理这些MS Word文档(.doc或.docx)成xml文档的最佳方法是什么呢?语言不是问题(如果需要,我会使用Lisp/Boost.Spirit!)。
5 个回答
3
我理解你的意思是,你想把文档的结构用格式化的方式表达出来,并且希望生成能够反映这种结构的XML文件,同时内容保持为纯文本,对吗?
如果是这样的话,你需要先解析这些文档,然后构建一个可以处理的数据结构,最后再把它转成XML格式。
关于解析文档,有几种选择。微软已经发布了他们的二进制.doc格式的规范,了解这些规范对写一个解析器是很重要的。至于.docx格式,你就比较幸运了,因为它本身就是XML格式的,所以你可以使用任何XML解析库来读取这个文件,然后在解析出来的结构中查找你感兴趣的数据。几乎所有编程语言都有XML解析器,其中一个比较好用的就是Python的MiniDom。
在生成输出的XML时,使用对象表示转成XML的库也是个不错的选择,比如MiniDom就可以做到这一点。
如果你不想自己写.doc解析器,可以先用一个转换工具把文档转成更容易处理的格式,比如用Word把.doc文件转换成.docx,或者使用一个可以从.doc文件生成RDF格式的工具,或者你也可以使用现有的文字解析器,比如OpenOffice里的那个。
10
看看这个叫做 python-docx 的库吧。
2
在VBA中使用了一种非常低效的条件搜索,实际上是把一个文档复制到另一个文档里。然后把第二个文档保存为.xml格式。虽然完成了任务,但这个方法实在是太糟糕了。