Ruby对excel读写操作

来源:互联网 发布:mysql定时备份 编辑:程序博客网 时间:2024/05/16 13:43

0.读取本地文件两个方法:

file = open(path)lines = file.readlineslines.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 stringdata = File.read("hello.txt") # globally substitute "install" for "latest"filtered_data = data.gsub("install", "latest") # open the file for writingFile.open("hello.txt", "w") do |f|  f.write(filtered_data)end
Or you can make it a one liner:
File.write("hello.txt",File.open("hello.txt",&:read).gsub("install","latest"))



1 0
原创粉丝点击