Ruby电子表格:错误的文件描述符-test.xls(Errno::EBADF)

Ruby电子表格:错误的文件描述符-test.xls(Errno::EBADF),ruby,spreadsheet,Ruby,Spreadsheet,我对生成简单的.xls文件并将数据写入一个单元格的脚本有问题。下面是简单的代码: require 'spreadsheet' class Filter def filter @excel = Spreadsheet::Workbook.new @sheet = @excel.create_worksheet @sheet[0, 0] = "test" @excel.write 'test.xls' end end f = Filter.new

我对生成简单的.xls文件并将数据写入一个单元格的脚本有问题。下面是简单的代码:

require 'spreadsheet'

class Filter
  def filter
    @excel = Spreadsheet::Workbook.new
    @sheet = @excel.create_worksheet

    @sheet[0, 0] = "test"
        @excel.write 'test.xls'
  end
end

f = Filter.new
f.filter
但这会引起错误:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-ole-1.2.11.5/lib/ole/storage/base.rb:62:in
write_nonblock':错误的文件描述符-test.xls(Errno::EBADF)
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-ole-1.2.11.5/lib/ole/storage/base.rb:62:in
initialize'

    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-ole-1.2.11.5/lib/ole/storage/base.rb:78:in
new'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-ole-1.2.11.5/lib/ole/storage/base.rb:78:in
open' 来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/excel/writer/workbook.rb:4 53:在
中从头开始编写
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/excel/writer/workbook.rb:6
31:在
write_工作簿' 来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/writer.rb:15:in
写入中的块'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/writer.rb:14:in
open' 来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/writer.rb:14:in
write'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/workbook.rb:116:in
write'

    from filter.rb:10:in `filter'
    from filter.rb:15:in `<main>'
from filter.rb:10:in'filter'
来自过滤器。rb:15:in`'

我以前见过这些。首先验证是否可以写入该文件的位置。
我的猜测是该文件已经在Excel中打开,或者您的防病毒软件正在阻止“威胁”。

因为ruby ole 1.2.11.5不支持windows平台, 更多详情:

可以使用ruby ole 1.2.11.4来避免此问题

require 'rubygems'
gem 'ruby-ole','1.2.11.4'
require 'spreadsheet'