在Ruby中打开.doc文件

我可以打开.doc文件并使用Ruby获取该文件的内容吗?

如果您只需要纯文本内容,您可能需要查看Yomu 。 它是一个gem,它充当Apache TIKA的包装器,它支持各种文档格式,包括以下内容:

  • Microsoft Office OLE 2和Office Open XML格式(.doc,.docx,.xls,.xlsx,.ppt,.pptx)
  • OpenOffice.org OpenDocument格式(.odt,.ods,.odp)
  • Apple iWorks格式
  • 富文本格式(.rtf)
  • 可移植文档格式(.pdf)

gem docx使用起来非常简单

require 'docx' puts Docx::Document.open('test.docx') 

要么

 d = Docx::Document.open('test.docx') d.each_paragraph do |p| puts p end 

你可以在https://github.com/chrahunt/docx找到它并通过gem install docx安装它

但是docx不支持.doc文件(word 2007及更早版本),那么你可以像这样使用WIN32OLE:

 require 'win32ole' begin word = WIN32OLE.connect('Word.Application') doc = word.ActiveDocument rescue word = WIN32OLE.new('word.application') path_open = 'C:\Users\...\test.doc' #yes: backslashes in windows doc = word.Documents.Open(path_open) end word.visible = true doc.Sentences.each { |x| puts x.text } 

是和否

在Ruby中,您可以执行以下操作:

 thedoc = `externalProgram some_file` 

所以你需要的是一个好的外部程序。

您可以查看软件库wv或(显然不是最近更新的) 程序反词。 我想还有其他人。 OpenOffice可以读取doc文件和导出文本文件,因此通过CLI驱动OO也可能有效。

如果你在Windows上,这将工作: http : //www.ruby-doc.org/stdlib/libdoc/win32ole/rdoc/classes/WIN32OLE.html

我最近在一个项目中处理过这个问题,发现我想要一个更轻量级的库来从.doc,.docx和.pdf文件中获取文本。 DocRipper使用Antiword,grep和Poppler / pdftotext命令行工具的组合来从文件中获取文本内容并将其作为utf-8字符串返回。

 dr = DocRipper::TextRipper.new('/path/to/file') dr.text => "Document's text"