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

Ruby对excel读写操作

2015-09-14 10:56 513 查看
0.读取本地文件两个方法:

file = open(path)
	lines = file.readlines
	lines.each do |line|
		p line      #"  BOOST = self.new(1, '觉醒之书')\n"
	end


file = File.open(filePath, "r")
	file.each_line do |line| 
                p line      <span style="font-family: Arial, Helvetica, sans-serif;">#   BOOST = self.new(1, '觉醒之书')</span>

	end


这个方法区别如注释所示,前者会出现双引号和换行符

1.读取excel可以用:roo=>Github官网, roo官网stackoverflow上的一个提问

值得注意的是如果读取的是xls文件而不是xlsx文件,那么需要gem install roo-xls。open文件时指定类型,如下操作:

require 'roo'
require 'roo-xls'

xlsx = Roo::Spreadsheet.open('/Users/h/Documents/rubyProject/新版本文案.xls',extension: :xls)
puts xlsx.sheet(0).cell('B',2)


2.写excel推荐用spreadsheet插件

安装方式:gem install spreadsheet

Excel文件生成写入数据实例:

require ‘rubygems’

require ‘spreadsheet/excel’

#先加载spreadsheet类库,然后,指定编码接着,就可以创建一个Workbook了

book = Spreadsheet::Workbook.new

#创建表单:

sheet1 = book.create_worksheet

sheet1.name = ‘My First Worksheet’

#或直接指定名字创建表单:

sheet2 = book.create_worksheet :name => ‘My Second Worksheet’

那么,这时我们可以采用如下方式加载数据到表单Worksheet#[]=,

Worksheet#update_row,

或者直接给一个指定单元格复制

sheet1.row(0).concat %w{Name Country Acknowlegement}

sheet1[1,0] = ‘Japan’

row = sheet1.row(1)

row.push ‘Creator of Ruby’

row.unshift ‘Yukihiro Matsumoto’

sheet1.row(2).replace [ 'Daniel J. Berger', 'U.S.A.',

'Author of original code for Spreadsheet::Excel' ]

sheet1.row(3).push ‘Charles Lowe’, ‘Author of the ruby-ole Library’

sheet1.row(3).insert 1, ‘Unknown’

sheet1.update_row 4, ‘Hannes Wyss’, ‘Switzerland’, ‘Author’

#对输出格式做处理

sheet1.row(0).height = 18

format = Spreadsheet::Format.new :color => :blue,

:weight => :bold,

:size => 18

sheet1.row(0).default_format = format

bold = Spreadsheet::Format.new :weight => :bold

4.times do |x| sheet1.row(x + 1).set_format(0, bold) end

#保存excel文件

book.write ‘excel-file.xls’

参考链接

替换文件中的字符串:

# load the file as a string
data = File.read("hello.txt") 
# globally substitute "install" for "latest"
filtered_data = data.gsub("install", "latest") 
# open the file for writing
File.open("hello.txt", "w") do |f|
  f.write(filtered_data)
end
Or you can make it a one liner:

[code]File.write("hello.txt",File.open("hello.txt",&:read).gsub("install","latest"))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: