caxlsx 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|