Class: RubyXL::Cell
Overview
Constant Summary
collapse
- NUMBER_REGEXP =
/\A-?\d+((?:\.\d+)?(?:e[+-]?\d+)?)?\Z/i
Instance Attribute Summary collapse
#local_namespaces
Instance Method Summary
collapse
Methods included from LegacyCell
#workbook
#==, #before_write_xml, included, #initialize, #write_xml
Instance Attribute Details
#worksheet ⇒ Object
Returns the value of attribute worksheet.
46
47
48
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 46
def worksheet
@worksheet
end
|
Instance Method Details
#column ⇒ Object
60
61
62
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 60
def column
r&.first_col
end
|
#column=(v) ⇒ Object
64
65
66
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 64
def column=(v)
self.r = RubyXL::Reference.new(row || 0, v)
end
|
#get_cell_border ⇒ Object
85
86
87
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 85
def get_cell_border
workbook.stylesheet.borders[get_cell_xf.border_id]
end
|
#get_cell_font ⇒ Object
81
82
83
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 81
def get_cell_font
workbook.stylesheet.fonts[get_cell_xf.font_id]
end
|
#get_cell_xf ⇒ Object
77
78
79
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 77
def get_cell_xf
workbook.stylesheet.cell_xfs[self.style_index || 0]
end
|
#index_in_collection ⇒ Object
48
49
50
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 48
def index_in_collection
r.col_range.begin
end
|
#inspect ⇒ Object
126
127
128
129
130
131
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 126
def inspect
str = "#<#{self.class}(#{row},#{column}): #{raw_value.inspect}"
str << " =#{self.formula.expression}" if self.formula
str << ", datatype=#{self.datatype.inspect}, style_index=#{self.style_index.inspect}>"
return str
end
|
#is_date? ⇒ Boolean
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 93
def is_date?
return false unless case raw_value
when Numeric then true
when String then raw_value =~ NUMBER_REGEXP
else false
end
self.number_format&.is_date_format?
end
|
89
90
91
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 89
def number_format
workbook.stylesheet.get_number_format_by_id(get_cell_xf.num_fmt_id)
end
|
#raw_value ⇒ Object
68
69
70
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 68
def raw_value
value_container&.value
end
|
#raw_value=(v) ⇒ Object
72
73
74
75
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 72
def raw_value=(v)
self.value_container ||= RubyXL::CellValue.new
value_container.value = v
end
|
#row ⇒ Object
52
53
54
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 52
def row
r&.first_row
end
|
#row=(v) ⇒ Object
56
57
58
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 56
def row=(v)
self.r = RubyXL::Reference.new(v, column || 0)
end
|
#value(args = {}) ⇒ Object
Gets massaged value of the cell, converting datatypes to those known to Ruby (that includes stripping any special formatting from RichText).
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 106
def value(args = {})
r = self.raw_value
case datatype
when RubyXL::DataType::SHARED_STRING then workbook.shared_strings_container[r.to_i].to_s
when RubyXL::DataType::INLINE_STRING then is.to_s
when RubyXL::DataType::RAW_STRING then raw_value
when RubyXL::DataType::DATE then raw_value && DateTime.parse(raw_value)
else
if is then is.to_s
elsif is_date? then workbook.num_to_date(r.to_f)
elsif r.is_a?(String) && (r =~ NUMBER_REGEXP) then if Regexp.last_match(1) != '' then r.to_f
else r.to_i
end
else r
end
end
end
|