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.
47
48
49
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 47
def worksheet
@worksheet
end
|
Instance Method Details
#column ⇒ Object
61
62
63
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 61
def column
r && r.first_col
end
|
#column=(v) ⇒ Object
65
66
67
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 65
def column=(v)
self.r = RubyXL::Reference.new(row || 0, v)
end
|
#get_cell_border ⇒ Object
86
87
88
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 86
def get_cell_border
workbook.stylesheet.borders[get_cell_xf.border_id]
end
|
#get_cell_font ⇒ Object
82
83
84
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 82
def get_cell_font
workbook.stylesheet.fonts[get_cell_xf.font_id]
end
|
#get_cell_xf ⇒ Object
78
79
80
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 78
def get_cell_xf
workbook.stylesheet.cell_xfs[self.style_index || 0]
end
|
#index_in_collection ⇒ Object
49
50
51
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 49
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
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 94
def is_date?
return false unless case raw_value
when Numeric then true
when String then raw_value =~ NUMBER_REGEXP
else false
end
num_fmt = self.number_format
num_fmt && num_fmt.is_date_format?
end
|
90
91
92
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 90
def number_format
workbook.stylesheet.get_number_format_by_id(get_cell_xf.num_fmt_id)
end
|
#raw_value ⇒ Object
69
70
71
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 69
def raw_value
value_container && value_container.value
end
|
#raw_value=(v) ⇒ Object
73
74
75
76
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 73
def raw_value=(v)
self.value_container ||= RubyXL::CellValue.new
value_container.value = v
end
|
#row ⇒ Object
53
54
55
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 53
def row
r && r.first_row
end
|
#row=(v) ⇒ Object
57
58
59
|
# File 'lib/rubyXL/objects/sheet_data.rb', line 57
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).
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 108
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
else
if is_date? then workbook.num_to_date(r.to_f)
elsif r.is_a?(String) && (r =~ NUMBER_REGEXP) then if $1 != '' then r.to_f
else r.to_i
end
else r
end
end
end
|