下面的代码与我第一次运行它时的工作方式相同:
require 'rubygems'
require 'spreadsheet'
book = Spreadsheet.open '/Users/me/myruby/Mywks.xls'
sheet = book.worksheet 0
row = sheet.row(1)
puts row[1]
book.write '/Users/me/myruby/Mywks.xls'
当我再次运行时,我会收到更多消息:
/Library/Ruby/Gems/1.8/gems/spreadsheet-0.6.5.9/lib/spreadsheet/excel/reader.rb:1149:in `setup': undefined method `read' for false:FalseClass (NoMethodError)
from /Library/Ruby/Gems/1.8/gems/spreadsheet-0.6.5.9/lib/spreadsheet/excel/reader.rb:121:in `read'
这告诉我两者都有问题:1。关闭excel电子表格或2.回写我打开的同一个电子表格。
答案 0 :(得分:9)
尝试使用块语法,它似乎对我有用:
Spreadsheet.open '/Users/me/myruby/Mywks.xls' do |book|
sheet = book.worksheet 0
# book should be closed when the block exits
end
答案 1 :(得分:0)
您可以手动关闭文件: 1)在这个代码中添加:
module Spreadsheet
class Workbook
attr_accessor :io
end
end
2)只需致电
@book.io.close
关闭文件