Class: Writeexcel::Format

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

Constant Summary collapse

NonAscii =
/[^!"#\$%&'\(\)\*\+,\-\.\/\:\;<=>\?@0-9A-Za-z_\[\\\]\{\}^` ~\0\n]/

Constants inherited from Colors

Colors::COLORS

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Colors

#get_color

Constructor Details

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

initialize(xf_index=0, properties = {})

xf_index   :
properties : Hash of property => value

Constructor



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
97
# File 'lib/writeexcel/format.rb', line 36

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.



1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
# File 'lib/writeexcel/format.rb', line 1577

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

class method Format._get_color(colour)

used from Worksheet.rb

this is cut & copy of get_color().


635
636
637
# File 'lib/writeexcel/format.rb', line 635

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

Instance Method Details

#bg_colorObject

:nodoc:



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

def bg_color  # :nodoc:
  @bg_color
end

#boldObject

:nodoc:



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

def bold  # :nodoc:
  @bold
end

#bottomObject

:nodoc:



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

def bottom  # :nodoc:
  @bottom
end

#bottom_colorObject

:nodoc:



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

def bottom_color  # :nodoc:
  @bottom_color
end

#colorObject

:nodoc:



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

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.



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
180
# File 'lib/writeexcel/format.rb', line 125

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:



619
620
621
# File 'lib/writeexcel/format.rb', line 619

def diag_border  # :nodoc:
  @diag_border
end

#diag_colorObject

:nodoc:



615
616
617
# File 'lib/writeexcel/format.rb', line 615

def diag_color  # :nodoc:
  @diag_color
end

#diag_typeObject

:nodoc:



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

def diag_type  # :nodoc:
  @diag_type
end

#fg_colorObject

:nodoc:



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

def fg_color  # :nodoc:
  @fg_color
end

#fontObject

:nodoc:



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

def font  # :nodoc:
  @font
end

#font_charsetObject

:nodoc:



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

def font_charset  # :nodoc:
  @font_charset
end

#font_encodingObject

:nodoc:



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

def font_encoding  # :nodoc:
  @font_encoding
end

#font_familyObject

:nodoc:



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

def font_family  # :nodoc:
  @font_family
end

#font_indexObject

:nodoc:



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

def font_index  # :nodoc:
  @font_index
end

#font_index=(val) ⇒ Object

:nodoc:



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

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

#font_onlyObject

:nodoc:



623
624
625
# File 'lib/writeexcel/format.rb', line 623

def font_only  # :nodoc:
  @font_only
end

#font_outlineObject

:nodoc:



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

def font_outline  # :nodoc:
  @font_outline
end

#font_scriptObject

:nodoc:



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

def font_script  # :nodoc:
  @font_script
end

#font_shadowObject

:nodoc:



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

def font_shadow  # :nodoc:
  @font_shadow
end

#font_strikeoutObject

:nodoc:



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

def font_strikeout  # :nodoc:
  @font_strikeout
end

#get_fontObject

get_font()

Generate an Excel BIFF FONT record.



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
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
# File 'lib/writeexcel/format.rb', line 344

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
  ruby_18 do
    if rgch =~ NonAscii
      rgch = utf8_to_16be(rgch)
      encoding = 1
    end
  end
  ruby_19 do
    if rgch.encoding == Encoding::UTF_8
      rgch = utf8_to_16be(rgch)
      encoding = 1
    end
  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  = rgch.unpack('n*').pack('v*')
  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

get_font_key()

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



423
424
425
426
427
428
429
430
431
# File 'lib/writeexcel/format.rb', line 423

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

get_xf($style)

Generate an Excel BIFF XF record.



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
333
334
335
336
# File 'lib/writeexcel/format.rb', line 188

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:



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

def hidden  # :nodoc:
  @hidden
end

#indentObject

:nodoc:



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

def indent  # :nodoc:
  @indent
end

#italicObject

:nodoc:



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

def italic  # :nodoc:
  @italic
end

#leftObject

:nodoc:



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

def left  # :nodoc:
  @left
end

#left_colorObject

:nodoc:



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

def left_color  # :nodoc:
  @left_color
end

#lockedObject

:nodoc:



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

def locked  # :nodoc:
  @locked
end

#num_formatObject

:nodoc:



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

def num_format  # :nodoc:
  @num_format
end

#num_format=(val) ⇒ Object

:nodoc:



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

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

#num_format_encObject

:nodoc:



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

def num_format_enc  # :nodoc:
  @num_format_enc
end

#patternObject

:nodoc:



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

def pattern  # :nodoc:
  @pattern
end

#reading_orderObject

:nodoc:



607
608
609
# File 'lib/writeexcel/format.rb', line 607

def reading_order  # :nodoc:
  @reading_order
end

#rightObject

:nodoc:



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

def right  # :nodoc:
  @right
end

#right_colorObject

:nodoc:



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

def right_color  # :nodoc:
  @right_color
end

#rotationObject

:nodoc:



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

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.



974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
# File 'lib/writeexcel/format.rb', line 974

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.



1558
1559
1560
# File 'lib/writeexcel/format.rb', line 1558

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.



729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
# File 'lib/writeexcel/format.rb', line 729

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.



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

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.



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

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.



1151
1152
1153
# File 'lib/writeexcel/format.rb', line 1151

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.



1208
1209
1210
# File 'lib/writeexcel/format.rb', line 1208

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.



1030
1031
1032
# File 'lib/writeexcel/format.rb', line 1030

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.


692
693
694
# File 'lib/writeexcel/format.rb', line 692

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.



1572
1573
1574
# File 'lib/writeexcel/format.rb', line 1572

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



1331
1332
1333
# File 'lib/writeexcel/format.rb', line 1331

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


826
827
828
829
830
831
832
833
834
835
836
# File 'lib/writeexcel/format.rb', line 826

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


806
807
808
809
810
811
812
813
814
815
816
817
# File 'lib/writeexcel/format.rb', line 806

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


845
846
847
848
849
850
851
852
853
854
855
# File 'lib/writeexcel/format.rb', line 845

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


784
785
786
787
788
789
790
791
792
793
794
# File 'lib/writeexcel/format.rb', line 784

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');


1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
# File 'lib/writeexcel/format.rb', line 1299

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  .


924
925
926
927
928
929
930
931
932
933
934
# File 'lib/writeexcel/format.rb', line 924

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.



1493
1494
1495
# File 'lib/writeexcel/format.rb', line 1493

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


705
706
707
708
709
710
711
712
713
714
# File 'lib/writeexcel/format.rb', line 705

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.



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

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.



1224
1225
1226
# File 'lib/writeexcel/format.rb', line 1224

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.



887
888
889
890
891
892
893
894
895
896
897
# File 'lib/writeexcel/format.rb', line 887

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

set_merge()

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().



1043
1044
1045
# File 'lib/writeexcel/format.rb', line 1043

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.



1473
1474
1475
# File 'lib/writeexcel/format.rb', line 1473

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.



1534
1535
1536
# File 'lib/writeexcel/format.rb', line 1534

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

#set_right(style) ⇒ Object

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



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

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.



1232
1233
1234
# File 'lib/writeexcel/format.rb', line 1232

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.



1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
# File 'lib/writeexcel/format.rb', line 1253

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)


1508
1509
1510
# File 'lib/writeexcel/format.rb', line 1508

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)


666
667
668
669
670
# File 'lib/writeexcel/format.rb', line 666

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.



1519
1520
1521
# File 'lib/writeexcel/format.rb', line 1519

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)


1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
# File 'lib/writeexcel/format.rb', line 1059

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.



1159
1160
1161
# File 'lib/writeexcel/format.rb', line 1159

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.



1216
1217
1218
# File 'lib/writeexcel/format.rb', line 1216

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

#set_type(type = nil) ⇒ Object

set_type()

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



645
646
647
648
649
650
651
652
# File 'lib/writeexcel/format.rb', line 645

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


761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
# File 'lib/writeexcel/format.rb', line 761

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_valign()

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



1004
1005
1006
# File 'lib/writeexcel/format.rb', line 1004

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

#shrinkObject

:nodoc:



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

def shrink  # :nodoc:
  @shrink
end

#sizeObject

:nodoc:



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

def size  # :nodoc:
  @size
end

#text_h_alignObject

:nodoc:



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

def text_h_align  # :nodoc:
  @text_h_align
end

#text_justlastObject

:nodoc:



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

def text_justlast  # :nodoc:
  @text_justlast
end

#text_v_alignObject

:nodoc:



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

def text_v_align  # :nodoc:
  @text_v_align
end

#text_wrapObject

:nodoc:



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

def text_wrap  # :nodoc:
  @text_wrap
end

#topObject

:nodoc:



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

def top  # :nodoc:
  @top
end

#top_colorObject

:nodoc:



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

def top_color  # :nodoc:
  @top_color
end

#typeObject

:nodoc:



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

def type  # :nodoc:
  @type
end

#underlineObject

:nodoc:



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

def underline  # :nodoc:
  @underline
end

#used_mergeObject

:nodoc:



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

def used_merge  # :nodoc:
  @used_merge
end

#used_merge=(val) ⇒ Object

:nodoc:



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

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

#xf_indexObject

xf_index()

Returns the used by Worksheet->_XF()



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

def xf_index  # :nodoc:
  @xf_index
end