下面的代码在我第一次运行它时就可以正常工作:
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. 写回我打开的同一个电子表格。
- ruby gem 电子表格文档中没有关于关闭电子表格的内容。如果有的话,示例以上面的“book.write”语句结束。我在这里和其他地方的搜索都没有找到关闭电子表格中的 xls 文件的结果。
- 电子表格文档建议您可以写回同一个文件,但也建议您不应该这样做。是这里的问题吗?如果是这样,我是否要写一个临时 wks 然后重命名它?
最佳答案
尝试使用 block 语法,它似乎对我有用:
Spreadsheet.open '/Users/me/myruby/Mywks.xls' do |book|
sheet = book.worksheet 0
# book should be closed when the block exits
end
关于ruby - 如何关闭 ruby gem "Spreadsheet?"中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395376/