使用Spreadsheet操作Excel

在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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值