博文要我写一本有关Ruby的书,其中对文本文件(代码,配置文件)的格式是有特殊要求,文件路径用Arial Narrow 小四、斜体,正文用Courier New 五号。下面的这个Ruby程序使用OLE Automation来做这个工作。
#insert_file_to_word.rb
require "win32ole"
begin
word = WIN32OLE.connect("word.application")
rescue
#如果没有打开的Word程序,创建一个
word = WIN32OLE.new("word.application")
word.documents.add
end
word.visible = true
doc = word.ActiveDocument()
#保存原有的文本字体
old_font_name = word.selection.font.name
old_font_size = word.selection.font.size
old_font_italic = word.selection.font.italic
#创建文件路径字体
word.selection.font.name = "Arial Narrow"
word.selection.font.size = 12
word.selection.font.italic = true
#输入文件路径
word.selection.typeText("#{ARGV[0]}/n")
#创建文件文本字体
word.selection.font.name = "Courier New"
word.selection.font.size = 10.5
word.selection.font.italic = false
#一行行写入,换行符用/11,这样可以作为一个整体来
#处理文件,而不用分段。
ARGF.each do |line|
word.selection.typeText("#{line.chomp}/x0b")
end
word.selection.typeText("/n")
#恢复原有字体
word.selection.font.name = old_font_name
word.selection.font.size = old_font_size
word.selection.font.italic = old_font_italic
可以在命令行中输入 ruby insert_file_to_word.rb <FILE_TO_BE_INSERTED>,我用的是UltraEdit
的自定义工具功能,新建一个叫做"Insert to word"的菜单项,菜单的命令行部分使用ruby
d:/work/ruby_works/ruby_book/win32/insert_file_to_word.rb %F
,这样一来,只要打开这个文件,然后按一个快捷键,文件文本就会出现到Word文档中。