0

我在 ruby​​ 和 rails 的某些领域是个新手。所以我正在编写一个类来根据扩展名读取 excel 并在每个例程中返回行。像这样的东西:

class ExcelRead
  (dependencies)

  def initialize(path, sheet_n = 0)
    type = File.extname(path)

    if type == JitExcelRead::XLS
      Spreadsheet.client_encoding = 'UTF-8'
      book = Spreadsheet.open path
      book_sheet = book.worksheet sheet_n
    elsif type == JitExcelRead::XLSX
      book = Creek::Book.new path
      book_sheet = book.sheets[sheet_n]
    end

    @book = book
    @book_sheet = book_sheet
    @book_rows = book_sheet.rows
    @path = path
    @type = type
  end
end

所以这意味着我调用我的应用程序

xls = ExcelRead.new(uploaded_file.filename_path)

一切顺利。我有我需要的物品供我使用。我现在的问题是如何遍历它们。我认为向可能的类添加一个方法是这样的

  def each
    binding.pry
  end

并像这样在我的应用程序上正常调用它

xls.book_rows.each do |row|
end

会让我输入那个代码,但不是真的......

帮助?

4

1 回答 1

0

如果您each向您的类添加了一个方法ExcelRead,并且您创建了一个名为 的此类的实例,那么您必须使用而不是xls来访问它。 使用前者,您从 调用该方法,就像一个集合一样。 我只能猜测您想要一种自定义方式来迭代您的,所以我认为这样的事情应该是您想要实现的目标: xls.eachxls.book_rows.each
eachEnumeratorbook_rows
book_row

def iterate
  self.book_rows.each do |br|
    # do stuff
  end
end

你这样称呼它:

xls.iterate

但这只是一个疯狂的猜测。

于 2013-09-13T14:22:19.347 回答