Module: FastExcel::WorksheetExt

Includes:
AttributeHelper
Defined in:
lib/fast_excel.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from AttributeHelper

#fields_hash, #pretty_print, #set

Instance Attribute Details

#workbookObject

Returns the value of attribute workbook.



394
395
396
# File 'lib/fast_excel.rb', line 394

def workbook
  @workbook
end

Instance Method Details

#append_row(values, formats = nil) ⇒ Object



429
430
431
432
# File 'lib/fast_excel.rb', line 429

def append_row(values, formats = nil)
  increment_last_row_number!
  write_row(last_row_number, values, formats)
end

#increment_last_row_number!Object



438
439
440
# File 'lib/fast_excel.rb', line 438

def increment_last_row_number!
  @last_row_number = last_row_number + 1
end

#last_row_numberObject



434
435
436
# File 'lib/fast_excel.rb', line 434

def last_row_number
  defined?(@last_row_number) ? @last_row_number : -1
end

#set_column(start_col, end_col, width, format = nil) ⇒ Object



442
443
444
# File 'lib/fast_excel.rb', line 442

def set_column(start_col, end_col, width, format = nil)
  super(start_col, end_col, width, format)
end

#set_column_width(col, width) ⇒ Object



446
447
448
# File 'lib/fast_excel.rb', line 446

def set_column_width(col, width)
  set_column(col, col, width, nil)
end

#set_columns_width(start_col, end_col, width) ⇒ Object



450
451
452
# File 'lib/fast_excel.rb', line 450

def set_columns_width(start_col, end_col, width)
  set_column(start_col, end_col, width, nil)
end

#write_row(row_number, values, formats = nil) ⇒ Object



398
399
400
401
402
403
404
405
406
# File 'lib/fast_excel.rb', line 398

def write_row(row_number, values, formats = nil)
  values.each_with_index do |value, index|
    format = if formats
      formats.is_a?(Array) ? formats[index] : formats
    end

    write_value(row_number, index, value, format)
  end
end

#write_value(row_number, cell_number, value, format = nil) ⇒ Object



408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
# File 'lib/fast_excel.rb', line 408

def write_value(row_number, cell_number, value, format = nil)

  if workbook.constant_memory? && row_number < last_row_number
    raise ArgumentError, "Can not write to saved row in constant_memory mode (attempted row: #{row_number}, last saved row: #{last_row_number})"
  end

  if value.is_a?(Numeric)
    write_number(row_number, cell_number, value, format)
  elsif defined?(Date) && value.is_a?(Date)
    write_datetime(row_number, cell_number, FastExcel.lxw_datetime(value.to_datetime), format)
  elsif value.is_a?(Time)
    write_datetime(row_number, cell_number, FastExcel.lxw_time(value), format)
  elsif value.is_a?(Formula)
    write_formula(row_number, cell_number, value.fml, format)
  else
    write_string(row_number, cell_number, value.to_s, format)
  end

  @last_row_number = row_number > last_row_number ? row_number : last_row_number
end