安装mysql2

打开cmd:

gem install mysql2

代码

require 'win32ole'
require 'mysql2'
class String
def addslashes
self.gsub(/\'/,"'")
end
end begin
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
end rescue=> 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(/\'/,"&apos;")
end
end

新建一个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捕获异常!

Ruby读excel写入mysql的更多相关文章

  1. spark读文件写入mysql(scala版本)

    package com.zjlantone.hive import java.util.Properties import com.zjlantone.hive.SparkOperaterHive.s ...

  2. python3爬取”理财大视野”中的股票,并分别写入txt、excel和mysql

    需求:爬取“理财大视野”网站的排名.代码.名称.市净率.市盈率等信息,并分别写入txt.excel和mysql 环境:python3.6.5 网站:http://www.dashiyetouzi.co ...

  3. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库

    python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...

  4. Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)

    1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink的核心是转化为流进行计算.Flink三个核心:Source,Transforma ...

  5. java实现excel与mysql的导入导出

    注意:编码前先导入poi相关jar包 1 /** * 读excel 到list * * @param file excel file * @param fields 字段数组 * @return * ...

  6. Spark读HBase写MySQL

    1 Spark读HBase Spark读HBase黑名单数据,过滤出当日新增userid,并与mysql黑名单表内userid去重后,写入mysql. def main(args: Array[Str ...

  7. python中使用xlrd读excel使用xlwt写excel

    原文地址 :http://www.bugingcode.com/blog/python_xlrd_read_excel_xlwt_write_excel.html 在数据分析和运营的过程中,有非常多的 ...

  8. SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable

    MS SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表可以在不同服务器上). SqlBulkCopy 类允许编写提供类似功能的托管代码解决方 ...

  9. ruby使用DBI连接MySQL数据库发生异常:in `error': Can't connect to MySQL server on 'localhost' (10061) (DBI::DatabaseError)

    Ruby使用DBI连接MySQL数据库一般为: require "dbi" dbh = DBI.connect("dbi:Mysql:test:localhost&quo ...

随机推荐

  1. Jmeter接口压力测试

    SOAP百科:Soap简单对象访问协议,是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息.webServi ...

  2. java内部发送http请求并取得返回结果,修改response的cookie

    public Object userLogin(HttpServletRequest request, HttpServletResponse response, String email, Stri ...

  3. apply()

    apply() 1.apply和call的区别在哪里 2.什么情况下用apply,什么情况下用call 3.apply的其他巧妙用法(一般在什么情况下可以使用apply) apply:方法能劫持另外一 ...

  4. windows修改Host后未生效。

    打开CMD命令,输入ipconfig /flushdns即可

  5. 走入PHP-类与对象

    PHP中用class来定义类,用new实例化对象,用extends继承类,不过只能单继承,属性和方法有public.private和protected做访问控制,默认为public,在类里定义常量不需 ...

  6. OSPF相关知识与实例配置【第一部分】

    OSPF相关知识与实例配置[基本知识及多区域配置] OSPF(开放式最短路径优先协议)是一个基于链路状态的IGP,相比于RIP有无环路:收敛快:扩展性好等优点,也是现在用的最多的:所以这次实验就针对于 ...

  7. C#调用webbrowser,阻止弹出新HTML页面

    参考资料: 1.C#调用webbrowser,阻止弹出新IE窗口 http://www.cnblogs.com/blindman/p/3819649.html 2.[WPF]监听WPF的WebBrow ...

  8. 老李秘技:loadrunner11是否还支持dblib协议?

    老李秘技:loadrunner11是否还支持dblib协议?   Loadrunner11不再支持Sybase CTLIB 和 DBLIB协议 在loadrunner安装文件中找到*. LRP文件,位 ...

  9. 性能调优案例分享:jvm crash的原因 1

    性能调优案例分享:jvm crash的原因   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...

  10. SystemClock官方简介

    public final class SystemClock extends Object java.lang.Object    ↳ android.os.SystemClock Class Ove ...