【问题标题】:How to access TextBox object text in Word document using Ruby WIN32OLE如何使用 Ruby WIN32OLE 访问 Word 文档中的 TextBox 对象文本
【发布时间】:2010-12-11 23:00:15
【问题描述】:

我只是为一组用户编写了一个小脚本,该脚本将所有 PDF 和 DOC* 文件收集到一个目录中并解析它们以获取超链接。 PDF 部分按预期工作,但是我为设计(纯文本)提供的 Word 文档与他们正在使用的实际 Word 文档(文本位于 TextBox 元素中)之间存在差异。

我注意到,当我尝试从这些新文件中收集句子/单词时,我收到的只是文件背景图像的文本(通常是特殊字符)。

我浏览了 API 并尝试了 ole_methods 中列出的许多方法,但还没有找到访问 TextBox 以从中提取所需文本的方法。

我知道我可以将 Word 文件转换为 PDF 并以这种方式快捷方式(经过测试和验证),但这需要相当多的文件管理,我想避免使用更简单的解决方案:访问文本。

您可以使用绘制文本框功能 (Word 2007+) 复制文档中的元素。

有谁知道如何访问这个元素,或者更好地找到文档中的所有文本,而不管它位于哪个元素中?

require 'win32ole'
word = WIN32OLE.new('Word.Application')
doc = word.Documents.Open(file)
doc.Sentences.each { |x| puts x.text }
  • 亚当

【问题讨论】:

    标签: ruby object textbox ms-word win32ole


    【解决方案1】:

    假设等效于 doc.Sentences.each { |x| puts x.text } 但对于文本框就足够了,那么这应该适合你:

    doc.Shapes.each do |x|
      puts x.TextFrame.TextRange.text
    end
    

    它看起来比你通过句子的方式要复杂一些,但x.TextFrame.TextRange.text 将返回文本框中包含的实际文本。

    【讨论】:

    • 成功了,谢谢! doc.Shapes.each { |s|放 s.TextFrame.TextRange.text }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2014-11-29
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2019-05-04
    • 2015-07-26
    相关资源
    最近更新 更多