Class: ExcelExtended

Inherits:
Roo::Excel
  • Object
show all
Defined in:
lib/simple-spreadsheet/classes/excel_extended.rb

Instance Method Summary collapse

Instance Method Details

#foreach(sheet = nil, &block) ⇒ Object

Raises:

  • (ArgumentError)

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/simple-spreadsheet/classes/excel_extended.rb', line 3

def foreach(sheet=nil, &block)
  sheet = @default_sheet unless sheet
  raise ArgumentError, "Error: sheet '#{sheet||'nil'}' not valid" if @default_sheet == nil and sheet==nil
  raise RangeError unless self.sheets.include? sheet

  if @cells_read[sheet]
    raise "sheet #{sheet} already read"
  end

  worksheet = @workbook.worksheet(sheet_no(sheet))
  row_index=1
  worksheet.each(0) do |row|
    row_content = []
    (0..row.size).each do |cell_index|
      cell = row.at(cell_index)
      next if cell.nil?  #skip empty cells
      next if cell.class == Spreadsheet::Formula && cell.value.nil? # skip empty formula cells
      if date_or_time?(row, cell_index)
        vt, v = read_cell_date_or_time(row, cell_index)
      else
        vt, v = read_cell(row, cell_index)
      end
      formula = tr = nil #TODO:???
      col_index = cell_index + 1
      font = row.format(cell_index).font
      font.extend(ExcelFontExtensions)      # set_cell_values(sheet,row_index,col_index,0,v,vt,formula,tr,font)

      row_content << v
    end #row
    yield(row_content, row_index)
    row_index += 1
  end # worksheet
end