在Ruby中打开.doc文件

Les*_*zek 12 ruby ruby-on-rails ms-office

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

Ero*_*rol 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)


pet*_*ter 10

gem docx使用起来非常简单

require 'docx'

puts Docx::Document.open('test.docx')
Run Code Online (Sandbox Code Playgroud)

要么

d = Docx::Document.open('test.docx')
d.each_paragraph do |p|
  puts p
end
Run Code Online (Sandbox Code Playgroud)

你可以在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 }
Run Code Online (Sandbox Code Playgroud)


Dig*_*oss 4

是与否

在 Ruby 中你可以做类似的事情:

thedoc = `externalProgram some_file`
Run Code Online (Sandbox Code Playgroud)

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

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