簡體   English   中英

Ruby Spreadsheet:錯誤的文件描述符 - test.xls(Errno :: EBADF)

[英]Ruby Spreadsheet: Bad file descriptor - test.xls (Errno::EBADF)

我有腳本的問題,生成簡單的.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': Bad file descriptor - test.xls (Errno::EBADF) from 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' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-ole-1.2.11.5/lib/ole/storage/base.rb:78:in open'from C:/ Ruby193 / lib /ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/excel/writer/workbook.rb:4 53: write_from_scratch' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/excel/writer/workbook.rb:6 31:in來自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4的write_workbook' /lib/spreadsheet/writer.rb:15:in block in write' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/writer.rb:14:in打開'來自C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/writer.rb:14:in write' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/spreadsheet-0.7.4/lib/spreadsheet/workbook.rb:116:in in write' from 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>' 

因為ruby-ole 1.2.11.5不支持windows平台,更多細節: ruby-ole問題

你可以使用ruby-ole 1.2.11.4來避免這個問題。

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

我以前見過這些。 首先驗證您是否可以寫入該文件的位置。 我的猜測是文件已在Excel中打開,或者您的防病毒軟件阻止了“威脅”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM