Class: Writeexcel::Format

Inherits:
Colors
  • Object
show all
Defined in:
lib/writeexcel/format.rb

Constant Summary

Constants inherited from Colors

Colors::COLORS

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Colors

#get_color, #inspect

Constructor Details

#initialize(xf_index = 0, properties = {}) ⇒ Format

Constructor

xf_index   :
properties : Hash of property => value


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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/writeexcel/format.rb', line 35

def initialize(xf_index = 0, properties = {})   # :nodoc:
  @xf_index       = xf_index

  @type           = 0
  @font_index     = 0
  @font           = 'Arial'
  @size           = 10
  @bold           = 0x0190
  @italic         = 0
  @color          = 0x7FFF
  @underline      = 0
  @font_strikeout = 0
  @font_outline   = 0
  @font_shadow    = 0
  @font_script    = 0
  @font_family    = 0
  @font_charset   = 0
  @font_encoding  = 0

  @num_format     = 0
  @num_format_enc = 0

  @hidden         = 0
  @locked         = 1

  @text_h_align   = 0
  @text_wrap      = 0
  @text_v_align   = 2
  @text_justlast  = 0
  @rotation       = 0

  @fg_color       = 0x40
  @bg_color       = 0x41

  @pattern        = 0

  @bottom         = 0
  @top            = 0
  @left           = 0
  @right          = 0

  @bottom_color   = 0x40
  @top_color      = 0x40
  @left_color     = 0x40
  @right_color    = 0x40

  @indent         = 0
  @shrink         = 0
  @merge_range    = 0
  @reading_order  = 0

  @diag_type      = 0
  @diag_color     = 0x40
  @diag_border    = 0

  @font_only      = 0

  # Temp code to prevent merged formats in non-merged cells.
  @used_merge     = 0

  set_format_properties(properties) unless properties.empty?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object

Dynamically create set methods that aren’t already defined.



1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
# File 'lib/writeexcel/format.rb', line 1544

def method_missing(name, *args)  # :nodoc:
  # -- original perl comment --
  # There are two types of set methods: set_property() and
  # set_property_color(). When a method is AUTOLOADED we store a new anonymous
  # sub in the appropriate slot in the symbol table. The speeds up subsequent
  # calls to the same method.

  method = "#{name}"

  # Check for a valid method names, i.e. "set_xxx_yyy".
  method =~ /set_(\w+)/ or raise "Unknown method: #{method}\n"

  # Match the attribute, i.e. "@xxx_yyy".
  attribute = "@#{$1}"

  # Check that the attribute exists
  # ........
  if method =~ /set\w+color$/    # for "set_property_color" methods
    value = get_color(args[0])
  else                            # for "set_xxx" methods
    value = args[0].nil? ? 1 : args[0]
  end
  if value.respond_to?(:to_str) || !value.respond_to?(:+)
    s = %Q!#{attribute} = "#{value.to_s}"!
  else
    s = %Q!#{attribute} =   #{value.to_s}!
  end
  eval s
end

Class Method Details

._get_color(color) ⇒ Object

used from Worksheet.rb

this is cut & copy of get_color().


611
612
613
# File 'lib/writeexcel/format.rb', line 611

def self._get_color(color)  # :nodoc:
  Colors.new.get_color(color)
end

Instance Method Details

#bg_colorObject

:nodoc:



538
539
540
# File 'lib/writeexcel/format.rb', line 538

def bg_color  # :nodoc:
  @bg_color
end

#boldObject

:nodoc:



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

def bold  # :nodoc:
  @bold
end

#bottomObject

:nodoc:



546
547
548
# File 'lib/writeexcel/format.rb', line 546

def bottom  # :nodoc:
  @bottom
end

#bottom_colorObject

:nodoc:



562
563
564
# File 'lib/writeexcel/format.rb', line 562

def bottom_color  # :nodoc:
  @bottom_color
end

#colorObject

:nodoc:



458
459
460
# File 'lib/writeexcel/format.rb', line 458

def color  # :nodoc:
  @color
end

#copy(other) ⇒ Object

:call-seq:

copy(format)

Copy the attributes of another Format object.

This method is used to copy all of the properties from one Format object to another:

lorry1 = workbook.add_format
lorry1.set_bold
lorry1.set_italic
lorry1.set_color('red')     # lorry1 is bold, italic and red

lorry2 = workbook.add_format
lorry2.copy(lorry1)
lorry2.set_color('yellow')  # lorry2 is bold, italic and yellow

The copy() method is only useful if you are using the method interface to Format properties. It generally isn’t required if you are setting Format properties directly using hashes.

Note: this is not a copy constructor, both objects must exist prior to copying.



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/writeexcel/format.rb', line 124

def copy(other)
  # copy properties except xf, merge_range, used_merge
  # Copy properties
  @type           = other.type
  @font_index     = other.font_index
  @font           = other.font
  @size           = other.size
  @bold           = other.bold
  @italic         = other.italic
  @color          = other.color
  @underline      = other.underline
  @font_strikeout = other.font_strikeout
  @font_outline   = other.font_outline
  @font_shadow    = other.font_shadow
  @font_script    = other.font_script
  @font_family    = other.font_family
  @font_charset   = other.font_charset
  @font_encoding  = other.font_encoding

  @num_format     = other.num_format
  @num_format_enc = other.num_format_enc

  @hidden         = other.hidden
  @locked         = other.locked

  @text_h_align   = other.text_h_align
  @text_wrap      = other.text_wrap
  @text_v_align   = other.text_v_align
  @text_justlast  = other.text_justlast
  @rotation       = other.rotation

  @fg_color       = other.fg_color
  @bg_color       = other.bg_color

  @pattern        = other.pattern

  @bottom         = other.bottom
  @top            = other.top
  @left           = other.left
  @right          = other.right

  @bottom_color   = other.bottom_color
  @top_color      = other.top_color
  @left_color     = other.left_color
  @right_color    = other.right_color

  @indent         = other.indent
  @shrink         = other.shrink
  @reading_order  = other.reading_order

  @diag_type      = other.diag_type
  @diag_color     = other.diag_color
  @diag_border    = other.diag_border

  @font_only      = other.font_only
end

#diag_borderObject

:nodoc:



598
599
600
# File 'lib/writeexcel/format.rb', line 598

def diag_border  # :nodoc:
  @diag_border
