caxlsx 4.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/examples/generate.rb +3 -1
- data/lib/axlsx/content_type/abstract_content_type.rb +4 -1
- data/lib/axlsx/content_type/content_type.rb +1 -1
- data/lib/axlsx/content_type/default.rb +4 -1
- data/lib/axlsx/content_type/override.rb +4 -1
- data/lib/axlsx/doc_props/app.rb +91 -24
- data/lib/axlsx/drawing/area_series.rb +8 -2
- data/lib/axlsx/drawing/axis.rb +24 -6
- data/lib/axlsx/drawing/bar_series.rb +12 -3
- data/lib/axlsx/drawing/cat_axis.rb +20 -5
- data/lib/axlsx/drawing/chart.rb +32 -8
- data/lib/axlsx/drawing/d_lbls.rb +4 -4
- data/lib/axlsx/drawing/drawing.rb +1 -0
- data/lib/axlsx/drawing/hyperlink.rb +12 -3
- data/lib/axlsx/drawing/line_series.rb +8 -2
- data/lib/axlsx/drawing/marker.rb +19 -4
- data/lib/axlsx/drawing/one_cell_anchor.rb +8 -2
- data/lib/axlsx/drawing/pic.rb +13 -4
- data/lib/axlsx/drawing/pie_3D_chart.rb +1 -1
- data/lib/axlsx/drawing/pie_chart.rb +36 -0
- data/lib/axlsx/drawing/pie_series.rb +16 -4
- data/lib/axlsx/drawing/scaling.rb +18 -4
- data/lib/axlsx/drawing/ser_axis.rb +8 -2
- data/lib/axlsx/drawing/series.rb +8 -2
- data/lib/axlsx/drawing/view_3D.rb +8 -2
- data/lib/axlsx/package.rb +4 -1
- data/lib/axlsx/rels/relationship.rb +13 -3
- data/lib/axlsx/rels/relationships.rb +1 -1
- data/lib/axlsx/stylesheet/border.rb +12 -3
- data/lib/axlsx/stylesheet/border_pr.rb +14 -3
- data/lib/axlsx/stylesheet/cell_alignment.rb +38 -9
- data/lib/axlsx/stylesheet/cell_protection.rb +9 -2
- data/lib/axlsx/stylesheet/cell_style.rb +29 -6
- data/lib/axlsx/stylesheet/color.rb +8 -2
- data/lib/axlsx/stylesheet/dxf.rb +29 -6
- data/lib/axlsx/stylesheet/fill.rb +4 -1
- data/lib/axlsx/stylesheet/font.rb +58 -12
- data/lib/axlsx/stylesheet/gradient_fill.rb +8 -2
- data/lib/axlsx/stylesheet/gradient_stop.rb +9 -2
- data/lib/axlsx/stylesheet/num_fmt.rb +8 -2
- data/lib/axlsx/stylesheet/pattern_fill.rb +14 -3
- data/lib/axlsx/stylesheet/styles.rb +57 -13
- data/lib/axlsx/stylesheet/table_style.rb +15 -4
- data/lib/axlsx/stylesheet/table_style_element.rb +12 -3
- data/lib/axlsx/stylesheet/table_styles.rb +10 -3
- data/lib/axlsx/stylesheet/xf.rb +68 -15
- data/lib/axlsx/util/accessors.rb +8 -6
- data/lib/axlsx/util/storage.rb +1 -1
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/defined_names.rb +1 -1
- data/lib/axlsx/workbook/workbook.rb +19 -6
- data/lib/axlsx/workbook/workbook_views.rb +1 -1
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +4 -2
- data/lib/axlsx/workbook/worksheet/cell.rb +30 -10
- data/lib/axlsx/workbook/worksheet/cfvo.rb +8 -2
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +1 -1
- data/lib/axlsx/workbook/worksheet/cols.rb +1 -1
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +8 -2
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +69 -14
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +1 -1
- data/lib/axlsx/workbook/worksheet/data_validation.rb +52 -13
- data/lib/axlsx/workbook/worksheet/data_validations.rb +1 -1
- data/lib/axlsx/workbook/worksheet/icon_set.rb +16 -4
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +1 -1
- data/lib/axlsx/workbook/worksheet/page_margins.rb +30 -7
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +1 -2
- data/lib/axlsx/workbook/worksheet/page_setup.rb +30 -7
- data/lib/axlsx/workbook/worksheet/pane.rb +8 -2
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +1 -1
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +1 -1
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +30 -10
- data/lib/axlsx/workbook/worksheet/row.rb +5 -2
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +1 -1
- data/lib/axlsx/workbook/worksheet/selection.rb +8 -2
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +1 -1
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +30 -9
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +1 -1
- data/lib/axlsx/workbook/worksheet/tables.rb +1 -1
- data/lib/axlsx/workbook/worksheet/worksheet.rb +18 -2
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +1 -1
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +1 -1
- metadata +6 -44
@@ -61,10 +61,16 @@ module Axlsx
|
|
61
61
|
attr_reader :numFmtId
|
62
62
|
|
63
63
|
# @see numFmtId
|
64
|
-
def numFmtId=(v)
|
64
|
+
def numFmtId=(v)
|
65
|
+
Axlsx.validate_unsigned_int v
|
66
|
+
@numFmtId = v
|
67
|
+
end
|
65
68
|
|
66
69
|
# @see formatCode
|
67
|
-
def formatCode=(v)
|
70
|
+
def formatCode=(v)
|
71
|
+
Axlsx.validate_string v
|
72
|
+
@formatCode = v
|
73
|
+
end
|
68
74
|
|
69
75
|
# Serializes the object
|
70
76
|
# @param [String] str
|
@@ -49,11 +49,22 @@ module Axlsx
|
|
49
49
|
attr_reader :patternType
|
50
50
|
|
51
51
|
# @see fgColor
|
52
|
-
def fgColor=(v)
|
52
|
+
def fgColor=(v)
|
53
|
+
DataTypeValidator.validate "PatternFill.fgColor", Color, v
|
54
|
+
@fgColor = v
|
55
|
+
end
|
56
|
+
|
53
57
|
# @see bgColor
|
54
|
-
def bgColor=(v)
|
58
|
+
def bgColor=(v)
|
59
|
+
DataTypeValidator.validate "PatternFill.bgColor", Color, v
|
60
|
+
@bgColor = v
|
61
|
+
end
|
62
|
+
|
55
63
|
# @see patternType
|
56
|
-
def patternType=(v)
|
64
|
+
def patternType=(v)
|
65
|
+
Axlsx.validate_pattern_type v
|
66
|
+
@patternType = v
|
67
|
+
end
|
57
68
|
|
58
69
|
# Serializes the object
|
59
70
|
# @param [String] str
|
@@ -336,16 +336,53 @@ module Axlsx
|
|
336
336
|
end
|
337
337
|
|
338
338
|
# parses add_style options for fills. If the options hash contains :type => :dxf we return a Fill object. If not, we return the index of the fill after being added to the fills collection.
|
339
|
-
# @note noop
|
340
|
-
# @option options [String] bg_color The rgb color to apply to the fill
|
339
|
+
# @note noop unless at least one of the documented attributes is specified in options
|
340
|
+
# @option options [String] bg_color The rgb color to apply to the fill. An alias for pattern_bg_color if you need only a solid background
|
341
|
+
# @option options [String] pattern_type The fill pattern to apply to the fill
|
342
|
+
# @option options [String] pattern_bg_color The rgb color to apply to the fill as the first color
|
343
|
+
# @option options [String] pattern_fg_color The rgb color to apply to the fill as the second color
|
341
344
|
# @return [Fill|Integer]
|
342
345
|
def parse_fill_options(options = {})
|
343
|
-
return unless options[:bg_color]
|
346
|
+
return unless options[:bg_color] || options[:pattern_type] || options[:pattern_bg_color] || options[:pattern_fg_color]
|
344
347
|
|
345
|
-
|
348
|
+
pattern_type = options[:pattern_type] || :solid
|
346
349
|
dxf = options[:type] == :dxf
|
347
|
-
|
348
|
-
|
350
|
+
|
351
|
+
pattern_options = {
|
352
|
+
patternType: pattern_type
|
353
|
+
}
|
354
|
+
|
355
|
+
if options[:pattern_bg_color] && options[:bg_color]
|
356
|
+
warn 'Both `bg_color` and `pattern_bg_color` got defined. To get a solid background without defining it in `patter_type`, use only `bg_color`, otherwise use only `pattern_bg_color` to avoid confusion.'
|
357
|
+
end
|
358
|
+
|
359
|
+
bg_color = options[:pattern_bg_color] || options[:bg_color]
|
360
|
+
fg_color = options[:pattern_fg_color]
|
361
|
+
|
362
|
+
# Both bgColor and fgColor happens to configure the background of the cell.
|
363
|
+
# One of them sets the "background" of the cell, while the other one is
|
364
|
+
# responsibe for the "pattern" of the cell. When you pick "solid" pattern for
|
365
|
+
# a normal xf style, then it's a rectangle covering all bgColor with fgColor,
|
366
|
+
# which means we need to to set the given background color to fgColor as well.
|
367
|
+
# For some reason I wasn't able find, it works the opposite for dxf styles
|
368
|
+
# (differential formatting records), so to get the expected color, we need
|
369
|
+
# to put it into bgColor. We only need these cross-assignments when using
|
370
|
+
# "solid" pattern and the user provided only one color to get the least
|
371
|
+
# amount of surprise
|
372
|
+
|
373
|
+
if bg_color
|
374
|
+
pattern_options[:bgColor] = Color.new(rgb: bg_color)
|
375
|
+
elsif pattern_type == :solid && fg_color
|
376
|
+
pattern_options[:bgColor] = Color.new(rgb: fg_color)
|
377
|
+
end
|
378
|
+
|
379
|
+
if fg_color
|
380
|
+
pattern_options[:fgColor] = Color.new(rgb: fg_color)
|
381
|
+
elsif pattern_type == :solid && bg_color
|
382
|
+
pattern_options[:fgColor] = Color.new(rgb: bg_color)
|
383
|
+
end
|
384
|
+
|
385
|
+
pattern = PatternFill.new(pattern_options)
|
349
386
|
fill = Fill.new(pattern)
|
350
387
|
dxf ? fill : fills << fill
|
351
388
|
end
|
@@ -364,7 +401,7 @@ module Axlsx
|
|
364
401
|
# { :border => { :style => :thick, :color => "FFFF0000", :edges => [:top, :bottom] }
|
365
402
|
# @return [Border|Integer]
|
366
403
|
def parse_border_options(options = {})
|
367
|
-
if options[:border].nil? && Border::EDGES.all? { |x| options["border_#{x}"
|
404
|
+
if options[:border].nil? && Border::EDGES.all? { |x| options[:"border_#{x}"].nil? }
|
368
405
|
return nil
|
369
406
|
end
|
370
407
|
|
@@ -409,7 +446,7 @@ module Axlsx
|
|
409
446
|
end
|
410
447
|
|
411
448
|
Border::EDGES.each do |edge|
|
412
|
-
val = options["border_#{edge}"
|
449
|
+
val = options[:"border_#{edge}"]
|
413
450
|
|
414
451
|
if val
|
415
452
|
borders_array << val.merge(edges: [edge])
|
@@ -430,8 +467,8 @@ module Axlsx
|
|
430
467
|
end
|
431
468
|
end
|
432
469
|
|
433
|
-
if options["border_#{edge}"
|
434
|
-
edge_b_opts = edge_b_opts.merge(options["border_#{edge}"
|
470
|
+
if options[:"border_#{edge}"]
|
471
|
+
edge_b_opts = edge_b_opts.merge(options[:"border_#{edge}"])
|
435
472
|
skip_edge = false
|
436
473
|
end
|
437
474
|
|
@@ -472,7 +509,12 @@ module Axlsx
|
|
472
509
|
# If this is a standard xf we pull from numFmts the highest current and increment for num_fmt
|
473
510
|
options[:num_fmt] ||= (@numFmts.map(&:numFmtId).max + 1) if options[:type] != :dxf
|
474
511
|
numFmt = NumFmt.new(numFmtId: options[:num_fmt] || 0, formatCode: options[:format_code].to_s)
|
475
|
-
options[:type] == :dxf
|
512
|
+
if options[:type] == :dxf
|
513
|
+
numFmt
|
514
|
+
else
|
515
|
+
numFmts << numFmt
|
516
|
+
numFmt.numFmtId
|
517
|
+
end
|
476
518
|
else
|
477
519
|
options[:num_fmt]
|
478
520
|
end
|
@@ -534,8 +576,10 @@ module Axlsx
|
|
534
576
|
@cellXfs << Xf.new(borderId: 0, xfId: 0, numFmtId: 14, fontId: 0, fillId: 0, applyNumberFormat: 1)
|
535
577
|
@cellXfs.lock
|
536
578
|
|
537
|
-
@dxfs = SimpleTypedList.new(Dxf, "dxfs")
|
538
|
-
@
|
579
|
+
@dxfs = SimpleTypedList.new(Dxf, "dxfs")
|
580
|
+
@dxfs.lock
|
581
|
+
@tableStyles = TableStyles.new(defaultTableStyle: "TableStyleMedium9", defaultPivotStyle: "PivotStyleLight16")
|
582
|
+
@tableStyles.lock
|
539
583
|
end
|
540
584
|
end
|
541
585
|
end
|
@@ -15,7 +15,7 @@ module Axlsx
|
|
15
15
|
def initialize(name, options = {})
|
16
16
|
self.name = name
|
17
17
|
parse_options options
|
18
|
-
super
|
18
|
+
super(TableStyleElement)
|
19
19
|
end
|
20
20
|
|
21
21
|
serializable_attributes :name, :pivot, :table
|
@@ -33,11 +33,22 @@ module Axlsx
|
|
33
33
|
attr_reader :table
|
34
34
|
|
35
35
|
# @see name
|
36
|
-
def name=(v)
|
36
|
+
def name=(v)
|
37
|
+
Axlsx.validate_string v
|
38
|
+
@name = v
|
39
|
+
end
|
40
|
+
|
37
41
|
# @see pivot
|
38
|
-
def pivot=(v)
|
42
|
+
def pivot=(v)
|
43
|
+
Axlsx.validate_boolean v
|
44
|
+
@pivot = v
|
45
|
+
end
|
46
|
+
|
39
47
|
# @see table
|
40
|
-
def table=(v)
|
48
|
+
def table=(v)
|
49
|
+
Axlsx.validate_boolean v
|
50
|
+
@table = v
|
51
|
+
end
|
41
52
|
|
42
53
|
# Serializes the object
|
43
54
|
# @param [String] str
|
@@ -58,13 +58,22 @@ module Axlsx
|
|
58
58
|
attr_reader :dxfId
|
59
59
|
|
60
60
|
# @see type
|
61
|
-
def type=(v)
|
61
|
+
def type=(v)
|
62
|
+
Axlsx.validate_table_element_type v
|
63
|
+
@type = v
|
64
|
+
end
|
62
65
|
|
63
66
|
# @see size
|
64
|
-
def size=(v)
|
67
|
+
def size=(v)
|
68
|
+
Axlsx.validate_unsigned_int v
|
69
|
+
@size = v
|
70
|
+
end
|
65
71
|
|
66
72
|
# @see dxfId
|
67
|
-
def dxfId=(v)
|
73
|
+
def dxfId=(v)
|
74
|
+
Axlsx.validate_unsigned_int v
|
75
|
+
@dxfId = v
|
76
|
+
end
|
68
77
|
|
69
78
|
# Serializes the object
|
70
79
|
# @param [String] str
|
@@ -12,7 +12,7 @@ module Axlsx
|
|
12
12
|
def initialize(options = {})
|
13
13
|
@defaultTableStyle = options[:defaultTableStyle] || "TableStyleMedium9"
|
14
14
|
@defaultPivotStyle = options[:defaultPivotStyle] || "PivotStyleLight16"
|
15
|
-
super
|
15
|
+
super(TableStyle)
|
16
16
|
end
|
17
17
|
|
18
18
|
serializable_attributes :defaultTableStyle, :defaultPivotStyle
|
@@ -26,9 +26,16 @@ module Axlsx
|
|
26
26
|
attr_reader :defaultPivotStyle
|
27
27
|
|
28
28
|
# @see defaultTableStyle
|
29
|
-
def defaultTableStyle=(v)
|
29
|
+
def defaultTableStyle=(v)
|
30
|
+
Axlsx.validate_string(v)
|
31
|
+
@defaultTableStyle = v
|
32
|
+
end
|
33
|
+
|
30
34
|
# @see defaultPivotStyle
|
31
|
-
def defaultPivotStyle=(v)
|
35
|
+
def defaultPivotStyle=(v)
|
36
|
+
Axlsx.validate_string(v)
|
37
|
+
@defaultPivotStyle = v
|
38
|
+
end
|
32
39
|
|
33
40
|
# Serializes the object
|
34
41
|
# @param [String] str
|
data/lib/axlsx/stylesheet/xf.rb
CHANGED
@@ -95,41 +95,94 @@ module Axlsx
|
|
95
95
|
attr_reader :applyProtection
|
96
96
|
|
97
97
|
# @see Xf#alignment
|
98
|
-
def alignment=(v)
|
98
|
+
def alignment=(v)
|
99
|
+
DataTypeValidator.validate "Xf.alignment", CellAlignment, v
|
100
|
+
@alignment = v
|
101
|
+
end
|
99
102
|
|
100
103
|
# @see protection
|
101
|
-
def protection=(v)
|
104
|
+
def protection=(v)
|
105
|
+
DataTypeValidator.validate "Xf.protection", CellProtection, v
|
106
|
+
@protection = v
|
107
|
+
end
|
102
108
|
|
103
109
|
# @see numFmtId
|
104
|
-
def numFmtId=(v)
|
110
|
+
def numFmtId=(v)
|
111
|
+
Axlsx.validate_unsigned_int v
|
112
|
+
@numFmtId = v
|
113
|
+
end
|
105
114
|
|
106
115
|
# @see fontId
|
107
|
-
def fontId=(v)
|
116
|
+
def fontId=(v)
|
117
|
+
Axlsx.validate_unsigned_int v
|
118
|
+
@fontId = v
|
119
|
+
end
|
120
|
+
|
108
121
|
# @see fillId
|
109
|
-
def fillId=(v)
|
122
|
+
def fillId=(v)
|
123
|
+
Axlsx.validate_unsigned_int v
|
124
|
+
@fillId = v
|
125
|
+
end
|
126
|
+
|
110
127
|
# @see borderId
|
111
|
-
def borderId=(v)
|
128
|
+
def borderId=(v)
|
129
|
+
Axlsx.validate_unsigned_int v
|
130
|
+
@borderId = v
|
131
|
+
end
|
132
|
+
|
112
133
|
# @see xfId
|
113
|
-
def xfId=(v)
|
134
|
+
def xfId=(v)
|
135
|
+
Axlsx.validate_unsigned_int v
|
136
|
+
@xfId = v
|
137
|
+
end
|
138
|
+
|
114
139
|
# @see quotePrefix
|
115
|
-
def quotePrefix=(v)
|
140
|
+
def quotePrefix=(v)
|
141
|
+
Axlsx.validate_boolean v
|
142
|
+
@quotePrefix = v
|
143
|
+
end
|
144
|
+
|
116
145
|
# @see pivotButton
|
117
|
-
def pivotButton=(v)
|
146
|
+
def pivotButton=(v)
|
147
|
+
Axlsx.validate_boolean v
|
148
|
+
@pivotButton = v
|
149
|
+
end
|
150
|
+
|
118
151
|
# @see applyNumberFormat
|
119
|
-
def applyNumberFormat=(v)
|
152
|
+
def applyNumberFormat=(v)
|
153
|
+
Axlsx.validate_boolean v
|
154
|
+
@applyNumberFormat = v
|
155
|
+
end
|
156
|
+
|
120
157
|
# @see applyFont
|
121
|
-
def applyFont=(v)
|
158
|
+
def applyFont=(v)
|
159
|
+
Axlsx.validate_boolean v
|
160
|
+
@applyFont = v
|
161
|
+
end
|
162
|
+
|
122
163
|
# @see applyFill
|
123
|
-
def applyFill=(v)
|
164
|
+
def applyFill=(v)
|
165
|
+
Axlsx.validate_boolean v
|
166
|
+
@applyFill = v
|
167
|
+
end
|
124
168
|
|
125
169
|
# @see applyBorder
|
126
|
-
def applyBorder=(v)
|
170
|
+
def applyBorder=(v)
|
171
|
+
Axlsx.validate_boolean v
|
172
|
+
@applyBorder = v
|
173
|
+
end
|
127
174
|
|
128
175
|
# @see applyAlignment
|
129
|
-
def applyAlignment=(v)
|
176
|
+
def applyAlignment=(v)
|
177
|
+
Axlsx.validate_boolean v
|
178
|
+
@applyAlignment = v
|
179
|
+
end
|
130
180
|
|
131
181
|
# @see applyProtection
|
132
|
-
def applyProtection=(v)
|
182
|
+
def applyProtection=(v)
|
183
|
+
Axlsx.validate_boolean v
|
184
|
+
@applyProtection = v
|
185
|
+
end
|
133
186
|
|
134
187
|
# Serializes the object
|
135
188
|
# @param [String] str
|
data/lib/axlsx/util/accessors.rb
CHANGED
@@ -44,19 +44,21 @@ module Axlsx
|
|
44
44
|
validated_attr_accessor(symbols, :validate_boolean)
|
45
45
|
end
|
46
46
|
|
47
|
-
# Template for defining validated write accessors
|
48
|
-
SETTER = "def %s=(value) Axlsx::%s(value); @%s = value; end"
|
49
|
-
|
50
47
|
# Creates the reader and writer access methods
|
51
|
-
# @param [Array] symbols The names of the attributes to create
|
52
|
-
# @param [String] validator The axlsx validation method to use when
|
48
|
+
# @param [Array<Symbol, String>] symbols The names of the attributes to create
|
49
|
+
# @param [Symbol|String] validator The axlsx validation method to use when
|
53
50
|
# validating assignation.
|
54
51
|
# @see lib/axlsx/util/validators.rb
|
55
52
|
def validated_attr_accessor(symbols, validator)
|
56
53
|
symbols.each do |symbol|
|
57
54
|
attr_reader symbol
|
58
55
|
|
59
|
-
module_eval
|
56
|
+
module_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
|
57
|
+
def #{symbol}=(value) # def name=(value)
|
58
|
+
Axlsx.#{validator} value # Axlsx.validate_string value
|
59
|
+
@#{symbol} = value # @name = value
|
60
|
+
end # end
|
61
|
+
RUBY_EVAL
|
60
62
|
end
|
61
63
|
end
|
62
64
|
end
|
data/lib/axlsx/util/storage.rb
CHANGED
@@ -133,7 +133,7 @@ module Axlsx
|
|
133
133
|
@left = @right = @child = -1
|
134
134
|
@sector = @size = @created = @modified = 0
|
135
135
|
options.each do |o|
|
136
|
-
send("#{o[0]}=", o[1]) if respond_to? "#{o[0]}="
|
136
|
+
send(:"#{o[0]}=", o[1]) if respond_to? :"#{o[0]}="
|
137
137
|
end
|
138
138
|
@color ||= COLORS[:black]
|
139
139
|
@type ||= (data.nil? ? TYPES[:storage] : TYPES[:stream])
|
data/lib/axlsx/version.rb
CHANGED
@@ -249,18 +249,28 @@ module Axlsx
|
|
249
249
|
|
250
250
|
# Instance level access to the class variable 1904
|
251
251
|
# @return [Boolean]
|
252
|
-
def date1904
|
252
|
+
def date1904
|
253
|
+
@@date1904
|
254
|
+
end
|
253
255
|
|
254
256
|
# see @date1904
|
255
|
-
def date1904=(v)
|
257
|
+
def date1904=(v)
|
258
|
+
Axlsx.validate_boolean v
|
259
|
+
@@date1904 = v
|
260
|
+
end
|
256
261
|
|
257
262
|
# Sets the date1904 attribute to the provided boolean
|
258
263
|
# @return [Boolean]
|
259
|
-
def self.date1904=(v)
|
264
|
+
def self.date1904=(v)
|
265
|
+
Axlsx.validate_boolean v
|
266
|
+
@@date1904 = v
|
267
|
+
end
|
260
268
|
|
261
269
|
# retrieves the date1904 attribute
|
262
270
|
# @return [Boolean]
|
263
|
-
def self.date1904
|
271
|
+
def self.date1904
|
272
|
+
@@date1904
|
273
|
+
end
|
264
274
|
|
265
275
|
# Whether to treat values starting with an equals sign as formulas or as literal strings.
|
266
276
|
# Allowing user-generated data to be interpreted as formulas is a security risk.
|
@@ -280,10 +290,13 @@ module Axlsx
|
|
280
290
|
# calculation. Thus the performance benefits of turning this off are
|
281
291
|
# marginal unless you are creating a very large sheet.
|
282
292
|
# @return [Boolean]
|
283
|
-
|
293
|
+
attr_reader :use_autowidth
|
284
294
|
|
285
295
|
# see @use_autowidth
|
286
|
-
def use_autowidth=(v = true)
|
296
|
+
def use_autowidth=(v = true)
|
297
|
+
Axlsx.validate_boolean v
|
298
|
+
@use_autowidth = v
|
299
|
+
end
|
287
300
|
|
288
301
|
# Font size of bold fonts is multiplied with this
|
289
302
|
# Used for automatic calculation of cell widths with bold text
|
@@ -43,7 +43,9 @@ module Axlsx
|
|
43
43
|
# the filter button can be hidden, and not drawn.
|
44
44
|
# @return [Boolean]
|
45
45
|
def show_button
|
46
|
-
@show_button
|
46
|
+
return @show_button if defined?(@show_button)
|
47
|
+
|
48
|
+
true
|
47
49
|
end
|
48
50
|
|
49
51
|
# Flag indicating whether the AutoFilter button for this column is hidden.
|
@@ -83,7 +85,7 @@ module Axlsx
|
|
83
85
|
# @return [Boolean]
|
84
86
|
def show_button=(show)
|
85
87
|
Axlsx.validate_boolean show
|
86
|
-
@
|
88
|
+
@show_button = show
|
87
89
|
end
|
88
90
|
|
89
91
|
# Serialize the object to xml
|
@@ -189,7 +189,9 @@ module Axlsx
|
|
189
189
|
attr_reader :font_name
|
190
190
|
|
191
191
|
# @see font_name
|
192
|
-
def font_name=(v)
|
192
|
+
def font_name=(v)
|
193
|
+
set_run_style :validate_string, :font_name, v
|
194
|
+
end
|
193
195
|
|
194
196
|
# The inline charset property for the cell
|
195
197
|
# As far as I can tell, this is pretty much ignored. However, based on the spec it should be one of the following:
|
@@ -216,7 +218,9 @@ module Axlsx
|
|
216
218
|
attr_reader :charset
|
217
219
|
|
218
220
|
# @see charset
|
219
|
-
def charset=(v)
|
221
|
+
def charset=(v)
|
222
|
+
set_run_style :validate_unsigned_int, :charset, v
|
223
|
+
end
|
220
224
|
|
221
225
|
# The inline family property for the cell
|
222
226
|
# @return [Integer]
|
@@ -237,49 +241,63 @@ module Axlsx
|
|
237
241
|
attr_reader :b
|
238
242
|
|
239
243
|
# @see b
|
240
|
-
def b=(v)
|
244
|
+
def b=(v)
|
245
|
+
set_run_style :validate_boolean, :b, v
|
246
|
+
end
|
241
247
|
|
242
248
|
# The inline italic property for the cell
|
243
249
|
# @return [Boolean]
|
244
250
|
attr_reader :i
|
245
251
|
|
246
252
|
# @see i
|
247
|
-
def i=(v)
|
253
|
+
def i=(v)
|
254
|
+
set_run_style :validate_boolean, :i, v
|
255
|
+
end
|
248
256
|
|
249
257
|
# The inline strike property for the cell
|
250
258
|
# @return [Boolean]
|
251
259
|
attr_reader :strike
|
252
260
|
|
253
261
|
# @see strike
|
254
|
-
def strike=(v)
|
262
|
+
def strike=(v)
|
263
|
+
set_run_style :validate_boolean, :strike, v
|
264
|
+
end
|
255
265
|
|
256
266
|
# The inline outline property for the cell
|
257
267
|
# @return [Boolean]
|
258
268
|
attr_reader :outline
|
259
269
|
|
260
270
|
# @see outline
|
261
|
-
def outline=(v)
|
271
|
+
def outline=(v)
|
272
|
+
set_run_style :validate_boolean, :outline, v
|
273
|
+
end
|
262
274
|
|
263
275
|
# The inline shadow property for the cell
|
264
276
|
# @return [Boolean]
|
265
277
|
attr_reader :shadow
|
266
278
|
|
267
279
|
# @see shadow
|
268
|
-
def shadow=(v)
|
280
|
+
def shadow=(v)
|
281
|
+
set_run_style :validate_boolean, :shadow, v
|
282
|
+
end
|
269
283
|
|
270
284
|
# The inline condense property for the cell
|
271
285
|
# @return [Boolean]
|
272
286
|
attr_reader :condense
|
273
287
|
|
274
288
|
# @see condense
|
275
|
-
def condense=(v)
|
289
|
+
def condense=(v)
|
290
|
+
set_run_style :validate_boolean, :condense, v
|
291
|
+
end
|
276
292
|
|
277
293
|
# The inline extend property for the cell
|
278
294
|
# @return [Boolean]
|
279
295
|
attr_reader :extend
|
280
296
|
|
281
297
|
# @see extend
|
282
|
-
def extend=(v)
|
298
|
+
def extend=(v)
|
299
|
+
set_run_style :validate_boolean, :extend, v
|
300
|
+
end
|
283
301
|
|
284
302
|
# The inline underline property for the cell.
|
285
303
|
# It must be one of :none, :single, :double, :singleAccounting, :doubleAccounting
|
@@ -307,7 +325,9 @@ module Axlsx
|
|
307
325
|
attr_reader :sz
|
308
326
|
|
309
327
|
# @see sz
|
310
|
-
def sz=(v)
|
328
|
+
def sz=(v)
|
329
|
+
set_run_style :validate_unsigned_int, :sz, v
|
330
|
+
end
|
311
331
|
|
312
332
|
# The inline vertical alignment property for the cell
|
313
333
|
# this must be one of [:baseline, :subscript, :superscript]
|
@@ -40,10 +40,16 @@ module Axlsx
|
|
40
40
|
attr_reader :val
|
41
41
|
|
42
42
|
# @see type
|
43
|
-
def type=(v)
|
43
|
+
def type=(v)
|
44
|
+
Axlsx.validate_conditional_formatting_value_object_type(v)
|
45
|
+
@type = v
|
46
|
+
end
|
44
47
|
|
45
48
|
# @see gte
|
46
|
-
def gte=(v)
|
49
|
+
def gte=(v)
|
50
|
+
Axlsx.validate_boolean(v)
|
51
|
+
@gte = v
|
52
|
+
end
|
47
53
|
|
48
54
|
# @see val
|
49
55
|
def val=(v)
|
@@ -61,9 +61,15 @@ module Axlsx
|
|
61
61
|
end
|
62
62
|
|
63
63
|
# @see rules
|
64
|
-
def rules=(v)
|
64
|
+
def rules=(v)
|
65
|
+
@rules = v
|
66
|
+
end
|
67
|
+
|
65
68
|
# @see sqref
|
66
|
-
def sqref=(v)
|
69
|
+
def sqref=(v)
|
70
|
+
Axlsx.validate_string(v)
|
71
|
+
@sqref = v
|
72
|
+
end
|
67
73
|
|
68
74
|
# Serializes the conditional formatting element
|
69
75
|
# @example Conditional Formatting XML looks like:
|