ruby - 如何关闭 ruby​​ gem "Spreadsheet?"中的文件

标签 ruby excel file spreadsheet spreadsheet-gem

下面的代码在我第一次运行它时就可以正常工作:

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. 写回我打开的同一个电子表格。

  1. ruby gem 电子表格文档中没有关于关闭电子表格的内容。如果有的话,示例以上面的“book.write”语句结束。我在这里和其他地方的搜索都没有找到关闭电子表格中的 xls 文件的结果。
  2. 电子表格文档建议您可以写回同一个文件,但也建议您不应该这样做。是这里的问题吗?如果是这样,我是否要写一个临时 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/

相关文章:

javascript - 不对某些 Assets 进行预编译 - Rails

ruby-on-rails - 如何关闭 "periodically_call_remote"

excel - 如何在错误值为0的情况下应用vlookup并恢复

vba - 使用 double 进行错误处理不起作用 - VBA excel

C++ ofstream 相当于 Win32 CreateFile with CREATE_NEW

java - 计算 java 中的文件长度 : FileReader vs. File.length

c - 为什么缓冲 I/O 比非缓冲 I/O 更快

ruby-on-rails - 了解 ruby​​ on rails gemfile 中的组

excel - 再次动态范围 - 再次使用文本字符串

ruby - 启动服务器时出现 Jekyll 错误