end

#diag_colorObject

:nodoc:



594
595
596
# File 'lib/writeexcel/format.rb', line 594

def diag_color  # :nodoc:
  @diag_color
end

#diag_typeObject

:nodoc:



590
591
592
# File 'lib/writeexcel/format.rb', line 590

def diag_type  # :nodoc:
  @diag_type
end

#fg_colorObject

:nodoc:



534
535
536
# File 'lib/writeexcel/format.rb', line 534

def fg_color  # :nodoc:
  @fg_color
end

#fontObject

:nodoc:



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

def font  # :nodoc:
  @font
end

#font_charsetObject

:nodoc:



486
487
488
# File 'lib/writeexcel/format.rb', line 486

def font_charset  # :nodoc:
  @font_charset
end

#font_encodingObject

:nodoc:



490
491
492
# File 'lib/writeexcel/format.rb', line 490

def font_encoding  # :nodoc:
  @font_encoding
end

#font_familyObject

:nodoc:



482
483
484
# File 'lib/writeexcel/format.rb', line 482

def font_family  # :nodoc:
  @font_family
end

#font_indexObject

:nodoc:



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

def font_index  # :nodoc:
  @font_index
end

#font_index=(val) ⇒ Object

:nodoc:



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

def font_index=(val)  # :nodoc:
  @font_index = val
end

#font_onlyObject

:nodoc:



602
603
604
# File 'lib/writeexcel/format.rb', line 602

def font_only  # :nodoc:
  @font_only
end

#font_outlineObject

:nodoc:



470
471
472
# File 'lib/writeexcel/format.rb', line 470

def font_outline  # :nodoc:
  @font_outline
end

#font_scriptObject

:nodoc:



478
479
480
# File 'lib/writeexcel/format.rb', line 478

def font_script  # :nodoc:
  @font_script
end

#font_shadowObject

:nodoc:



474
475
476
# File 'lib/writeexcel/format.rb', line 474

def font_shadow  # :nodoc:
  @font_shadow
end

#font_strikeoutObject

:nodoc:



466
467
468
# File 'lib/writeexcel/format.rb', line 466

def font_strikeout  # :nodoc:
  @font_strikeout
end

#get_fontObject

Generate an Excel BIFF FONT record.



337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
# File 'lib/writeexcel/format.rb', line 337

def get_font  # :nodoc:

  #   my $record;     # Record identifier
  #   my $length;     # Record length

  #   my $dyHeight;   # Height of font (1/20 of a point)
  #   my $grbit;      # Font attributes
  #   my $icv;        # Index to color palette
  #   my $bls;        # Bold style
  #   my $sss;        # Superscript/subscript
  #   my $uls;        # Underline
  #   my $bFamily;    # Font family
  #   my $bCharSet;   # Character set
  #   my $reserved;   # Reserved
  #   my $cch;        # Length of font name
  #   my $rgch;       # Font name
  #   my $encoding;   # Font name character encoding


  dyHeight   = @size * 20
  icv        = @color
  bls        = @bold
  sss        = @font_script
  uls        = @underline
  bFamily    = @font_family
  bCharSet   = @font_charset
  rgch       = @font
  encoding   = @font_encoding

  ruby_19 { rgch = convert_to_ascii_if_ascii(rgch) }

  # Handle utf8 strings
  if is_utf8?(rgch)
    rgch = utf8_to_16be(rgch)
    encoding = 1
  end

  cch = rgch.bytesize
  #
  # Handle Unicode font names.
  if (encoding == 1)
    raise "Uneven number of bytes in Unicode font name" if cch % 2 != 0
    cch  /= 2 if encoding !=0
    rgch  = utf16be_to_16le(rgch)
  end

  record     = 0x31
  length     = 0x10 + rgch.bytesize
  reserved   = 0x00

  grbit      = 0x00
  grbit     |= 0x02 if @italic != 0
  grbit     |= 0x08 if @font_strikeout != 0
  grbit     |= 0x10 if @font_outline != 0
  grbit     |= 0x20 if @font_shadow != 0


  header = [record, length].pack("vv")
  data   = [dyHeight, grbit, icv, bls,
            sss, uls, bFamily,
            bCharSet, reserved, cch, encoding].pack('vvvvvCCCCCC')

  header + data + rgch
end

#get_font_keyObject

Returns a unique hash key for a font. Used by Workbook->_store_all_fonts()



405
406
407
408
409
410
411
412
413
# File 'lib/writeexcel/format.rb', line 405

def get_font_key  # :nodoc:
  # The following elements are arranged to increase the probability of
  # generating a unique key. Elements that hold a large range of numbers
  # e.g. _color are placed between two binary elements such as _italic

  key  = "#{@font}#{@size}#{@font_script}#{@underline}#{@font_strikeout}#{@bold}#{@font_outline}"
  key += "#{@font_family}#{@font_charset}#{@font_shadow}#{@color}#{@italic}#{@font_encoding}"
  key.gsub(' ', '_') # Convert the key to a single word
end

#get_xfObject

Generate an Excel BIFF XF record.



184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
# File 'lib/writeexcel/format.rb', line 184

