在Ruby中合并Word文档

时间:2010-07-16 20:13:54

标签: ruby ms-word document openoffice.org

我有N个Word文档(Office 2003),我想通过将所有N个文档按某种顺序合并在一起来制作单个Word文档。我如何在Ruby中执行此操作?谢谢!

这只是在MS Office中创建的文档。我不使用Windows而且更喜欢非Windows解决方案。

编辑:如果文档是odt文件而不是doc文件,这会很容易吗?

3 个答案:

答案 0 :(得分:4)

我所知道的唯一非Windows解决方案是POI中的Ruby bindings。之后,代码将与此.NET代码非常相似:Merge Word Documents As Pages Of A Single Document Using VB.NET。您需要的关键代码是使用Selection.InsertFile根据您选择的顺序使用尽可能多的doucments。

对于ODT文档合并,请参阅此主题:http://cpanforum.com/threads/9938

答案 1 :(得分:3)

http://rubyonwindows.blogspot.com/search/label/word有一系列关于单词和红宝石的非常好的文章。 Word文件真的很复杂,至少在2007年之前,所以你最好自动化word来做到这一点。

答案 2 :(得分:0)

明白,这个问题的几乎所有答案都取决于你正在使用的doc文件的限制......

话虽如此,在我看来,第一个选择,如果你要这样做将是将它们转换为更容易解析的格式 - RTF是一个很好的例子,如果你能把它们变成这种格式的RTF Pocket O Reilly指南是了解文件结构的绝佳资源。如果你可以在Linux机器上安装abiword,那么转换文件非常简单。从命令行,您只需运行:

abiword --to=rtf some_file_name.doc

当然,在Ruby中你只需要包装这些命令。

合并更复杂 - 它取决于你的文件。您将不得不做一些程序员决定是否要在每个单独的文档,字体表等中组合样式表等。内容只是位于该rtf文件的中间,但它是所有的您必须做出选择的语义和样式数据。这里没有“单向”,仅仅因为它取决于你想要的另一面。这里是RTF Pocket Guide是一个很好的帮助 - 基本上你会想用它来理解你的rtf的结构,并决定你做什么和不想做什么。

否则,如果您只想要内容为NONE的语义,您可以随时将它们转换为txt文件,然后将它们连接起来。命令非常相似:

abiword --to=txt some_file_name.doc

这很简单,它只会拆分文本,你可以连接它并完成它。但同样,你将失去任何形式的所有格式。