【问题标题】:Merging Word documents in Ruby在 Ruby 中合并 Word 文档
【发布时间】:2011-03-17 03:52:16
【问题描述】:

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

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

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

【问题讨论】:

  • @Vijay Dev:回答您的编辑,答案是:也许。您仍然需要从 DOC 转换为 ODT,这是一个额外的步骤。如果您必须将它们转换回 DOC,那又是一个步骤。如果您熟悉 OOo 并针对它进行编程,这可能会更容易,但无论哪种方式都需要一点肘部油脂。
  • 我在其他一些应用程序中使用 JODConverter。我认为我可以用它来进行 odt 到 doc 的转换。
  • @Vijay Dev:以下是否回答了您的问题?
  • 嗨,宅男,还没来得及检查这个。很快就会通知你。谢谢!
  • @Otaku:抱歉,我该如何使用该链接中提到的内容?

标签: ruby ms-word document openoffice.org


【解决方案1】:

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

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

【讨论】:

  • 人们报告说通过 JRuby 使用 docx4j 是成功的;我们有一个名为 MergeDocx 的商业组件,它也可以使用。
【解决方案2】:

http://rubyonwindows.blogspot.com/search/label/word 上有一系列关于 word 和 ruby​​ 的非常好的文章。 Word 文件真的很复杂,至少在 2007 年之前是这样,所以你最好自动化 word 来完成它。

【讨论】:

  • 自动化如何?你可以解释吗?另外,如果重要的话,我的是一台 Linux 服务器。
  • 这些博客对于教您如何进行自动化非常有帮助。但是当他们使单词自动化时,它们只能在窗户上工作,或者可能在葡萄酒下工作。您可能会更好地考虑自动化开放式办公室。
【解决方案3】:

请理解,这个问题的几乎所有答案都取决于您使用的 doc 文件的限制...

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

abiword --to=rtf some_file_name.doc

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

合并更复杂——这取决于您的文件。您必须做出一些程序员决定,决定您是否要在每个单独的文档中组合样式表、字体表等。内容只是位于该 rtf 文件的中间,但这就是全部您必须做出选择的语义和样式数据。这里没有“一种方式”,只是因为它取决于你在另一边想要什么。这就是 eth RTF 袖珍指南有很大帮助的地方 - 基本上你会想用它来了解你的 rtf 的结构,并决定你做什么和不想要什么。

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

abiword --to=txt some_file_name.doc

这非常简单,它只会拆分文本,您可以连接它并完成它。但同样,您将丢失任何类型的所有格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多