您的位置:首页 > 编程语言 > Ruby

使用Spreadsheet操作Excel

2012-02-27 15:30 519 查看
在ruby中操作Excel电子表格的方法有很多,在windows下就可以使用win32ole库来调用系统本身的DOM进行操作,但如果离开windows环境,我们就需要使用其它的一些gem包了,如Spreadsheet。

首安装Spreadsheet,使用命令gem install Spreadsheet:



如果网络不好,就要先将spreadsheet包下载于本地,注意上面的信息可知,spreadsheet包依赖于ruby-ole包,故你在手动下载安装时不要忘了先安装它。

下面帖出代码:

读:

require "rubygems"
require "spreadsheet"

Spreadsheet.client_encoding = "UTF-8"

book = Spreadsheet.open("test.xls")

# 得到第一个表格
sheet1 = book.worksheet(0)

test_file = File.open("test.txt", "w")

sheet1.each do |row|
row.collect do |value|
test_file.write("#{value}\t")
end
test_file.write("\r\n")
end

test_file.close()


写:

# 引入spreadsheet插件
require "rubygems"
require "spreadsheet"

# 声明Spreadsheet处理Excel文件组时的编码
Spreadsheet.client_encoding = "UTF-8"

# 创建一个Spreadsheet对象,它相当于Excel文件
book = Spreadsheet::Workbook.new
# 创建Excel文件中的一个表格,并命名为 "Test Excel"
sheet1 = book.create_worksheet :name => "Test Excel"

# 设置一个Excel文件的格式
default_format = Spreadsheet::Format.new(:weight => :bold, :size => 14,
:align => :merge, :color=>"red", :border=>1,
:border_color=>"black", :pattern => 1 ,
:pattern_fg_color => "yellow" )

data = "测试标题"

# 指定一个在表格中的第一行对象
test_row = sheet1.row(0)

# 为第一行的前5个列指定格式
5.times do |i|
test_row.set_format(i, default_format)
end

# 为第一行的第一列指定值
test_row[0] = data

# 将创建的Spreadsheet对象写入文件,形成电子表格
book.write 'book2.xls'


效果图:



在使用SpreadSheet这个包时,有点遗憾的是,它不能正真的实现单元格合并。

今天看了yingjie_xiao的方法实现合并,不知行不行,附上方法,出处http://blog.csdn.net/yingjie_xiao/article/details/8557007

sheet1.
merge_cells(start_row, start_col, end_row,
end_col)


只要把填写起始行/列,结束行/列填写就可以,很高效的解决了合并单元格的麻烦.

参考博客:

rails导出excel插件 spreadsheet的标准使用

Ruby Spreadsheet 合并单元格方法

Getting Started with Spreadsheet
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息