Module: RubyXL::LegacyWorksheet

Includes:
Enumerable
Included in:
Worksheet
Defined in:
lib/rubyXL/worksheet.rb

Constant Summary collapse

TEXT_LENGTH_LIMIT_IN_CELL =

2 ** 15 - 1

32767

Instance Method Summary collapse

Instance Method Details

#[](row = 0) ⇒ Object

allows for easier access to sheet_data

[View source]

20
21
22
# File 'lib/rubyXL/worksheet.rb', line 20

def [](row = 0)
  sheet_data[row]
end

#add_cell(row_index = 0, column_index = 0, data = '', formula = nil, overwrite = true) ⇒ Object

[View source]

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rubyXL/worksheet.rb', line 34

def add_cell(row_index = 0, column_index = 0, data = '', formula = nil, overwrite = true)
  validate_workbook
  validate_nonnegative(row_index)
  validate_nonnegative(column_index)
  row = sheet_data.rows[row_index] || add_row(row_index)

  c = row.cells[column_index]

  if overwrite || c.nil?
    c = RubyXL::Cell.new
    c.worksheet = self
    c.row = row_index
    c.column = column_index

    if formula then
      c.formula = RubyXL::Formula.new(:expression => formula)
      c.raw_value = data
    else
      case data
      when Numeric          then c.raw_value = data
      when String           then
        if data.length > TEXT_LENGTH_LIMIT_IN_CELL
          raise ArgumentError, "The maximum length of cell contents (text) is #{TEXT_LENGTH_LIMIT_IN_CELL} characters"
        end
        c.raw_value = data
        c.datatype = RubyXL::DataType::RAW_STRING
      when RubyXL::RichText then
        if data.to_s.length > TEXT_LENGTH_LIMIT_IN_CELL
          raise ArgumentError, "The maximum length of cell contents (text) is #{TEXT_LENGTH_LIMIT_IN_CELL} characters"
        end
        c.is = data
        c.datatype = RubyXL::DataType::INLINE_STRING
      when Time, Date, DateTime then
        c.raw_value = workbook.date_to_num(data)
      when NilClass then nil
      end
    end

    range = cols&.locate_range(column_index)
    c.style_index = row.style_index || range&.style_index || 0
    row.cells[column_index] = c
  end

  c
end

#add_row(row_index = 0, params = {}) ⇒ Object

[View source]

28
29
30
31
32
# File 'lib/rubyXL/worksheet.rb', line 28

def add_row(row_index = 0, params = {})
  new_row = RubyXL::Row.new(params)
  new_row.worksheet = self
  sheet_data.rows[row_index] = new_row
end

#eachObject

[View source]

24
25
26
# File 'lib/rubyXL/worksheet.rb', line 24

def each
  sheet_data.rows.each { |row| yield(row) }
end

#initialize(params = {}) ⇒ Object

[View source]

7
8
9
10
11
12
13
14
15
16
17
# File 'lib/rubyXL/worksheet.rb', line 7

def initialize(params = {})
  super
  self.workbook   = params[:workbook]
  self.sheet_name = params[:sheet_name]
  self.sheet_id   = params[:sheet_id]
  self.sheet_data = RubyXL::SheetData.new
  self.cols = RubyXL::ColumnRanges.new
  @comments = [] # Do not optimize! These are arrays, so they will share the pointer!
  @printer_settings = []
  @generic_storage = []
end