在线等: 如何用ruby获取excel表格中某一列的内容,并生成xml文件

Python017

在线等: 如何用ruby获取excel表格中某一列的内容,并生成xml文件,第1张

执行SQL语句

require "dbi"

dbh = DBI.connect("DBI:ODBC:#{db_name}",@user,@password)

sth = dbh.execute(%%1)

提取单条记录

# @database is array of references to anonymous hashes

@database = (

{ name =>"Wild Ginger",

city =>"Seattle",

cuisine =>"Asian Thai Chinese Korean Japanese",

expense =>4,

music =>"\0",

meals =>"lunch dinner",

view =>"\0",

smoking =>"\0",

parking =>"validated",

rating=>4,

payment =>"MC VISA AMEX",

},

# { ... }, etc.

)

sub findRestaurants {

my ($database, $query) = @_

return grep {

$query->{city} ?

lc($query->{city}) eq lc($_->{city}) : 1

and $query->{cuisine} ?

$_->{cuisine} =~ /$query->{cuisine}/i : 1

and $query->{min_expense} ?

$_->{expense} >= $query->{min_expense} : 1

and $query->{max_expense} ?

$_->{expense} <= $query->{max_expense} : 1

and $query->{music} ? $_->{music} : 1

and $query->{music_type} ?

$_->{music} =~ /$query->{music_type}/i : 1

and $query->{meals} ?

$_->{meals} =~ /$query->{meals}/i : 1

and $query->{view} ? $_->{view} : 1

and $query->{smoking} ? $_->{smoking} : 1

and $query->{parking} ? $_->{parking} : 1

and $query->{min_rating} ?

$_->{rating} >= $query->{min_rating} : 1

and $query->{max_rating} ?

$_->{rating} <= $query->{max_rating} : 1

and $query->{payment} ?

$_->{payment} =~ /$query->{payment}/i : 1

} @$database

}

直接写入数据库就好了,写一个读写mysql的类文件接口,然后调用操作。具体如下,我调试过的。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

require 'mysql'

class MysqlDb

# attr_accessor :host, :user, :pass, :database

def open(host=nil, user=nil, pass=nil, database=nil,port=3306)

@host =host

@user = user

@pass = pass

@database = database

@port = port

begin

@connection = Mysql.new(@host, @user, @pass, @database, @port)

rescue

puts "connect faild! an error has occurred: #{$!}" # 错误信息保存在特殊变量$!中。

try_again

end

end

def try_again

puts '------------------try again, if not modify, leave a blank---------------'

print "host: "

host=STDIN.gets.strip

@host = check_value(host,@host)

puts "---------------current host: #{@host}"

print "user: "

user =STDIN.gets.strip

@user = check_value(user,@user)

puts "---------------current user: #{@user}"

print "password: "

pass =STDIN.gets.strip

@pass = check_value(pass,@pass)

puts "---------------current password: #{@pass}"

print "database: "

database =STDIN.gets.strip

@database = check_value(database,@database)

puts "---------------current database: #{@database}"

print "port: "

port =STDIN.gets.strip

@port = check_value(port,@port)

open(@host, @user, @pass, @database, @port)

puts "---------------current port: #{@port}"

end

def check_value(value,returnvalue)

if value == ""

nil

else

returnvalue = value

end

return returnvalue

end

def iquery(sql)

field = []

@connection.query(sql).each do |data|

field <<data

end

field.to_a

end

def iexecute(sql)

@connection.query(sql)

end

def close

@connection.close

end

end

# useages

adb = MysqlDb.new

adb.open('127.0.0.1','root','zyq001122','hello_z','3307')

# result = db.query "insert into user value(7,\"lilY\",\"256y42\",\"#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}\" )" # 插入记录

# result.each {|row| puts row}

num_of_records = adb.iquery ('select count(*) from user') #查询

puts num_of_records

#sql = "insert into user value(10,\"Hello-Kitty\",\"256y42\",\"#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}\" )"# 数据操作

# sql = 'update user set name=\'jackjhons\' where uid=5 ' # 更新一条记录

#adb.iexecute(sql)

# adb.close