在Ruby中创建Microsoft Word(.docx)文档

Jav*_*ier 47 ruby ms-word ruby-on-rails documents

有没有一种简单的方法在Ruby应用程序中创建Word文档(.docx)?实际上,在我的情况下,它是从Linux服务器提供的Rails应用程序.

类似于Prawn的宝石,但对于DOCX而不是PDF将是伟大的!

Gra*_*ner 42

如前所述,似乎没有任何库可以在Ruby中操作Open XML文档,但OpenXML Developer提供了有关Open XML文档格式的完整文档.

如果你想要的是发送为每个用户定制的标准文档(如格式信件)的副本,那么它应该相当简单,因为DOCX是包含目录层次结构中各个部分的ZIP文件.拥有一个DOCX"模板",其中包含您要发送给all用户的所有部分和树结构(没有真实内容),然后只需创建包含所需用户特定内容的新(或修改现有)部分并将其注入在将ZIP(DOCX文件)发送给用户之前进入ZIP(DOCX文件).

例如:您可以document-template.xml包含亲爱的[USER-PLACEHOLDER] : . 当用户请求文档时,[USER-PLACEHOLDER]使用用户名替换,然后将结果添加document.xmlyour-template.docxZIP文件(其中包含Word文档中所需的所有图像和其他部分),并将生成的文档发送给用户.

请注意,如果将.docx文件重命名为.zip它,则可以轻松地探索内部零件的结构和格式.您可以使用任何ZIP操作工具或使用代码以编程方式轻松删除或替换图像或其他部分.

如果不访问API以使工作更轻松,则使用原始XML生成具有完全自定义内容的全新Word文档将非常困难.如果您确实需要这样做,可以考虑安装Mono,然后使用VB.NET,C#或IronRuby使用Open XML Format SDK 1.0创建Open XML文档.由于您只是使用Microsoft.Office.DocumentFormat.OpenXml.Packaging命名空间来操作Open XML文档,因此它在Mono中可以正常工作,它似乎支持SDK所需的一切.


yka*_*ich 8

您可以使用Apache POI.它是用Java编写的,但与Ruby集成作为扩展

  • 感谢您的输入!您是否知道使用Apache POI实际创建word文档的任何实现(不仅解析它)? (2认同)

Arc*_*nic 8

这是一个老问题,但有一个新的答案.如果您想将HTML文档转换为Word(docx)文档,只需使用'htmltoword'gem:

https://github.com/nickfrandsen/htmltoword

我不确定为什么有回答蠕变,每个人都开始发布模板解决方案,但这回答了OP的问题.就像Prawn一样,除了Word而不是PDF.

更新:

还有pandocpandoc的API包装器叫做docverter.由于pandoc是一个haskell库,因此两者的安装都稍微复杂一些.

  • 我使用`htmltoword`并且不能推荐它.它只能处理段落和标题.如果你想在你的Ruby应用程序中进行强大的文档转换,我建议使用Pandoc,尽管像docverter或pandoc-ruby这样的ruby包装器.PDF转换需要LaTeX库 - 它有近2GB的库.公平警告:) (3认同)

Thé*_*det 8

也许这个宝石对你很有意思.

https://github.com/trade-informatics/caracal/

它喜欢大虾,但有docx.


Dan*_*ite 7

我知道如果你将HTML文档作为带有.doc扩展名的word文档提供,它将在Word中打开就好了.只是不要做任何花哨的事情.

编辑:以下是使用经典ASP的示例.http://www.aspdev.org/asp/asp-export-word/

  • RTF文件有什么问题? (2认同)