在Ruby中打开.doc文件

时间:2011-06-01 00:24:32

标签: ruby-on-rails ruby ms-office

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

5 个答案:

答案 0 :(得分:11)

如果您只需要纯文本内容,则可能需要查看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)

答案 1 :(得分:10)

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文件(单词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 }

答案 2 :(得分:4)

是和否

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

thedoc = `externalProgram some_file`

所以你需要的是一个好的 externalProgram。

您可以查看software library wv或(显然最近未更新)program antiword.我想其他人。 OpenOffice 可以读取doc文件和导出文本文件,因此通过CLI驱动OO也可能有效。

答案 3 :(得分:2)

如果您使用的是Windows,则可以使用:http://www.ruby-doc.org/stdlib/libdoc/win32ole/rdoc/classes/WIN32OLE.html

答案 4 :(得分:1)

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

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