caxlsx 4.0.0 → 4.2.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 +29 -12
- data/README.md +1 -1
- data/examples/generate.rb +3 -1
- data/lib/axlsx/content_type/abstract_content_type.rb +6 -3
- data/lib/axlsx/content_type/content_type.rb +4 -4
- 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_chart.rb +3 -3
- data/lib/axlsx/drawing/area_series.rb +10 -4
- data/lib/axlsx/drawing/ax_data_source.rb +1 -1
- data/lib/axlsx/drawing/axes.rb +1 -1
- data/lib/axlsx/drawing/axis.rb +25 -7
- data/lib/axlsx/drawing/bar_3D_chart.rb +3 -3
- data/lib/axlsx/drawing/bar_chart.rb +3 -3
- data/lib/axlsx/drawing/bar_series.rb +14 -5
- data/lib/axlsx/drawing/bubble_chart.rb +2 -2
- data/lib/axlsx/drawing/bubble_series.rb +2 -2
- data/lib/axlsx/drawing/cat_axis.rb +23 -8
- data/lib/axlsx/drawing/chart.rb +32 -8
- data/lib/axlsx/drawing/d_lbls.rb +8 -8
- data/lib/axlsx/drawing/drawing.rb +50 -49
- data/lib/axlsx/drawing/hyperlink.rb +13 -4
- data/lib/axlsx/drawing/line_3D_chart.rb +3 -3
- data/lib/axlsx/drawing/line_chart.rb +3 -3
- data/lib/axlsx/drawing/line_series.rb +10 -4
- data/lib/axlsx/drawing/marker.rb +19 -4
- data/lib/axlsx/drawing/num_val.rb +1 -1
- data/lib/axlsx/drawing/one_cell_anchor.rb +8 -2
- data/lib/axlsx/drawing/pic.rb +17 -8
- data/lib/axlsx/drawing/pie_3D_chart.rb +3 -3
- data/lib/axlsx/drawing/pie_chart.rb +36 -0
- data/lib/axlsx/drawing/pie_series.rb +18 -6
- data/lib/axlsx/drawing/scaling.rb +18 -4
- data/lib/axlsx/drawing/scatter_chart.rb +2 -2
- data/lib/axlsx/drawing/scatter_series.rb +2 -2
- data/lib/axlsx/drawing/ser_axis.rb +11 -5
- data/lib/axlsx/drawing/series.rb +8 -2
- data/lib/axlsx/drawing/two_cell_anchor.rb +1 -1
- data/lib/axlsx/drawing/val_axis.rb +2 -2
- data/lib/axlsx/drawing/view_3D.rb +8 -2
- data/lib/axlsx/package.rb +11 -11
- data/lib/axlsx/rels/relationship.rb +15 -5
- data/lib/axlsx/rels/relationships.rb +3 -3
- data/lib/axlsx/stylesheet/border.rb +12 -3
- data/lib/axlsx/stylesheet/border_pr.rb +15 -4
- data/lib/axlsx/stylesheet/cell_alignment.rb +39 -10
- data/lib/axlsx/stylesheet/cell_protection.rb +9 -2
- data/lib/axlsx/stylesheet/cell_style.rb +30 -7
- data/lib/axlsx/stylesheet/color.rb +10 -4
- data/lib/axlsx/stylesheet/dxf.rb +29 -6
- data/lib/axlsx/stylesheet/fill.rb +4 -1
- data/lib/axlsx/stylesheet/font.rb +59 -13
- data/lib/axlsx/stylesheet/gradient_fill.rb +9 -3
- 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 +83 -43
- 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 +69 -16
- data/lib/axlsx/util/accessors.rb +9 -7
- data/lib/axlsx/util/constants.rb +2 -2
- data/lib/axlsx/util/serialized_attributes.rb +2 -2
- data/lib/axlsx/util/simple_typed_list.rb +25 -12
- data/lib/axlsx/util/storage.rb +4 -4
- data/lib/axlsx/util/validators.rb +1 -1
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/defined_name.rb +1 -1
- data/lib/axlsx/workbook/defined_names.rb +1 -1
- data/lib/axlsx/workbook/shared_strings_table.rb +3 -3
- data/lib/axlsx/workbook/workbook.rb +80 -67
- data/lib/axlsx/workbook/workbook_views.rb +1 -1
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +4 -4
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +5 -3
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +3 -3
- data/lib/axlsx/workbook/worksheet/auto_filter/sort_condition.rb +1 -1
- data/lib/axlsx/workbook/worksheet/auto_filter/sort_state.rb +2 -2
- data/lib/axlsx/workbook/worksheet/border_creator.rb +4 -4
- data/lib/axlsx/workbook/worksheet/cell.rb +37 -17
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +1 -1
- data/lib/axlsx/workbook/worksheet/cfvo.rb +8 -2
- data/lib/axlsx/workbook/worksheet/col.rb +22 -9
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +1 -1
- data/lib/axlsx/workbook/worksheet/cols.rb +1 -1
- data/lib/axlsx/workbook/worksheet/comment.rb +2 -2
- data/lib/axlsx/workbook/worksheet/comments.rb +1 -1
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +9 -3
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +70 -15
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +3 -3
- data/lib/axlsx/workbook/worksheet/data_validation.rb +53 -14
- data/lib/axlsx/workbook/worksheet/data_validations.rb +3 -3
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +2 -2
- data/lib/axlsx/workbook/worksheet/dimension.rb +1 -1
- data/lib/axlsx/workbook/worksheet/icon_set.rb +17 -5
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +1 -1
- data/lib/axlsx/workbook/worksheet/outline_pr.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 +32 -9
- data/lib/axlsx/workbook/worksheet/pane.rb +8 -2
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +29 -5
- 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 +31 -11
- 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_pr.rb +1 -1
- 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 +2 -2
- data/lib/axlsx/workbook/worksheet/tables.rb +1 -1
- data/lib/axlsx/workbook/worksheet/worksheet.rb +28 -14
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +3 -3
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +2 -2
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +2 -2
- data/lib/axlsx.rb +44 -30
- data/lib/caxlsx.rb +1 -1
- metadata +10 -48
data/lib/axlsx/stylesheet/xf.rb
CHANGED
|
@@ -62,7 +62,7 @@ module Axlsx
|
|
|
62
62
|
# @return [Integer]
|
|
63
63
|
attr_reader :xfId
|
|
64
64
|
|
|
65
|
-
#
|
|
65
|
+
# indicates if text should be prefixed by a single quote in the cell
|
|
66
66
|
# @return [Boolean]
|
|
67
67
|
attr_reader :quotePrefix
|
|
68
68
|
|
|
@@ -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
|
@@ -23,7 +23,7 @@ module Axlsx
|
|
|
23
23
|
validated_attr_accessor(symbols, :validate_string)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
# Creates one or more
|
|
26
|
+
# Creates one or more unsigned integer attr_accessors
|
|
27
27
|
# @param [Array] symbols An array of symbols representing the
|
|
28
28
|
# names of the attributes you will add to your class
|
|
29
29
|
def unsigned_int_attr_accessor(*symbols)
|
|
@@ -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/constants.rb
CHANGED
|
@@ -259,7 +259,7 @@ module Axlsx
|
|
|
259
259
|
# drawing validation schema
|
|
260
260
|
DRAWING_XSD = "#{SCHEMA_BASE}dml-spreadsheetDrawing.xsd"
|
|
261
261
|
|
|
262
|
-
# number format id for
|
|
262
|
+
# number format id for percentage formatting using the default formatting id.
|
|
263
263
|
NUM_FMT_PERCENT = 9
|
|
264
264
|
|
|
265
265
|
# number format id for date format like 2011/11/13
|
|
@@ -404,7 +404,7 @@ module Axlsx
|
|
|
404
404
|
CONTROL_CHARS = pattern.freeze
|
|
405
405
|
|
|
406
406
|
# ISO 8601 date recognition
|
|
407
|
-
ISO_8601_REGEX = /\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)
|
|
407
|
+
ISO_8601_REGEX = /\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?\Z/.freeze
|
|
408
408
|
|
|
409
409
|
# FLOAT recognition
|
|
410
410
|
SAFE_FLOAT_REGEX = /\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]{1,2})?\Z/.freeze
|
|
@@ -91,8 +91,8 @@ module Axlsx
|
|
|
91
91
|
|
|
92
92
|
# serialized instance values at text nodes on a camelized element of the
|
|
93
93
|
# attribute name. You may pass in a block for evaluation against non nil
|
|
94
|
-
# values. We use an array for element attributes
|
|
95
|
-
# break the xml
|
|
94
|
+
# values. We use an array for element attributes because misordering will
|
|
95
|
+
# break the xml.
|
|
96
96
|
# @param [String] str The string instance to which serialized data is appended
|
|
97
97
|
# @param [Array] additional_attributes An array of additional attribute names.
|
|
98
98
|
# @return [String] The serialized output.
|
|
@@ -21,7 +21,7 @@ module Axlsx
|
|
|
21
21
|
alias :== :equal?
|
|
22
22
|
alias :eql? :equal?
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# Creates a new typed list
|
|
25
25
|
# @param [Array, Class] type An array of Class objects or a single Class object
|
|
26
26
|
# @param [String] serialize_as The tag name to use in serialization
|
|
27
27
|
# @raise [ArgumentError] if all members of type are not Class objects
|
|
@@ -57,7 +57,7 @@ module Axlsx
|
|
|
57
57
|
# Transposes the list (without blowing up like ruby does)
|
|
58
58
|
# any non populated cell in the matrix will be a nil value
|
|
59
59
|
def transpose
|
|
60
|
-
return clone if size
|
|
60
|
+
return clone if size == 0
|
|
61
61
|
|
|
62
62
|
row_count = size
|
|
63
63
|
max_column_count = map { |row| row.cells.size }.max
|
|
@@ -90,21 +90,24 @@ module Axlsx
|
|
|
90
90
|
self
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
-
#
|
|
94
|
-
# @param [Array]
|
|
93
|
+
# Appends the elements of +others+ to self.
|
|
94
|
+
# @param [Array<Array>] others one or more arrays to join
|
|
95
95
|
# @raise [ArgumentError] if any of the values being joined are not
|
|
96
96
|
# one of the allowed types
|
|
97
97
|
# @return [SimpleTypedList]
|
|
98
|
-
def
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
def concat(*others)
|
|
99
|
+
others.each do |other|
|
|
100
|
+
other.each do |item|
|
|
101
|
+
self << item
|
|
102
|
+
end
|
|
101
103
|
end
|
|
102
|
-
|
|
104
|
+
self
|
|
103
105
|
end
|
|
104
106
|
|
|
105
|
-
#
|
|
107
|
+
# Pushes the given object on to the end of this array and returns the index
|
|
108
|
+
# of the item added.
|
|
106
109
|
# @param [Any] v the data to be added
|
|
107
|
-
# @raise [ArgumentError] if the value being added is not one
|
|
110
|
+
# @raise [ArgumentError] if the value being added is not one of the allowed types
|
|
108
111
|
# @return [Integer] returns the index of the item added.
|
|
109
112
|
def <<(v)
|
|
110
113
|
DataTypeValidator.validate :SimpleTypedList_push, @allowed_types, v
|
|
@@ -112,7 +115,17 @@ module Axlsx
|
|
|
112
115
|
size - 1
|
|
113
116
|
end
|
|
114
117
|
|
|
115
|
-
|
|
118
|
+
# Pushes the given object(s) on to the end of this array. This expression
|
|
119
|
+
# returns the array itself, so several appends may be chained together.
|
|
120
|
+
# @param [Any] values the data to be added
|
|
121
|
+
# @raise [ArgumentError] if any of the values being joined are not
|
|
122
|
+
# @return [SimpleTypedList]
|
|
123
|
+
def push(*values)
|
|
124
|
+
values.each do |value|
|
|
125
|
+
self << value
|
|
126
|
+
end
|
|
127
|
+
self
|
|
128
|
+
end
|
|
116
129
|
|
|
117
130
|
# delete the item from the list
|
|
118
131
|
# @param [Any] v The item to be deleted.
|
|
@@ -147,7 +160,7 @@ module Axlsx
|
|
|
147
160
|
super
|
|
148
161
|
end
|
|
149
162
|
|
|
150
|
-
# inserts an item at the index
|
|
163
|
+
# inserts an item at the index specified
|
|
151
164
|
# @param [Integer] index
|
|
152
165
|
# @param [Any] v
|
|
153
166
|
# @raise [ArgumentError] if the index is protected by locking
|
data/lib/axlsx/util/storage.rb
CHANGED
|
@@ -85,16 +85,16 @@ module Axlsx
|
|
|
85
85
|
# @return [Integer] sector
|
|
86
86
|
attr_accessor :sector
|
|
87
87
|
|
|
88
|
-
# The 0 based index in the
|
|
88
|
+
# The 0 based index in the directories chain for this the left sibling of this storage.
|
|
89
89
|
|
|
90
90
|
# @return [Integer] left
|
|
91
91
|
attr_accessor :left
|
|
92
92
|
|
|
93
|
-
# The 0 based index in the
|
|
93
|
+
# The 0 based index in the directories chain for this the right sibling of this storage.
|
|
94
94
|
# @return [Integer] right
|
|
95
95
|
attr_accessor :right
|
|
96
96
|
|
|
97
|
-
# The 0 based index in the
|
|
97
|
+
# The 0 based index in the directories chain for the child of this storage.
|
|
98
98
|
# @return [Integer] child
|
|
99
99
|
attr_accessor :child
|
|
100
100
|
|
|
@@ -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])
|
|
@@ -81,7 +81,7 @@ module Axlsx
|
|
|
81
81
|
raise ArgumentError, format(ERR_ANGLE, v.inspect) unless v.to_i >= -5400000 && v.to_i <= 5400000
|
|
82
82
|
end
|
|
83
83
|
|
|
84
|
-
# Validates an unsigned
|
|
84
|
+
# Validates an unsigned integer
|
|
85
85
|
UINT_VALIDATOR = ->(arg) { arg.respond_to?(:>=) && arg >= 0 }
|
|
86
86
|
|
|
87
87
|
# Requires that the value is a Integer and is greater or equal to 0
|
data/lib/axlsx/version.rb
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
# <xsd:attribute name="shortcutKey" type="s:ST_Xstring" use="optional"/>
|
|
23
23
|
# <xsd:attribute name="publishToServer" type="xsd:boolean" use="optional" default="false"/>
|
|
24
24
|
# <xsd:attribute name="workbookParameter" type="xsd:boolean" use="optional" default="false"/>
|
|
25
|
-
# </xsd:
|
|
25
|
+
# </xsd:extension>
|
|
26
26
|
# </xsd:simpleContent>
|
|
27
27
|
|
|
28
28
|
module Axlsx
|
|
@@ -7,7 +7,7 @@ module Axlsx
|
|
|
7
7
|
# As a developer, you should never need to directly work against this class. Simply set 'use_shared_strings'
|
|
8
8
|
# on the package or workbook to generate a package that uses the shared strings table instead of inline strings.
|
|
9
9
|
# @note Serialization performance is affected by using this serialization method so if you do not need interoperability
|
|
10
|
-
# it is
|
|
10
|
+
# it is recommended that you use the default inline string method of serialization.
|
|
11
11
|
class SharedStringsTable
|
|
12
12
|
# The total number of strings in the workbook including duplicates
|
|
13
13
|
# Empty cells are treated as blank strings
|
|
@@ -29,7 +29,7 @@ module Axlsx
|
|
|
29
29
|
# @see Workbook#xml_space
|
|
30
30
|
attr_reader :xml_space
|
|
31
31
|
|
|
32
|
-
# Creates a new Shared Strings Table
|
|
32
|
+
# Creates a new Shared Strings Table against an array of cells
|
|
33
33
|
# @param [Array] cells This is an array of all of the cells in the workbook
|
|
34
34
|
# @param [Symbol] xml_space The xml:space behavior for the shared string table.
|
|
35
35
|
def initialize(cells, xml_space = :preserve)
|
|
@@ -54,7 +54,7 @@ module Axlsx
|
|
|
54
54
|
|
|
55
55
|
private
|
|
56
56
|
|
|
57
|
-
#
|
|
57
|
+
# Iterate over all of the cells in the array.
|
|
58
58
|
# if our unique cells array does not contain a sharable cell,
|
|
59
59
|
# add the cell to our unique cells array and set the ssti attribute on the index of this cell in the shared strings table
|
|
60
60
|
# if a sharable cell already exists in our unique_cells array, set the ssti attribute of the cell and move on.
|
|
@@ -1,67 +1,67 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Axlsx
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
4
|
+
require_relative 'worksheet/sheet_calc_pr'
|
|
5
|
+
require_relative 'worksheet/auto_filter/auto_filter'
|
|
6
|
+
require_relative 'worksheet/date_time_converter'
|
|
7
|
+
require_relative 'worksheet/protected_range'
|
|
8
|
+
require_relative 'worksheet/protected_ranges'
|
|
9
|
+
require_relative 'worksheet/rich_text_run'
|
|
10
|
+
require_relative 'worksheet/rich_text'
|
|
11
|
+
require_relative 'worksheet/cell_serializer'
|
|
12
|
+
require_relative 'worksheet/cell'
|
|
13
|
+
require_relative 'worksheet/page_margins'
|
|
14
|
+
require_relative 'worksheet/page_set_up_pr'
|
|
15
|
+
require_relative 'worksheet/outline_pr'
|
|
16
|
+
require_relative 'worksheet/page_setup'
|
|
17
|
+
require_relative 'worksheet/header_footer'
|
|
18
|
+
require_relative 'worksheet/print_options'
|
|
19
|
+
require_relative 'worksheet/cfvo'
|
|
20
|
+
require_relative 'worksheet/cfvos'
|
|
21
|
+
require_relative 'worksheet/color_scale'
|
|
22
|
+
require_relative 'worksheet/data_bar'
|
|
23
|
+
require_relative 'worksheet/icon_set'
|
|
24
|
+
require_relative 'worksheet/conditional_formatting'
|
|
25
|
+
require_relative 'worksheet/conditional_formatting_rule'
|
|
26
|
+
require_relative 'worksheet/conditional_formattings'
|
|
27
|
+
require_relative 'worksheet/row'
|
|
28
|
+
require_relative 'worksheet/col'
|
|
29
|
+
require_relative 'worksheet/cols'
|
|
30
|
+
require_relative 'worksheet/comments'
|
|
31
|
+
require_relative 'worksheet/comment'
|
|
32
|
+
require_relative 'worksheet/merged_cells'
|
|
33
|
+
require_relative 'worksheet/sheet_protection'
|
|
34
|
+
require_relative 'worksheet/sheet_pr'
|
|
35
|
+
require_relative 'worksheet/dimension'
|
|
36
|
+
require_relative 'worksheet/sheet_data'
|
|
37
|
+
require_relative 'worksheet/worksheet_drawing'
|
|
38
|
+
require_relative 'worksheet/worksheet_comments'
|
|
39
|
+
require_relative 'worksheet/worksheet_hyperlink'
|
|
40
|
+
require_relative 'worksheet/worksheet_hyperlinks'
|
|
41
|
+
require_relative 'worksheet/break'
|
|
42
|
+
require_relative 'worksheet/row_breaks'
|
|
43
|
+
require_relative 'worksheet/col_breaks'
|
|
44
|
+
require_relative 'workbook_view'
|
|
45
|
+
require_relative 'workbook_views'
|
|
46
|
+
require_relative 'worksheet/worksheet'
|
|
47
|
+
require_relative 'shared_strings_table'
|
|
48
|
+
require_relative 'defined_name'
|
|
49
|
+
require_relative 'defined_names'
|
|
50
|
+
require_relative 'worksheet/table_style_info'
|
|
51
|
+
require_relative 'worksheet/table'
|
|
52
|
+
require_relative 'worksheet/tables'
|
|
53
|
+
require_relative 'worksheet/pivot_table_cache_definition'
|
|
54
|
+
require_relative 'worksheet/pivot_table'
|
|
55
|
+
require_relative 'worksheet/pivot_tables'
|
|
56
|
+
require_relative 'worksheet/data_validation'
|
|
57
|
+
require_relative 'worksheet/data_validations'
|
|
58
|
+
require_relative 'worksheet/sheet_view'
|
|
59
|
+
require_relative 'worksheet/sheet_format_pr'
|
|
60
|
+
require_relative 'worksheet/pane'
|
|
61
|
+
require_relative 'worksheet/selection'
|
|
62
62
|
|
|
63
63
|
# The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
|
|
64
|
-
# The following parts of the Office Open XML spreadsheet specification are not
|
|
64
|
+
# The following parts of the Office Open XML spreadsheet specification are not implemented in this version.
|
|
65
65
|
#
|
|
66
66
|
# bookViews
|
|
67
67
|
# calcPr
|
|
@@ -217,7 +217,7 @@ module Axlsx
|
|
|
217
217
|
# Indicates if the epoc date for serialization should be 1904. If false, 1900 is used.
|
|
218
218
|
@@date1904 = false
|
|
219
219
|
|
|
220
|
-
# A quick helper to
|
|
220
|
+
# A quick helper to retrieve a worksheet by name
|
|
221
221
|
# @param [String] name The name of the sheet you are looking for
|
|
222
222
|
# @return [Worksheet] The sheet found, or nil
|
|
223
223
|
def sheet_by_name(name)
|
|
@@ -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
|
|
@@ -373,7 +386,7 @@ module Axlsx
|
|
|
373
386
|
end
|
|
374
387
|
|
|
375
388
|
# The xml:space attribute for the worksheet.
|
|
376
|
-
# This determines how whitespace is handled
|
|
389
|
+
# This determines how whitespace is handled within the document.
|
|
377
390
|
# The most relevant part being whitespace in the cell text.
|
|
378
391
|
# allowed values are :preserve and :default. Axlsx uses :preserve unless
|
|
379
392
|
# you explicily set this to :default.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
require_relative 'filter_column'
|
|
4
|
+
require_relative 'filters'
|
|
5
|
+
require_relative 'sort_state'
|
|
6
6
|
|
|
7
7
|
module Axlsx
|
|
8
8
|
# This class represents an auto filter range in a worksheet
|
|
@@ -80,7 +80,7 @@ module Axlsx
|
|
|
80
80
|
condition.order == :asc ? index1 <=> index2 : index2 <=> index1
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
break unless comparison
|
|
83
|
+
break unless comparison == 0
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
comparison
|
|
@@ -10,7 +10,7 @@ module Axlsx
|
|
|
10
10
|
include Axlsx::SerializedAttributes
|
|
11
11
|
|
|
12
12
|
# Creates a new FilterColumn object
|
|
13
|
-
# @note This class
|
|
13
|
+
# @note This class yields its filter object as that is where the vast majority of processing will be done
|
|
14
14
|
# @param [Integer|Cell] col_id The zero based index for the column to which this filter will be applied
|
|
15
15
|
# @param [Symbol] filter_type The symbolized class name of the filter to apply to this column.
|
|
16
16
|
# @param [Hash] options options for this object and the filter
|
|
@@ -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
|
|
@@ -13,7 +13,7 @@ module Axlsx
|
|
|
13
13
|
# @option [Boolean] blank @see blank
|
|
14
14
|
# @option [String] calendar_type @see calendar_type
|
|
15
15
|
# @option [Array] filter_items An array of values that will be used to create filter objects.
|
|
16
|
-
# @option [Array] date_group_items An array of
|
|
16
|
+
# @option [Array] date_group_items An array of hashes defining date group item filters to apply.
|
|
17
17
|
# @note The recommended way to interact with filter objects is via AutoFilter#add_column
|
|
18
18
|
# @example
|
|
19
19
|
# ws.auto_filter.add_column(0, :filters, :blank => true, :calendar_type => 'japan', :filter_items => [100, 'a'])
|
|
@@ -36,7 +36,7 @@ module Axlsx
|
|
|
36
36
|
# even when those dates are not using the same calendar system / date formatting.
|
|
37
37
|
attr_reader :calendar_type
|
|
38
38
|
|
|
39
|
-
# Tells us if the row of the cell provided should be
|
|
39
|
+
# Tells us if the row of the cell provided should be filtered as it
|
|
40
40
|
# does not meet any of the specified filter_items or
|
|
41
41
|
# date_group_items restrictions.
|
|
42
42
|
# @param [Cell] cell The cell to test against items
|
|
@@ -138,7 +138,7 @@ module Axlsx
|
|
|
138
138
|
|
|
139
139
|
# Creates a new DateGroupItem
|
|
140
140
|
# @param [Hash] options A hash of options to use when
|
|
141
|
-
#
|
|
141
|
+
# instantiating the object
|
|
142
142
|
# @option [String] date_time_grouping the part of the date this
|
|
143
143
|
# filter should apply for grouping
|
|
144
144
|
# @option [Integer|String] year @see year
|
|
@@ -6,7 +6,7 @@ module Axlsx
|
|
|
6
6
|
# Creates a new SortCondition object
|
|
7
7
|
# @param [Integer] column_index Zero-based index indicating the AutoFilter column to which the sorting should be applied to
|
|
8
8
|
# @param [Symbol] order The order the column should be sorted on, can only be :asc or :desc
|
|
9
|
-
# @param [Array] custom_list An array
|
|
9
|
+
# @param [Array] custom_list An array containing a custom sorting list in order.
|
|
10
10
|
def initialize(column_index:, order:, custom_list:)
|
|
11
11
|
Axlsx.validate_int column_index
|
|
12
12
|
@column_index = column_index
|