def get_xf  # :nodoc:

  # Local Variable
  #    record;     # Record identifier
  #    length;     # Number of bytes to follow
  #
  #    ifnt;       # Index to FONT record
  #    ifmt;       # Index to FORMAT record
  #    style;      # Style and other options
  #    align;      # Alignment
  #    indent;     #
  #    icv;        # fg and bg pattern colors
  #    border1;    # Border line options
  #    border2;    # Border line options
  #    border3;    # Border line options

  # Set the type of the XF record and some of the attributes.
  if @type == 0xFFF5 then
    style = 0xFFF5
  else
    style  = @locked
    style |= @hidden << 1
  end

  # Flags to indicate if attributes have been set.
  atr_num  = (@num_format   != 0) ? 1 : 0
  atr_fnt  = (@font_index   != 0) ? 1 : 0
  atr_alc  = (@text_h_align != 0 ||
              @text_v_align != 2 ||
              @shrink       != 0 ||
              @merge_range  != 0 ||
              @text_wrap    != 0 ||
              @indent       != 0) ? 1 : 0
  atr_bdr  = (@bottom       != 0 ||
              @top          != 0 ||
              @left         != 0 ||
              @right        != 0 ||
              @diag_type    != 0) ? 1 : 0
  atr_pat  = (@fg_color     != 0x40 ||
              @bg_color     != 0x41 ||
              @pattern      != 0x00) ? 1 : 0
  atr_prot = (@hidden       != 0 ||
              @locked       != 1) ? 1 : 0

  # Set attribute changed flags for the style formats.
  if @xf_index != 0 and @type == 0xFFF5
    if @xf_index >= 16
      atr_num    = 0
      atr_fnt    = 1
    else
      atr_num    = 1
      atr_fnt    = 0
    end
    atr_alc    = 1
    atr_bdr    = 1
    atr_pat    = 1
    atr_prot   = 1
  end

  # Set a default diagonal border style if none was specified.
  @diag_border = 1 if (@diag_border ==0 and @diag_type != 0)

  # Reset the default colours for the non-font properties
  @fg_color     = 0x40 if @fg_color     == 0x7FFF
  @bg_color     = 0x41 if @bg_color     == 0x7FFF
  @bottom_color = 0x40 if @bottom_color == 0x7FFF
  @top_color    = 0x40 if @top_color    == 0x7FFF
  @left_color   = 0x40 if @left_color   == 0x7FFF
  @right_color  = 0x40 if @right_color  == 0x7FFF
  @diag_color   = 0x40 if @diag_color   == 0x7FFF

  # Zero the default border colour if the border has not been set.
  @bottom_color = 0 if @bottom    == 0
  @top_color    = 0 if @top       == 0
  @right_color  = 0 if @right     == 0
  @left_color   = 0 if @left      == 0
  @diag_color   = 0 if @diag_type == 0

  # The following 2 logical statements take care of special cases in relation
  # to cell colours and patterns:
  # 1. For a solid fill (_pattern == 1) Excel reverses the role of foreground
  #    and background colours.
  # 2. If the user specifies a foreground or background colour without a
  #    pattern they probably wanted a solid fill, so we fill in the defaults.
  #
  if (@pattern  <= 0x01 && @bg_color != 0x41 && @fg_color == 0x40)
    @fg_color = @bg_color
    @bg_color = 0x40
    @pattern  = 1
  end

  if (@pattern <= 0x01 && @bg_color == 0x41 && @fg_color != 0x40)
    @bg_color = 0x40
    @pattern  = 1
  end

  # Set default alignment if indent is set.
  @text_h_align = 1 if @indent != 0 and @text_h_align == 0


  record         = 0x00E0
  length         = 0x0014

  ifnt           = @font_index
  ifmt           = @num_format


  align          = @text_h_align
  align         |= @text_wrap     << 3
  align         |= @text_v_align  << 4
  align         |= @text_justlast << 7
  align         |= @rotation      << 8

  indent         = @indent
  indent        |= @shrink        << 4
  indent        |= @merge_range   << 5
  indent        |= @reading_order << 6
  indent        |= atr_num        << 10
  indent        |= atr_fnt        << 11
  indent        |= atr_alc        << 12
  indent        |= atr_bdr        << 13
  indent        |= atr_pat        << 14
  indent        |= atr_prot       << 15


  border1        = @left
  border1       |= @right         << 4
  border1       |= @top           << 8
  border1       |= @bottom        << 12

  border2        = @left_color
  border2       |= @right_color   << 7
  border2       |= @diag_type     << 14

  border3        = @top_color
  border3       |= @bottom_color  << 7
  border3       |= @diag_color    << 14
  border3       |= @diag_border   << 21
  border3       |= @pattern       << 26

  icv            = @fg_color
  icv           |= @bg_color      << 7

  header = [record, length].pack("vv")
  data   = [ifnt, ifmt, style, align, indent,
            border1, border2, border3, icv].pack("vvvvvvvVv")

  header + data
end

#hiddenObject

:nodoc:



506
507
508
# File 'lib/writeexcel/format.rb', line 506

def hidden  # :nodoc:
  @hidden
end

#indentObject

:nodoc:



578
579
580
# File 'lib/writeexcel/format.rb', line 578

def indent  # :nodoc:
  @indent
end

#italicObject

:nodoc:



454
455
456
# File 'lib/writeexcel/format.rb', line 454

def italic  # :nodoc:
  @italic
end

#leftObject

:nodoc:



554
555
556
# File 'lib/writeexcel/format.rb', line 554

def left  # :nodoc:
  @left
end

#left_colorObject

:nodoc:



570
571
572
# File 'lib/writeexcel/format.rb', line 570

def left_color  # :nodoc:
  @left_color
end

#lockedObject

:nodoc:



510
511
512
# File 'lib/writeexcel/format.rb', line 510

def locked  # :nodoc:
  @locked
end

#num_formatObject

:nodoc:



494
495
496
# File 'lib/writeexcel/format.rb', line 494

def num_format  # :nodoc:
  @num_format
end

#num_format=(val) ⇒ Object

:nodoc:



498
499
500
# File 'lib/writeexcel/format.rb', line 498

def num_format=(val)  # :nodoc:
  @num_format = val
end

#num_format_encObject

:nodoc:



502
503
504
# File 'lib/writeexcel/format.rb', line 502

def num_format_enc  # :nodoc:
  @num_format_enc
end

#patternObject

:nodoc:



542
543
544
# File 'lib/writeexcel/format.rb', line 542

def pattern  # :nodoc:
  @pattern
end

#reading_orderObject

:nodoc:



586
587
588
# File 'lib/writeexcel/format.rb', line 586

def reading_order  # :nodoc:
  @reading_order
end

#rightObject

:nodoc:



558
559
560
# File 'lib/writeexcel/format.rb', line 558

def right  # :nodoc:
  @right
end

#right_colorObject

:nodoc:



574
575
576
# File 'lib/writeexcel/format.rb', line 574

def right_color  # :nodoc:
  @right_color
end

#rotationObject

:nodoc:



530
531
532
# File 'lib/writeexcel/format.rb', line 530

def rotation  # :nodoc:
  @rotation
end

#set_align(align = 'left') ⇒ Object

Set cell alignment.

Default state:      Alignment is off
Default action:     Left alignment
Valid args:         'left'              Horizontal
                    'center'
                    'right'
                    'fill'
                    'justify'
                    'center_across'

                    'top'               Vertical
                    'vcenter'
                    'bottom'
                    'vjustify'

This method is used to set the horizontal and vertical text alignment within a cell. Vertical and horizontal alignments can be combined.

The method is used as follows:

   format = workbook.add_format
   format->set_align('center')
   format->set_align('vcenter')
   worksheet->set_row(0, 30)
   worksheet->write(0, 0, 'X', format)

Text can be aligned across two or more adjacent cells using the center_across property. However, for genuine merged cells it is better to use the merge_range() worksheet method.

The vjustify (vertical justify) option can be used to provide automatic text wrapping in a cell. The height of the cell will be adjusted to accommodate the wrapped text. To specify where the text wraps use the set_text_wrap() method.

For further examples see the ‘Alignment’ worksheet created by formats.rb.



947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
# File 'lib/writeexcel/format.rb', line 947

def set_align(align = 'left')
  case align.to_s.downcase
  when 'left'             then set_text_h_align(1)
  when 'centre', 'center' then set_text_h_align(2)
  when 'right'            then set_text_h_align(3)
  when 'fill'             then set_text_h_align(4)
  when 'justify'          then set_text_h_align(5)
  when 'center_across', 'centre_across' then set_text_h_align(6)
  when 'merge'            then set_text_h_align(6) # S:WE name
  when 'distributed'      then set_text_h_align(7)
  when 'equal_space'      then set_text_h_align(7) # ParseExcel

  when 'top'              then set_text_v_align(0)
  when 'vcentre'          then set_text_v_align(1)
  when 'vcenter'          then set_text_v_align(1)
  when 'bottom'           then set_text_v_align(2)
  when 'vjustify'         then set_text_v_align(3)
  when 'vdistributed'     then set_text_v_align(4)
  when 'vequal_space'     then set_text_v_align(4) # ParseExcel
  else nil
  end
end

#set_bg_color(color = 0x41) ⇒ Object

The set_bg_color() method can be used to set the background colour of a pattern. Patterns are defined via the set_pattern() method. If a pattern hasn’t been defined then a solid fill pattern is used as the default.

Default state:      Color is off
Default action:     Solid fill.
Valid args:         See set_color()

Here is an example of how to set up a solid fill in a cell:

format = workbook.add_format

format.set_pattern()  # This is optional when using a solid fill

format.set_bg_color('green')
worksheet.write('A1', 'Ray', format)

For further examples see the ‘Patterns’ worksheet created by formats.rb.



1525
1526
1527
# File 'lib/writeexcel/format.rb', line 1525

def set_bg_color(color = 0x41)
  @bg_color = get_color(color)
end

#set_bold(weight = nil) ⇒ Object

Set the bold property of the font:

Default state:      bold is off
Default action:     Turn bold on
Valid args:         0, 1 [1]

format.set_bold()   # Turn bold on
1

Actually, values in the range 100..1000 are also valid. 400 is normal,

700 is bold and 1000 is very bold indeed. It is probably best to set the value to 1 and use normal bold.



702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
# File 'lib/writeexcel/format.rb', line 702

def set_bold(weight = nil)

  if weight.nil?
    weight = 0x2BC
  elsif !weight.respond_to?(:to_int) || !weight.respond_to?(:+) # avoid Symbol
    weight = 0x190
  elsif weight == 1                       # Bold text
    weight = 0x2BC
  elsif weight == 0                       # Normal text
    weight = 0x190
  elsif weight <  0x064 || 0x3E8 < weight # Out bound
    weight = 0x190
  else
    weight = weight.to_i
  end

  @bold = weight
end

#set_border(style) ⇒ Object

Set cells borders to the same style

Also applies to:    set_bottom()
                    set_top()
                    set_left()
                    set_right()

Default state:      Border is off
Default action:     Set border type 1
Valid args:         0-13, See below.

A cell border is comprised of a border on the bottom, top, left and right. These can be set to the same value using set_border() or individually using the relevant method calls shown above.

The following shows the border styles sorted by WriteExcel index number:

Index   Name            Weight   Style
=====   =============   ======   ===========
0       None            0
1       Continuous      1        -----------
2       Continuous      2        -----------
3       Dash            1        - - - - - -
4       Dot             1        . . . . . .
5       Continuous      3        -----------
6       Double          3        ===========
7       Continuous      0        -----------
8       Dash            2        - - - - - -
9       Dash Dot        1        - . - . - .
10      Dash Dot        2        - . - . - .
11      Dash Dot Dot    1        - . . - . .
12      Dash Dot Dot    2        - . . - . .
13      SlantDash Dot   2        / - . / - .

The following shows the borders sorted by style:

Name            Weight   Style         Index
=============   ======   ===========   =====
Continuous      0        -----------   7
Continuous      1        -----------   1
Continuous      2        -----------   2
Continuous      3        -----------   5
Dash            1        - - - - - -   3
Dash            2        - - - - - -   8
Dash Dot        1        - . - . - .   9
Dash Dot        2        - . - . - .   10
Dash Dot Dot    1        - . . - . .   11
Dash Dot Dot    2        - . . - . .   12
Dot             1        . . . . . .   4
Double          3        ===========   6
None            0                      0
SlantDash Dot   2        / - . / - .   13

The following shows the borders in the order shown in the Excel Dialog.

Index   Style             Index   Style
=====   =====             =====   =====
0       None              12      - . . - . .
7       -----------       13      / - . / - .
4       . . . . . .       10      - . - . - .
11      - . . - . .       8       - - - - - -
9       - . - . - .       2       -----------
3       - - - - - -       5       -----------
1       -----------       6       ===========

Examples of the available border styles are shown in the ‘Borders’ worksheet created by formats.rb.



1107
1108
1109
1110
1111
1112
# File 'lib/writeexcel/format.rb', line 1107

def set_border(style)
  set_bottom(style)
  set_top(style)
  set_left(style)
  set_right(style)
end

#set_border_color(color) ⇒ Object

Set cells border to the same color

Also applies to:    set_bottom_color()
                    set_top_color()
                    set_left_color()
                    set_right_color()

Default state:      Color is off
Default action:     Undefined
Valid args:         See set_color()

Set the colour of the cell borders. A cell border is comprised of a border on the bottom, top, left and right. These can be set to the same colour using set_border_color() or individually using the relevant method calls shown above. Examples of the border styles and colours are shown in the ‘Borders’ worksheet created by formats.rb.



1164
1165
1166
1167
1168
1169
# File 'lib/writeexcel/format.rb', line 1164

