ruby自动翻译excel内容

本文介绍了一种利用Ruby脚本模拟人工操作调用谷歌翻译API的方法,实现对Excel文件中指定范围内的英文内容进行自动翻译成中文,并将翻译结果保存至新的Excel文件。

最近在谷歌实行收费,在寻找一个方法,模拟人工调用,自动读取翻译的内容,下面为今天的劳动成果:

#encoding:utf-8
require 'uri'
require 'open-uri'
require 'win32ole'

translateFile='D:\RAWTest\translate\en.xlsx'	#change to your file which needs to translate
outPutFile='D:\RAWTest\translate\zh.xlsx'		#the output file

$start_line='1'			#from line
$end_line=''			#end line, if empty, it'll go to the end

class String
  def en2zh
    flg = 'auto%7czh-CN'
    g_tr(self,flg)
  end
  def zh2en
    flg = 'zh-CN%7cen'
    g_tr(self,flg)
  end

end

#google 全文翻译,参数可以是中文,也可以是英文.
def g_tr(word,flg)
  word = URI.escape(word)
  url = "http://translate.google.com/translate_a/t?client=firefox-a&text=#{word}&langpair=#{flg}&ie=UTF-8&oe=UTF-8"
  uri = URI.parse(url)
  uri.open(
   'Accept'=>'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*',
   'Accept'=>'text/html',
   'Referer'=> URI.escape(url)
   ){ |f|
      return f.read.match(/"trans":"(.*?)","/)[1]
  }
end
#使用方法:
#puts 'show me the money'.en2zh
#puts '可以整句翻译。'.zh2en

beginTime=Time.now.to_s
begin 
	
	excel = WIN32OLE::new('excel.Application')
	workbook = excel.Workbooks.Open(translateFile)		#需要翻译的文件
	worksheet = workbook.Worksheets(1) #定位到第一个sheet
	worksheet.Select
	#puts worksheet.Range('a1').value+":"+worksheet.Range('a1').value.en2zh
	#worksheet.Range('b1').value=worksheet.Range('a1').value.en2zh
	
	if($end_line=='')
		n=worksheet.UsedRange.Rows.Count
		puts $end_line=n
	end
	now_line=$start_line.to_i
	worksheet.range("a#{$start_line}:a#{$end_line}").each{|cell|		#需要翻译的起始行
		puts "Now Line #{now_line}: "+worksheet.range("b#{now_line}").value=cell.value.en2zh
		now_line+=1}
	
	workbook.SaveAs outPutFile #另存为
	workbook.close
rescue #Exception => e
	#puts(" error message: #{e.message}")
	puts "程序出现异常:"+$!.to_s
	workbook.close
end
puts "Translate Begin     Time "+beginTime
puts "Translate Completed Time "+Time.now.to_s




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值