Class: Spreadsheet::Format
- Inherits:
-
Object
- Object
- Spreadsheet::Format
- Defined in:
- lib/spreadsheet/format.rb
Overview
Formatting data
Direct Known Subclasses
Instance Attribute Summary collapse
-
#font ⇒ Object
Returns the value of attribute font.
-
#name ⇒ Object
Returns the value of attribute name.
-
#number_format ⇒ Object
Returns the value of attribute number_format.
-
#pattern ⇒ Object
Returns the value of attribute pattern.
-
#rotation ⇒ Object
Text rotation.
-
#used_merge ⇒ Object
Returns the value of attribute used_merge.
Instance Method Summary collapse
-
#align=(location) ⇒ Object
Combined method for both horizontal and vertical alignment.
-
#border ⇒ Object
Returns an Array containing the line styles of the four borders: bottom, top, right, left.
-
#border=(style) ⇒ Object
Set same line style on all four borders at once (left, right, top, bottom).
-
#border_color ⇒ Object
Returns an Array containing the colors of the four borders: bottom, top, right, left.
-
#border_color=(color) ⇒ Object
Set all four border colors to color (left, right, top, bottom).
-
#bottom_color ⇒ Object
Color attributes.
-
#center_across! ⇒ Object
(also: #merge!)
Backward compatibility method.
-
#cross_down ⇒ Object
- You can set the following boolean attributes: #cross_down
-
Draws a Line from the top-left to the bottom-right corner of a cell.
-
#date? ⇒ Boolean
Is the cell formatted as a Date?.
-
#date_or_time? ⇒ Boolean
Is the cell formatted as a Date or Time?.
-
#datetime? ⇒ Boolean
Is the cell formatted as a DateTime?.
-
#horizontal_align ⇒ Object
Horizontal alignment Valid values: :default, :left, :center, :right, :fill, :justify, :merge, :distributed Default: :default.
-
#indent_level ⇒ Object
(also: #indent)
Indentation level.
-
#initialize(opts = {}) {|_self| ... } ⇒ Format
constructor
A new instance of Format.
-
#matches_format?(name) ⇒ Boolean
Does the cell match a particular preset format?.
-
#number? ⇒ Boolean
Is the cell formatted as a number?.
-
#text_direction ⇒ Object
(also: #reading_order)
Text direction Valid values: :context, :left_to_right, :right_to_left Default: :context.
-
#time? ⇒ Boolean
Is the cell formatted as a Time?.
- #update_format(opts = {}) ⇒ Object
-
#vertical_align ⇒ Object
Vertical alignment Valid values: :bottom, :top, :middle, :justify, :distributed Default: :bottom.
Methods included from Datatypes
Methods included from Compatibility
Constructor Details
#initialize(opts = {}) {|_self| ... } ⇒ Format
Returns a new instance of Format.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/spreadsheet/format.rb', line 91 def initialize opts={} @font = Font.new client("Arial", 'UTF-8'), :family => :swiss @number_format = client 'GENERAL', 'UTF-8' @rotation = 0 @pattern = 0 @bottom_color = :black @top_color = :black @left_color = :black @right_color = :black @diagonal_color = :black @pattern_fg_color = :border @pattern_bg_color = :pattern_bg @regexes = { :date => Regexp.new(client("[YMD]|d{2}|m{3}|y{2}", 'UTF-8')), :date_or_time => Regexp.new(client("[hmsYMD]", 'UTF-8')), :datetime => Regexp.new(client("([YMD].*[HS])|([HS].*[YMD])", 'UTF-8')), :time => Regexp.new(client("[hms]", 'UTF-8')), :number => Regexp.new(client("([\#]|0+)", 'UTF-8')), :locale => Regexp.new(client(/\A\[\$\-\S+\]/.to_s, 'UTF-8')), } # Temp code to prevent merged formats in non-merged cells. @used_merge = 0 update_format(opts) yield self if block_given? end |
Instance Attribute Details
#font ⇒ Object
Returns the value of attribute font.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def font @font end |
#name ⇒ Object
Returns the value of attribute name.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def name @name end |
#number_format ⇒ Object
Returns the value of attribute number_format.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def number_format @number_format end |
#pattern ⇒ Object
Returns the value of attribute pattern.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def pattern @pattern end |
#rotation ⇒ Object
Text rotation
90 91 92 |
# File 'lib/spreadsheet/format.rb', line 90 def rotation @rotation end |
#used_merge ⇒ Object
Returns the value of attribute used_merge.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def used_merge @used_merge end |
Instance Method Details
#align=(location) ⇒ Object
Combined method for both horizontal and vertical alignment. Sets the first valid value (e.g. Format#align = :justify only sets the horizontal alignment. Use one of the aliases prefixed with :v if you need to disambiguate.)
This is essentially a backward-compatibility method and may be removed at some point in the future.
135 136 137 138 139 |
# File 'lib/spreadsheet/format.rb', line 135 def align= location self.horizontal_align = location rescue ArgumentError self.vertical_align = location rescue ArgumentError end |
#border ⇒ Object
Returns an Array containing the line styles of the four borders: bottom, top, right, left
143 144 145 |
# File 'lib/spreadsheet/format.rb', line 143 def border [bottom, top, right, left] end |
#border=(style) ⇒ Object
Set same line style on all four borders at once (left, right, top, bottom)
148 149 150 |
# File 'lib/spreadsheet/format.rb', line 148 def border=(style) [:bottom=, :top=, :right=, :left=].each do |writer| send writer, style end end |
#border_color ⇒ Object
Returns an Array containing the colors of the four borders: bottom, top, right, left
154 155 156 |
# File 'lib/spreadsheet/format.rb', line 154 def border_color [@bottom_color,@top_color,@right_color,@left_color] end |
#border_color=(color) ⇒ Object
Set all four border colors to color (left, right, top, bottom)
159 160 161 162 |
# File 'lib/spreadsheet/format.rb', line 159 def border_color=(color) [:bottom_color=, :top_color=, :right_color=, :left_color=].each do |writer| send writer, color end end |
#bottom_color ⇒ Object
Color attributes
52 53 54 |
# File 'lib/spreadsheet/format.rb', line 52 colors :bottom_color, :top_color, :left_color, :right_color, :pattern_fg_color, :pattern_bg_color, :diagonal_color |
#center_across! ⇒ Object Also known as: merge!
Backward compatibility method. May disappear at some point in the future.
180 181 182 |
# File 'lib/spreadsheet/format.rb', line 180 def center_across! self.horizontal_align = :merge end |
#cross_down ⇒ Object
You can set the following boolean attributes:
- #cross_down
-
Draws a Line from the top-left to the bottom-right corner of a cell.
- #cross_up
-
Draws a Line from the bottom-left to the top-right corner of a cell.
- #hidden
-
The cell is hidden.
- #locked
-
The cell is locked.
- #merge_range
-
The cell is in a merged range.
- #shrink
-
Shrink the contents to fit the cell.
- #text_justlast
-
Force the last line of a cell to be justified. This probably makes sense if horizontal_align = :justify
- #left
-
Apply a border style to the left of the cell.
- #right
-
Apply a border style to the right of the cell.
- #top
-
Apply a border style at the top of the cell.
- #bottom
-
Apply a border style at the bottom of the cell.
- #rotation_stacked
-
Characters in the cell are stacked on top of each other. Excel will ignore other rotation values if this is set.
31 32 33 |
# File 'lib/spreadsheet/format.rb', line 31 boolean :cross_down, :cross_up, :hidden, :locked, :merge_range, :shrink, :text_justlast, :text_wrap, :rotation_stacked |
#date? ⇒ Boolean
Is the cell formatted as a Date?
186 187 188 |
# File 'lib/spreadsheet/format.rb', line 186 def date? !number? && matches_format?(:date) end |
#date_or_time? ⇒ Boolean
Is the cell formatted as a Date or Time?
191 192 193 |
# File 'lib/spreadsheet/format.rb', line 191 def date_or_time? !number? && matches_format?(:date_or_time) end |
#datetime? ⇒ Boolean
Is the cell formatted as a DateTime?
196 197 198 |
# File 'lib/spreadsheet/format.rb', line 196 def datetime? !number? && matches_format?(:datetime) end |
#horizontal_align ⇒ Object
Horizontal alignment Valid values: :default, :left, :center, :right, :fill, :justify, :merge,
:distributed
Default: :default
74 75 76 77 78 |
# File 'lib/spreadsheet/format.rb', line 74 enum :horizontal_align, :default, :left, :center, :right, :fill, :justify, :merge, :distributed, :center => :centre, :merge => [ :center_across, :centre_across ], :distributed => :equal_space |
#indent_level ⇒ Object Also known as: indent
Indentation level
66 |
# File 'lib/spreadsheet/format.rb', line 66 enum :indent_level, 0, Integer |
#matches_format?(name) ⇒ Boolean
Does the cell match a particular preset format?
211 212 213 214 215 216 |
# File 'lib/spreadsheet/format.rb', line 211 def matches_format?(name) # Excel number formats may optionally include a locale identifier like this: # [$-409] format = @number_format.to_s.sub(@regexes[:locale], '') !!@regexes[name].match(format) end |
#number? ⇒ Boolean
Is the cell formatted as a number?
206 207 208 |
# File 'lib/spreadsheet/format.rb', line 206 def number? matches_format?(:number) end |
#text_direction ⇒ Object Also known as: reading_order
Text direction Valid values: :context, :left_to_right, :right_to_left Default: :context
59 60 61 |
# File 'lib/spreadsheet/format.rb', line 59 enum :text_direction, :context, :left_to_right, :right_to_left, :left_to_right => [:ltr, :l2r], :right_to_left => [:rtl, :r2l] |
#time? ⇒ Boolean
Is the cell formatted as a Time?
201 202 203 |
# File 'lib/spreadsheet/format.rb', line 201 def time? !number? && matches_format?(:time) end |
#update_format(opts = {}) ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/spreadsheet/format.rb', line 119 def update_format(opts = {}) opts.each do |attribute, value| writer = "#{attribute}=" @font.respond_to?(writer) ? @font.send(writer,value) : self.send(writer, value) end self end |
#vertical_align ⇒ Object
Vertical alignment Valid values: :bottom, :top, :middle, :justify, :distributed Default: :bottom
83 84 85 86 |
# File 'lib/spreadsheet/format.rb', line 83 enum :vertical_align, :bottom, :top, :middle, :justify, :distributed, :distributed => [:vdistributed, :vequal_space, :equal_space], :justify => :vjustify, :middle => [:vcenter, :vcentre, :center, :centre] |