def set_border_color(color)
  set_bottom_color(color)
  set_top_color(color)
  set_left_color(color)
  set_right_color(color)
end

#set_bottom(style) ⇒ Object

set bottom border of the cell. see set_border() about style.



1118
1119
1120
# File 'lib/writeexcel/format.rb', line 1118

def set_bottom(style)
  @bottom = style
end

#set_bottom_color(color) ⇒ Object

set bottom border color of the cell. see set_border_color() about color.



1175
1176
1177
# File 'lib/writeexcel/format.rb', line 1175

def set_bottom_color(color)
  @bottom_color = get_color(color)
end

#set_center_across(arg = 1) ⇒ Object

Implements the Excel5 style “merge”.

Default state:      Center across selection is off
Default action:     Turn center across on
Valid args:         1

Text can be aligned across two or more adjacent cells using the set_center_across() method. This is an alias for the set_align(‘center_across’) method call.

Only one cell should contain the text, the other cells should be blank:

format = workbook.add_format
format.set_center_across

worksheet.write(1, 1, 'Center across selection', format)
worksheet.write_blank(1, 2, format)

See also the merge1.pl to merge6.rb programs in the examples directory and the merge_range() method.



1000
1001
1002
# File 'lib/writeexcel/format.rb', line 1000

def set_center_across(arg = 1)
  set_text_h_align(6)
end

#set_color(color = 0x7FFF) ⇒ Object

Set the font colour.

Default state:      Excels default color, usually black
Default action:     Set the default color
Valid args:         Integers from 8..63 or the following strings:
                    'black', 'blue', 'brown', 'cyan', 'gray'
                    'green', 'lime', 'magenta', 'navy', 'orange'
                    'pink', 'purple', 'red', 'silver', 'white', 'yellow'

The set_color() method is used as follows:

format = workbook.add_format()
format.set_color('red')
worksheet.write(0, 0, 'wheelbarrow', format)

Note: The set_color() method is used to set the colour of the font in a cell.

To set the colour of a cell use the set_bg_color()
and set_pattern() methods.


665
666
667
# File 'lib/writeexcel/format.rb', line 665

def set_color(color = 0x7FFF)
  @color = get_color(color)
end

#set_fg_color(color = 0x40) ⇒ Object

The set_fg_color() method can be used to set the foreground colour of a pattern.

Default state:      Color is off
Default action:     Solid fill.
Valid args:         See set_color()

For further examples see the ‘Patterns’ worksheet created by formats.rb.



1539
1540
1541
# File 'lib/writeexcel/format.rb', line 1539

def set_fg_color(color = 0x40)
  @fg_color = get_color(color)
end

#set_font(fontname) ⇒ Object

Default state: Font is Arial

Default action:     None
Valid args:         Any valid font name

Specify the font used:

format.set_font('Times New Roman');

Excel can only display fonts that are installed on the system that it is running on. Therefore it is best to use the fonts that come as standard such as ‘Arial’, ‘Times New Roman’ and ‘Courier New’. See also the Fonts worksheet created by formats.rb



1298
1299
1300
# File 'lib/writeexcel/format.rb', line 1298

def set_font(fontname)
  @font = fontname
end

#set_font_outline(arg = 1) ⇒ Object

Macintosh only.

Default state:      Outline is off
Default action:     Turn outline on
Valid args:         0, 1


799
800
801
802
803
804
805
806
807
808
809
# File 'lib/writeexcel/format.rb', line 799

def set_font_outline(arg = 1)
  begin
    if    arg == 0 then @font_outline = 0
    elsif arg == 1 then @font_outline = 1
    else
      raise ArgumentError,
      "\n\n  set_font_outline(#{arg.inspect})\n    arg must be 0, 1, or none.\n"
      " ( 0:OFF, 1 and none:outline on )\n"
    end
  end
end

#set_font_script(arg = 1) ⇒ Object

Set the superscript/subscript property of the font. This format is currently not very useful.

Default state:      Super/Subscript is off
Default action:     Turn Superscript on
Valid args:         0  = Normal
                    1  = Superscript
                    2  = Subscript


779
780
781
782
783
784
785
786
787
788
789
790
# File 'lib/writeexcel/format.rb', line 779

def set_font_script(arg = 1)
  begin
    if    arg == 0 then @font_script = 0
    elsif arg == 1 then @font_script = 1
    elsif arg == 2 then @font_script = 2
    else
      raise ArgumentError,
      "\n\n  set_font_script(#{arg.inspect})\n    arg must be 0, 1, or none. or 2\n"
      " ( 0:OFF, 1 and none:Superscript, 2:Subscript )\n"
    end
  end
end

#set_font_shadow(arg = 1) ⇒ Object

Macintosh only.

Default state:      Shadow is off
Default action:     Turn shadow on
Valid args:         0, 1


818
819
820
821
822
823
824
825
826
827
828
# File 'lib/writeexcel/format.rb', line 818

def set_font_shadow(arg = 1)
  begin
    if    arg == 0 then @font_shadow = 0
    elsif arg == 1 then @font_shadow = 1
    else
      raise ArgumentError,
      "\n\n  set_font_shadow(#{arg.inspect})\n    arg must be 0, 1, or none.\n"
      " ( 0:OFF, 1 and none:shadow on )\n"
    end
  end
end

#set_font_strikeout(arg = 1) ⇒ Object

Set the strikeout property of the font.

Default state:      Strikeout is off
Default action:     Turn strikeout on
Valid args:         0, 1


757
758
759
760
761
762
763
764
765
766
767
# File 'lib/writeexcel/format.rb', line 757

def set_font_strikeout(arg = 1)
  begin
    if    arg == 0 then @font_strikeout = 0
    elsif arg == 1 then @font_strikeout = 1
    else
      raise ArgumentError,
      "\n\n  set_font_strikeout(#{arg.inspect})\n    arg must be 0, 1, or none.\n"
      " ( 0:OFF, 1 and none:Strikeout )\n"
    end
  end
end

#set_format_properties(*properties) ⇒ Object

:call-seq:

set_format_properties( :bold => 1 [, :color => 'red'..] )
set_format_properties( font [, shade, ..])
set_format_properties( :bold => 1, font, ...)
  *) font  = { :color => 'red', :bold => 1 }
     shade = { :bg_color => 'green', :pattern => 1 }

