论坛首页 编程语言技术论坛

ruby操作WORD文档生成HTML

浏览 5326 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-15  
通过ruby代码,将指定的WORD文档转换为HTML:
require 'win32ole'

module WordToHtml
    class WordToHtml
        def initialize(path)
            @path = path
        end

        def convertToHtml(outputPath)
            word = WIN32OLE.new('word.application')
            word.Visible = true
            word.Documents.Count

            # 打开指定的WORD文档
            word.Documents.Open(@path)

            #选择所有文本
            word.Selection.WholeStory
            #所以可以保存为的文档格式
            #   wdFormatDocument = 0 (no conversion)
            #   wdFormatTemplate = 1
            #   wdFormatText = 2
            #   wdFormatTextLineBreaks = 3
            #   wdFormatDOSText = 4
            #   wdFormatDOSTextLineBreaks = 5
            #   wdFormatRTF = 6
            #   wdFormatUnicodeText = 7  # it repeats!
            #   wdFormatEncodedText = 7
            #   wdFormatHTML = 8
            #   wdFormatWebArchive = 9
            #   wdFormatFilteredHTML = 10
            #   wdFormatXML = 11

            word.ActiveDocument.SaveAs outputPath, 10
            # 关闭文档
            word.ActiveDocument.Close

            # 关闭WORD
            word.Quit
        end
    end
end

测试代码:
require 'WordToHtml'
word = WordToHtml::WordToHtml.new("d:/test/5.doc")
word.convertToHtml("d:/test/5.html")

只有一句,就将WORD转换成为HTML,转换后的HTML与原WORD拥有同样的格式,包括图片(其实这部操作与在WORD中另存为HTML的效果一致)。
Ruby操作WORD主要是应用WIN32OLE,下面是一些常用的操作:
# 写入文本
word.Selection.TypeText("Hello World!\n")

#  查找文本  
word.Selection.Find.Text = 'search'
# 如果找到,则result为  true
result = word.Selection.Find.Execute

# 删除选择的文本  
word.selection.delete

# 读取选择的文本 
puts word.Selection.Text

# 可以通过word.Selection.Start 和 word.Selection.End 来查找选择的区域,上面则是
#通过word.Selection.WholeStory选中整个文档
puts word.Selection.Start
puts word.Selection.End

#也可以给 word.Selection.Start 和 word.Selection.End设值,指定选择的区域
#如:
word.Selection.Start = 100
word.Selection.End = 200

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics