0

I need to generate a report in .xls format, while trying to write the data, i get the following error

~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:515:in `block in _write_sst': incompatible character encodings: ASCII-8BIT and US-ASCII (Encoding::CompatibilityError)
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:502:in `each'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:502:in `each_with_index'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:502:in `_write_sst'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:489:in `write_sst'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:439:in `write_from_scratch'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:620:in `write_workbook'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/writer.rb:15:in `block in write'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/writer.rb:14:in `open'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/writer.rb:14:in `write'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/workbook.rb:106:in `write'
    from lib/parse_fellow.rb:449:in `generate_match_report_fellow'
    from lib/parse_fellow.rb:547:in `<top (required)>'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands/runner.rb:48:in `eval'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands/runner.rb:48:in `<top (required)>'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands.rb:39:in `require'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands.rb:39:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Line number 449 of parse_fellow.rb is

workbook.write("#{RAILS_ROOT}/lib/#{file}")

Before passing the value to my workbook object, i have tried encoding them to ASCII and UTF-8 using the following method, but none of them helped me

"my text content".force_encoding("ASCII-8BIT")

My development environment:

ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
Rails 3.0.7
spreadsheet (0.6.4)

I have no clue what is going wrong here and how to debug this issue. Any input would be greatly helpful to me.

Nakilon
  • 34,866
  • 14
  • 107
  • 142
nkm
  • 5,844
  • 2
  • 24
  • 38
  • Don't know what you need to do, but maybe this link can help. http://ruby.runpaint.org/encoding or maybe this one http://stackoverflow.com/questions/2095525/can-i-set-the-default-string-encoding-on-ruby-1-9 – Rasmus Oct 31 '11 at 06:46

1 Answers1

1

Yet I don't really know what the problem is. Unfortunately I could not find here someone else who has come through similar situation.

The way i fixed this issue is by trying with different available version of the gem, finally it worked with following version.

gem "spreadsheet", '0.6.5.9'
nkm
  • 5,844
  • 2
  • 24
  • 38