Convert hashes of properties to method calls.

The properties of an existing Format object can be also be set by means of set_format_properties():

format = workbook.add_format
format.set_format_properties(:bold => 1, :color => 'red');

However, this method is here mainly for legacy reasons. It is preferable to set the properties in the format constructor:

format = workbook.add_format(:bold => 1, :color => 'red');


1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
# File 'lib/writeexcel/format.rb', line 1266

def set_format_properties(*properties)   # :nodoc:
  return if properties.empty?
  properties.each do |property|
    property.each do |key, value|
      # Strip leading "-" from Tk style properties e.g. "-color" => 'red'.
      key = key.sub(/^-/, '') if key.respond_to?(:to_str)

      # Create a sub to set the property.
      if value.respond_to?(:to_str) || !value.respond_to?(:+)
        s = "set_#{key}('#{value}')"
      else
        s = "set_#{key}(#{value})"
      end
      eval s
    end
  end
end

#set_hidden(arg = 1) ⇒ Object

hide a formula while still displaying its result.

Default state:      Formula hiding is off
Default action:     Turn hiding on
Valid args:         0, 1

This property is used to hide a formula while still displaying its result. This is generally used to hide complex calculations from end users who are only interested in the result. It only has an effect if the worksheet has been protected, see the worksheet protect() method.

hidden = workbook.add_format
hidden.set_hidden

# Enable worksheet protection
worksheet.protect

# The formula in this cell isn't visible
worksheet.write('A1', '=1+2', hidden)

Note: This offers weak protection even with a password,

see the note in relation to the protect() method  .


897
898
899
900
901
902
903
904
905
906
907
# File 'lib/writeexcel/format.rb', line 897

def set_hidden(arg = 1)
  begin
    if    arg == 0 then @hidden = 0
    elsif arg == 1 then @hidden = 1
    else
      raise ArgumentError,
      "\n\n  set_hidden(#{arg.inspect})\n    arg must be 0, 1, or none.\n"
      " ( 0:OFF, 1 and none:hiding On )\n"
    end
  end
end

#set_indent(indent = 1) ⇒ Object

This method can be used to indent text. The argument, which should be an integer, is taken as the level of indentation:

Default state:      Text indentation is off
Default action:     Indent text 1 level
Valid args:         Positive integers

format = workbook.add_format
format.set_indent(2)
worksheet.write(0, 0, 'This text is indented', format)

Indentation is a horizontal alignment property. It will override any other horizontal properties but it can be used in conjunction with vertical properties.



1460
1461
1462
# File 'lib/writeexcel/format.rb', line 1460

def set_indent(indent = 1)
  @indent = indent
end

#set_italic(arg = 1) ⇒ Object

Set the italic property of the font:

Default state:      Italic is off
Default action:     Turn italic on
Valid args:         0, 1

format.set_italic    # Turn italic on


678
679
680
681
682
683
684
685
686
687
# File 'lib/writeexcel/format.rb', line 678

def set_italic(arg = 1)
  begin
    if    arg == 1  then @italic = 1   # italic on
    elsif arg == 0  then @italic = 0   # italic off
    else
      raise ArgumentError,
      "\n\n  set_italic(#{arg.inspect})\n    arg must be 0, 1, or none. ( 0:OFF , 1 and none:ON )\n"
    end
  end
end

#set_left(style) ⇒ Object

set left border of the cell. see set_border() about style.



1134
1135
1136
# File 'lib/writeexcel/format.rb', line 1134

def set_left(style)
  @left = style
end

#set_left_color(color) ⇒ Object

set left border color of the cell. see set_border_color() about color.



1191
1192
1193
# File 'lib/writeexcel/format.rb', line 1191

def set_left_color(color)
  @left_color = get_color(color)
end

#set_locked(arg = 1) ⇒ Object

prevent modification of a cells contents.

Default state:      Cell locking is on
Default action:     Turn locking on
Valid args:         0, 1

This property can be used to prevent modification of a cells contents. Following Excel’s convention, cell locking is turned on by default. However, it only has an effect if the worksheet has been protected, see the worksheet protect() method.

locked  = workbook.add_format()
locked.set_locked(1) # A non-op

unlocked = workbook.add_format()
locked.set_locked(0)

# Enable worksheet protection
worksheet.protect()

# This cell cannot be edited.
worksheet.write('A1', '=1+2', locked)

# This cell can be edited.
worksheet.write('A2', '=1+2', unlocked)

Note: This offers weak protection even with a password, see the note in relation to the protect() method.



860
861
862
863
864
865
866
867
868
869
870
# File 'lib/writeexcel/format.rb', line 860

def set_locked(arg = 1)
  begin
    if    arg == 0 then @locked = 0
    elsif arg == 1 then @locked = 1
    else
      raise ArgumentError,
      "\n\n  set_locked(#{arg.inspect})\n    arg must be 0, 1, or none.\n"
      " ( 0:OFF, 1 and none:Lock On )\n"
    end
  end
end

#set_merge(val = true) ⇒ Object

This was the way to implement a merge in Excel5. However it should have been called “center_across” and not “merge”. This is now deprecated. Use set_center_across() or better merge_range().



1010
1011
1012
# File 'lib/writeexcel/format.rb', line 1010

def set_merge(val=true)  # :nodoc:
  set_text_h_align(6)
end

#set_num_format(num_format) ⇒ Object

This method is used to define the numerical format of a number in Excel.

Default state:      General format
Default action:     Format index 1
Valid args:         See the following table

It controls whether a number is displayed as an integer, a floating point number, a date, a currency value or some other user defined format.

The numerical format of a cell can be specified by using a format string or an index to one of Excel’s built-in formats:

format1 = workbook.add_format
format2 = workbook.add_format
format1.set_num_format('d mmm yyyy')  # Format string
format2.set_num_format(0x0f)          # Format index

worksheet.write(0, 0, 36892.521, format1)       # 1 Jan 2001
worksheet.write(0, 0, 36892.521, format2)       # 1-Jan-01

Using format strings you can define very sophisticated formatting of numbers.

format01.set_num_format('0.000')
worksheet.write(0,  0, 3.1415926, format01)     # 3.142

format02.set_num_format('#,##0')
worksheet.write(1,  0, 1234.56,   format02)     # 1,235

