How do I read the content of an Excel spreadsheet using Ruby?

前端 未结 3 1347
执念已碎
执念已碎 2020-12-04 20:29

I am trying to read an Excel spreadsheet file with Ruby, but it is not reading the content of the file.

This is my script

book = Spreadsheet.open \'         


        
相关标签:
3条回答
  • 2020-12-04 20:59

    I don't think you need to require parseexcel, just require 'spreadsheet'

    Have you read the guide, it is super easy to follow.

    0 讨论(0)
  • 2020-12-04 21:01

    It looks like row, whose class is Spreadsheet::Excel::Row is effectively an Excel Range and that it either includes Enumerable or at least exposes some enumerable behaviours, #each, for example.

    So you might rewrite your script something like this:

    require 'spreadsheet'    
    book = Spreadsheet.open('myexcel.xls')
    sheet1 = book.worksheet('Sheet1') # can use an index or worksheet name
    sheet1.each do |row|
      break if row[0].nil? # if first cell empty
      puts row.join(',') # looks like it calls "to_s" on each cell's Value
    end
    

    Note that I've parenthesised arguments, which is generally advisable these days, and removed the semi-colons, which are not necessary unless you're writing multiple statement on a line (which you should rarely - if ever - do).

    It's probably a hangover from a larger script, but I'll point out that in the code given the book and sheet1 variables aren't really needed, and that Spreadsheet#open takes a block, so a more idiomatic Ruby version might be something like this:

    require 'spreadsheet'    
    Spreadsheet.open('MyTestSheet.xls') do |book|
      book.worksheet('Sheet1').each do |row|
        break if row[0].nil?
        puts row.join(',')
      end
    end
    
    0 讨论(0)
  • 2020-12-04 21:08

    Is it a one line file? If so you need:

    puts row[0];
    
    0 讨论(0)
提交回复
热议问题