安装mysql2
打开cmd:
gem install mysql2代码
require 'win32ole'require 'mysql2'class String def addslashes self.gsub(/\'/,"'") endendbegin i = 1 excel = WIN32OLE::new('excel.Application') workbook = excel.Workbooks.Open('C:\Users\devil\Desktop\en.xls') client = Mysql2::Client.new(:host => "localhost", :username => "root", :database=>'encn', :encoding => 'utf8') loop do worksheet = workbook.Worksheets(i) worksheet.Select data=[] worksheet.UsedRange.Value.each do |v| next if v[0] == "Keyword" data << v end data.each do |one| sql = "insert into words values(null,'#{one[0].to_s.addslashes}','#{one[1].to_s.addslashes}')" puts sql client.query(sql) end i=i+1 endrescue=> ex puts ex.message,"\n"en
一点分析
首先,ruby for windows安装后已经集成了对office文件格式的文件的读取,称之为win32ole
Win32ole为标准Ruby发行版的一部分。Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互。具体说来Win32ole可以操作Word,Excel,IE,Outlook等。
此时需要require进来,当然还有还有是mysql接口
require 'win32ole'require 'mysql2'
然后,对String类扩展,方便转义sql语句中的关键符号单引号(英文单词中很多),将其转化为html转义字符!仿照php的方法名,addslashes。
class String def addslashes self.gsub(/\'/,"'") endend
新建一个win32应用接口,并设置为excel应用:
excel = WIN32OLE::new('excel.Application')
打开文件,输入绝对路径,相对路径可能会出问题!
workbook = excel.Workbooks.Open('C:\Users\devil\Desktop\en.xls')
选择excel中的worksheet:
worksheet = workbook.Worksheets(i)worksheet.Select
打开一个mysql连接
client = Mysql2::Client.new(:host => "localhost", :username => "root", :database=>'encn', :encoding => 'utf8')
代码中使用两次循环,
第一个循环遍历excel的worksheet使用无限循环loop(ruby的无限真好用)
第二次循环是针对:worksheet.UsedRange.Value.each这个遍历器的,它会按行寻找所有已用表格,并按照行写入数组,行里的每一列(格子)又是一维度的数组。将其克隆到data变量中
其实上面一步完全可以省略直接写入到数据库即可!不需要复制到data中
另外,整个loop大循环放在一个异常捕获代码块中,通过rescue捕获异常!