format03.set_num_format('#,##0.00')
worksheet.write(2,  0, 1234.56,   format03)     # 1,234.56

format04.set_num_format('0.00')
worksheet.write(3,  0, 49.99,     format04)     # 49.99

# Note you can use other currency symbols such as the pound or yen as well.
# Other currencies may require the use of Unicode.

format07.set_num_format('mm/dd/yy')
worksheet.write(6,  0, 36892.521, format07)     # 01/01/01

format08.set_num_format('mmm d yyyy')
worksheet.write(7,  0, 36892.521, format08)     # Jan 1 2001

format09.set_num_format('d mmmm yyyy')
worksheet.write(8,  0, 36892.521, format09)     # 1 January 2001

format10.set_num_format('dd/mm/yyyy hh:mm AM/PM')
worksheet.write(9,  0, 36892.521, format10)     # 01/01/2001 12:30 AM

format11.set_num_format('0 "dollar and" .00 "cents"')
worksheet.write(10, 0, 1.87,      format11)     # 1 dollar and .87 cents

# Conditional formatting
format12.set_num_format('[Green]General;[Red]-General;General')
worksheet.write(11, 0, 123,       format12)     # > 0 Green
worksheet.write(12, 0, -45,       format12)     # < 0 Red
worksheet.write(13, 0, 0,         format12)     # = 0 Default colour

# Zip code
format13.set_num_format('00000')
worksheet.write(14, 0, '01209',   format13)

The number system used for dates is described in “DATES AND TIME IN EXCEL”.

The colour format should have one of the following values:

[Black] [Blue] [Cyan] [Green] [Magenta] [Red] [White] [Yellow]

Alternatively you can specify the colour based on a colour index as follows: [Color n], where n is a standard Excel colour index - 7. See the ‘Standard colors’ worksheet created by formats.rb.

For more information refer to the documentation on formatting in the doc directory of the WriteExcel distro, the Excel on-line help or office.microsoft.com/en-gb/assistance/HP051995001033.aspx

You should ensure that the format string is valid in Excel prior to using it in WriteExcel.

Excel’s built-in formats are shown in the following table:

Index   Index   Format String
0       0x00    General
1       0x01    0
2       0x02    0.00
3       0x03    #,##0
4       0x04    #,##0.00
5       0x05    ($#,##0_);($#,##0)
6       0x06    ($#,##0_);[Red]($#,##0)
7       0x07    ($#,##0.00_);($#,##0.00)
8       0x08    ($#,##0.00_);[Red]($#,##0.00)
9       0x09    0%
10      0x0a    0.00%
11      0x0b    0.00E+00
12      0x0c    # ?/?
13      0x0d    # ??/??
14      0x0e    m/d/yy
15      0x0f    d-mmm-yy
16      0x10    d-mmm
17      0x11    mmm-yy
18      0x12    h:mm AM/PM
19      0x13    h:mm:ss AM/PM
20      0x14    h:mm
21      0x15    h:mm:ss
22      0x16    m/d/yy h:mm
..      ....    ...........
37      0x25    (#,##0_);(#,##0)
38      0x26    (#,##0_);[Red](#,##0)
39      0x27    (#,##0.00_);(#,##0.00)
40      0x28    (#,##0.00_);[Red](#,##0.00)
41      0x29    _(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)
42      0x2a    _($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)
43      0x2b    _(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)
44      0x2c    _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)
45      0x2d    mm:ss
46      0x2e    [h]:mm:ss
47      0x2f    mm:ss.0
48      0x30    ##0.0E+0
49      0x31    @

For examples of these formatting codes see the ‘Numerical formats’ worksheet created by formats.rb. – See also the number_formats1.html and the number_formats2.html documents in the doc directory of the distro. ++

Note 1. Numeric formats 23 to 36 are not documented by Microsoft and may differ in international versions.

Note 2. In Excel 5 the dollar sign appears as a dollar sign. In Excel 97-2000 it appears as the defined local currency symbol.

Note 3. The red negative numeric formats display slightly differently in Excel 5 and Excel 97-2000.



1440
1441
1442
# File 'lib/writeexcel/format.rb', line 1440

def set_num_format(num_format)
  @num_format = num_format
end

#set_pattern(pattern = 1) ⇒ Object

Default state: Pattern is off

Default action:     Solid fill is on
Valid args:         0 .. 18

Set the background pattern of a cell.

Examples of the available patterns are shown in the ‘Patterns’ worksheet created by formats.rb. However, it is unlikely that you will ever need anything other than Pattern 1 which is a solid fill of the background color.



1501
1502
1503
# File 'lib/writeexcel/format.rb', line 1501

def set_pattern(pattern = 1)
  @pattern = pattern
end

#set_right(style) ⇒ Object

set right border of the cell. see set_border() about style.



1142
1143
1144
# File 'lib/writeexcel/format.rb', line 1142

def set_right(style)
  @right = style
end

#set_right_color(color) ⇒ Object

set right border color of the cell. see set_border_color() about color.



1199
1200
1201
# File 'lib/writeexcel/format.rb', line 1199

def set_right_color(color)
  @right_color = get_color(color)
end

#set_rotation(rotation) ⇒ Object

Set the rotation angle of the text. An alignment property.

Default state:      Text rotation is off
Default action:     None
Valid args:         Integers in the range -90 to 90 and 270

Set the rotation of the text in a cell. The rotation can be any angle in the range -90 to 90 degrees.

format = workbook.add_format
format.set_rotation(30)
worksheet.write(0, 0, 'This text is rotated', format)

The angle 270 is also supported. This indicates text where the letters run from top to bottom.



1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
# File 'lib/writeexcel/format.rb', line 1220

def set_rotation(rotation)
  # The arg type can be a double but the Excel dialog only allows integers.
  rotation = rotation.to_i

  #      if (rotation == 270)
  #         rotation = 255
  #      elsif (rotation >= -90 or rotation <= 90)
  #         rotation = -rotation +90 if rotation < 0;
  #      else
  #         # carp "Rotation $rotation outside range: -90 <= angle <= 90";
  #         rotation = 0;
  #      end
  #
  if rotation == 270
    rotation = 255
  elsif rotation >= -90 && rotation <= 90
    rotation = -rotation + 90 if rotation < 0
  else
    rotation = 0
  end

  @rotation = rotation
end

#set_shrink(arg = 1) ⇒ Object

This method can be used to shrink text so that it fits in a cell.

Default state:      Text shrinking is off
Default action:     Turn "shrink to fit" on
Valid args:         1

format = workbook.add_format
format.set_shrink
worksheet.write(0, 0, 'Honey, I shrunk the text!', format)


1475
1476
1477
# File 'lib/writeexcel/format.rb', line 1475

def set_shrink(arg = 1)
  @shrink = 1
end

#set_size(size = 1) ⇒ Object

Default state: Font size is 10

Default action:     Set font size to 1
Valid args:         Integer values from 1 to as big as your screen.

Set the font size. Excel adjusts the height of a row to accommodate the largest font size in the row. You can also explicitly specify the height of a row using the set_row() worksheet method.

format = workbook.add_format
format.set_size(30)


639
640
641
642
643
# File 'lib/writeexcel/format.rb', line 639

def set_size(size = 1)
 if size.respond_to?(:to_int) && size.respond_to?(:+) && size >= 1 # avoid Symbol
   @size = size.to_int
 end
end

#set_text_justlast(arg = 1) ⇒ Object

Default state: Justify last is off

Default action:     Turn justify last on
Valid args:         0, 1

Only applies to Far Eastern versions of Excel.



1486
1487
1488
# File 'lib/writeexcel/format.rb', line 1486

def set_text_justlast(arg = 1)
  @text_justlast = 1
end

#set_text_wrap(arg = 1) ⇒ Object

Default state: Text wrap is off

Default action:     Turn text wrap on
Valid args:         0, 1

Here is an example using the text wrap property, the escape character n is used to indicate the end of line:

format = workbook.add_format()
format.set_text_wrap()
worksheet.write(0, 0, "It's\na bum\nwrap", format)


1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
# File 'lib/writeexcel/format.rb', line 1026

def set_text_wrap(arg = 1)
  begin
    if    arg == 0 then @text_wrap = 0
    elsif arg == 1 then @text_wrap = 1
    else
      raise ArgumentError,
      "\n\n  set_text_wrap(#{arg.inspect})\n    arg must be 0, 1, or none.\n"
      " ( 0:OFF, 1 and none:text wrap On )\n"
    end
  end
end

#set_top(style) ⇒ Object

set top border of the cell. see set_border() about style.



1126
1127
1128
# File 'lib/writeexcel/format.rb', line 1126

def set_top(style)
  @top = style
end

#set_top_color(color) ⇒ Object

set top border color of the cell. see set_border_color() about color.



1183
1184
1185
# File 'lib/writeexcel/format.rb', line 1183

def set_top_color(color)
  @top_color = get_color(color)
end

#set_type(type = nil) ⇒ Object

Set the XF object type as 0 = cell XF or 0xFFF5 = style XF.



618
619
620
621
622
623
624
625
# File 'lib/writeexcel/format.rb', line 618

def set_type(type = nil)  # :nodoc:

  if !type.nil? and type == 0
    @type = 0x0000
  else
    @type = 0xFFF5
  end
end

#set_underline(arg = 1) ⇒ Object

Set the underline property of the font.

Default state:      Underline is off
Default action:     Turn on single underline
Valid args:         0  = No underline
                    1  = Single underline
                    2  = Double underline
                    33 = Single accounting underline
                    34 = Double accounting underline

format.set_underline();   # Single underline


734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
# File 'lib/writeexcel/format.rb', line 734

def set_underline(arg = 1)
  begin
    case arg
    when  0  then @underline =  0    # off
    when  1  then @underline =  1    # Single
    when  2  then @underline =  2    # Double
    when 33  then @underline = 33    # Single accounting
    when 34  then @underline = 34    # Double accounting
    else
      raise ArgumentError,
      "\n\n  set_underline(#{arg.inspect})\n    arg must be 0, 1, or none, 2, 33, 34.\n"
      " ( 0:OFF, 1 and none:Single, 2:Double, 33:Single accounting, 34:Double accounting )\n"
    end
  end
end

#set_valign(alignment) ⇒ Object

Set vertical cell alignment. This is required by the set_format_properties() method to differentiate between the vertical and horizontal properties.



974
975
976
# File 'lib/writeexcel/format.rb', line 974

def set_valign(alignment)  # :nodoc:
  set_align(alignment)
end

#shrinkObject

:nodoc:



582
583
584
# File 'lib/writeexcel/format.rb', line 582

def shrink  # :nodoc:
  @shrink
end

#sizeObject

:nodoc:



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

def size  # :nodoc:
  @size
end

#text_h_alignObject

:nodoc:



514
515
516
# File 'lib/writeexcel/format.rb', line 514

def text_h_align  # :nodoc:
  @text_h_align
end

#text_justlastObject

:nodoc:



526
527
528
# File 'lib/writeexcel/format.rb', line 526

def text_justlast  # :nodoc:
  @text_justlast
end

#text_v_alignObject

:nodoc:



522
523
524
# File 'lib/writeexcel/format.rb', line 522

def text_v_align  # :nodoc:
  @text_v_align
end

#text_wrapObject

:nodoc:



518
519
520
# File 'lib/writeexcel/format.rb', line 518

def text_wrap  # :nodoc:
  @text_wrap
end

#topObject

:nodoc:



550
551
552
# File 'lib/writeexcel/format.rb', line 550

def top  # :nodoc:
  @top
end

#top_colorObject

:nodoc:



566
567
568
# File 'lib/writeexcel/format.rb', line 566

def top_color  # :nodoc:
  @top_color
end

#typeObject

:nodoc:



430
431
432
# File 'lib/writeexcel/format.rb', line 430

def type  # :nodoc:
  @type
end

#underlineObject

:nodoc:



462
463
464
# File 'lib/writeexcel/format.rb', line 462

def underline  # :nodoc:
  @underline
end

#used_mergeObject

:nodoc:



422
423
424
# File 'lib/writeexcel/format.rb', line 422

def used_merge  # :nodoc:
  @used_merge
end

#used_merge=(val) ⇒ Object

:nodoc:



426
427
428
# File 'lib/writeexcel/format.rb', line 426

def used_merge=(val)  # :nodoc:
  @used_merge = val
end

#xf_indexObject

Returns the used by Worksheet->_XF()



418
419
420
# File 'lib/writeexcel/format.rb', line 418

def xf_index  # :nodoc:
  @xf_index
end