caxlsx 3.3.0 → 3.4.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 +9 -0
- data/README.md +24 -5
- data/Rakefile +0 -1
- data/lib/axlsx/content_type/abstract_content_type.rb +2 -5
- data/lib/axlsx/content_type/content_type.rb +0 -4
- data/lib/axlsx/content_type/default.rb +1 -5
- data/lib/axlsx/content_type/override.rb +0 -4
- data/lib/axlsx/doc_props/app.rb +1 -6
- data/lib/axlsx/doc_props/core.rb +1 -6
- data/lib/axlsx/drawing/area_chart.rb +3 -6
- data/lib/axlsx/drawing/area_series.rb +1 -4
- data/lib/axlsx/drawing/ax_data_source.rb +1 -6
- data/lib/axlsx/drawing/axes.rb +5 -6
- data/lib/axlsx/drawing/axis.rb +7 -12
- data/lib/axlsx/drawing/bar_3D_chart.rb +7 -10
- data/lib/axlsx/drawing/bar_chart.rb +6 -9
- data/lib/axlsx/drawing/bar_series.rb +2 -8
- data/lib/axlsx/drawing/bubble_chart.rb +2 -5
- data/lib/axlsx/drawing/bubble_series.rb +3 -6
- data/lib/axlsx/drawing/cat_axis.rb +2 -7
- data/lib/axlsx/drawing/chart.rb +7 -12
- data/lib/axlsx/drawing/d_lbls.rb +23 -22
- data/lib/axlsx/drawing/drawing.rb +4 -8
- data/lib/axlsx/drawing/graphic_frame.rb +0 -3
- data/lib/axlsx/drawing/hyperlink.rb +4 -7
- data/lib/axlsx/drawing/line_3D_chart.rb +10 -14
- data/lib/axlsx/drawing/line_chart.rb +3 -6
- data/lib/axlsx/drawing/line_series.rb +1 -4
- data/lib/axlsx/drawing/marker.rb +5 -9
- data/lib/axlsx/drawing/num_data.rb +4 -9
- data/lib/axlsx/drawing/num_data_source.rb +3 -7
- data/lib/axlsx/drawing/num_val.rb +2 -5
- data/lib/axlsx/drawing/one_cell_anchor.rb +4 -6
- data/lib/axlsx/drawing/pic.rb +46 -13
- data/lib/axlsx/drawing/picture_locking.rb +3 -6
- data/lib/axlsx/drawing/pie_3D_chart.rb +2 -7
- data/lib/axlsx/drawing/pie_series.rb +1 -6
- data/lib/axlsx/drawing/scaling.rb +2 -5
- data/lib/axlsx/drawing/scatter_chart.rb +2 -5
- data/lib/axlsx/drawing/scatter_series.rb +2 -5
- data/lib/axlsx/drawing/ser_axis.rb +2 -6
- data/lib/axlsx/drawing/series.rb +3 -5
- data/lib/axlsx/drawing/series_title.rb +0 -2
- data/lib/axlsx/drawing/str_data.rb +3 -8
- data/lib/axlsx/drawing/str_val.rb +2 -5
- data/lib/axlsx/drawing/title.rb +12 -15
- data/lib/axlsx/drawing/two_cell_anchor.rb +5 -7
- data/lib/axlsx/drawing/val_axis.rb +1 -4
- data/lib/axlsx/drawing/view_3D.rb +24 -24
- data/lib/axlsx/drawing/vml_drawing.rb +2 -5
- data/lib/axlsx/drawing/vml_shape.rb +4 -7
- data/lib/axlsx/package.rb +35 -36
- data/lib/axlsx/rels/relationship.rb +21 -24
- data/lib/axlsx/rels/relationships.rb +3 -6
- data/lib/axlsx/stylesheet/border.rb +1 -4
- data/lib/axlsx/stylesheet/border_pr.rb +3 -5
- data/lib/axlsx/stylesheet/cell_alignment.rb +2 -10
- data/lib/axlsx/stylesheet/cell_protection.rb +1 -4
- data/lib/axlsx/stylesheet/cell_style.rb +3 -7
- data/lib/axlsx/stylesheet/color.rb +6 -5
- data/lib/axlsx/stylesheet/dxf.rb +2 -6
- data/lib/axlsx/stylesheet/fill.rb +0 -4
- data/lib/axlsx/stylesheet/font.rb +7 -6
- data/lib/axlsx/stylesheet/gradient_fill.rb +4 -6
- data/lib/axlsx/stylesheet/gradient_stop.rb +2 -3
- data/lib/axlsx/stylesheet/num_fmt.rb +1 -4
- data/lib/axlsx/stylesheet/pattern_fill.rb +3 -5
- data/lib/axlsx/stylesheet/styles.rb +53 -45
- data/lib/axlsx/stylesheet/table_style.rb +5 -8
- data/lib/axlsx/stylesheet/table_style_element.rb +1 -4
- data/lib/axlsx/stylesheet/table_styles.rb +3 -7
- data/lib/axlsx/stylesheet/xf.rb +3 -6
- data/lib/axlsx/util/accessors.rb +2 -4
- data/lib/axlsx/util/constants.rb +3 -5
- data/lib/axlsx/util/mime_type_utils.rb +13 -0
- data/lib/axlsx/util/options_parser.rb +1 -2
- data/lib/axlsx/util/serialized_attributes.rb +4 -5
- data/lib/axlsx/util/simple_typed_list.rb +18 -17
- data/lib/axlsx/util/storage.rb +32 -36
- data/lib/axlsx/util/validators.rb +7 -4
- data/lib/axlsx/util/zip_command.rb +0 -2
- data/lib/axlsx/version.rb +1 -2
- data/lib/axlsx/workbook/defined_name.rb +6 -5
- data/lib/axlsx/workbook/defined_names.rb +1 -2
- data/lib/axlsx/workbook/shared_strings_table.rb +3 -6
- data/lib/axlsx/workbook/workbook.rb +96 -91
- data/lib/axlsx/workbook/workbook_view.rb +5 -10
- data/lib/axlsx/workbook/workbook_views.rb +1 -3
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +9 -8
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +6 -6
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +13 -14
- data/lib/axlsx/workbook/worksheet/border_creator.rb +29 -26
- data/lib/axlsx/workbook/worksheet/break.rb +2 -5
- data/lib/axlsx/workbook/worksheet/cell.rb +46 -26
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +11 -11
- data/lib/axlsx/workbook/worksheet/cfvo.rb +2 -2
- data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -5
- data/lib/axlsx/workbook/worksheet/col.rb +4 -7
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +4 -5
- data/lib/axlsx/workbook/worksheet/color_scale.rb +10 -12
- data/lib/axlsx/workbook/worksheet/cols.rb +6 -6
- data/lib/axlsx/workbook/worksheet/comment.rb +4 -5
- data/lib/axlsx/workbook/worksheet/comments.rb +6 -10
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +4 -5
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +2 -6
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +2 -4
- data/lib/axlsx/workbook/worksheet/data_bar.rb +20 -22
- data/lib/axlsx/workbook/worksheet/data_validation.rb +4 -5
- data/lib/axlsx/workbook/worksheet/data_validations.rb +2 -5
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +1 -3
- data/lib/axlsx/workbook/worksheet/dimension.rb +5 -4
- data/lib/axlsx/workbook/worksheet/header_footer.rb +0 -1
- data/lib/axlsx/workbook/worksheet/icon_set.rb +2 -3
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +8 -8
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +0 -1
- data/lib/axlsx/workbook/worksheet/page_margins.rb +2 -2
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +1 -3
- data/lib/axlsx/workbook/worksheet/page_setup.rb +117 -120
- data/lib/axlsx/workbook/worksheet/pane.rb +16 -17
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +8 -11
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +8 -11
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +3 -4
- data/lib/axlsx/workbook/worksheet/print_options.rb +0 -1
- data/lib/axlsx/workbook/worksheet/protected_range.rb +4 -5
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +9 -9
- data/lib/axlsx/workbook/worksheet/rich_text.rb +4 -6
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +21 -5
- data/lib/axlsx/workbook/worksheet/row.rb +24 -15
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +3 -4
- data/lib/axlsx/workbook/worksheet/selection.rb +7 -9
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +5 -6
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +4 -6
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +4 -4
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +12 -13
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +35 -42
- data/lib/axlsx/workbook/worksheet/table.rb +7 -9
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +2 -3
- data/lib/axlsx/workbook/worksheet/tables.rb +4 -4
- data/lib/axlsx/workbook/worksheet/worksheet.rb +63 -35
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +6 -6
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +3 -2
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +5 -6
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +4 -4
- data/lib/axlsx.rb +23 -9
- data/lib/caxlsx.rb +0 -1
- metadata +3 -3
|
@@ -1,65 +1,63 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
module Axlsx
|
|
3
|
-
require 'axlsx/workbook/worksheet/sheet_calc_pr.rb'
|
|
4
|
-
require 'axlsx/workbook/worksheet/auto_filter/auto_filter.rb'
|
|
5
|
-
require 'axlsx/workbook/worksheet/date_time_converter.rb'
|
|
6
|
-
require 'axlsx/workbook/worksheet/protected_range.rb'
|
|
7
|
-
require 'axlsx/workbook/worksheet/protected_ranges.rb'
|
|
8
|
-
require 'axlsx/workbook/worksheet/rich_text_run'
|
|
9
|
-
require 'axlsx/workbook/worksheet/rich_text'
|
|
10
|
-
require 'axlsx/workbook/worksheet/cell_serializer.rb'
|
|
11
|
-
require 'axlsx/workbook/worksheet/cell.rb'
|
|
12
|
-
require 'axlsx/workbook/worksheet/page_margins.rb'
|
|
13
|
-
require 'axlsx/workbook/worksheet/page_set_up_pr.rb'
|
|
14
|
-
require 'axlsx/workbook/worksheet/outline_pr.rb'
|
|
15
|
-
require 'axlsx/workbook/worksheet/page_setup.rb'
|
|
16
|
-
require 'axlsx/workbook/worksheet/header_footer.rb'
|
|
17
|
-
require 'axlsx/workbook/worksheet/print_options.rb'
|
|
18
|
-
require 'axlsx/workbook/worksheet/cfvo.rb'
|
|
19
|
-
require 'axlsx/workbook/worksheet/cfvos.rb'
|
|
20
|
-
require 'axlsx/workbook/worksheet/color_scale.rb'
|
|
21
|
-
require 'axlsx/workbook/worksheet/data_bar.rb'
|
|
22
|
-
require 'axlsx/workbook/worksheet/icon_set.rb'
|
|
23
|
-
require 'axlsx/workbook/worksheet/conditional_formatting.rb'
|
|
24
|
-
require 'axlsx/workbook/worksheet/conditional_formatting_rule.rb'
|
|
25
|
-
require 'axlsx/workbook/worksheet/conditional_formattings.rb'
|
|
26
|
-
require 'axlsx/workbook/worksheet/row.rb'
|
|
27
|
-
require 'axlsx/workbook/worksheet/col.rb'
|
|
28
|
-
require 'axlsx/workbook/worksheet/cols.rb'
|
|
29
|
-
require 'axlsx/workbook/worksheet/comments.rb'
|
|
30
|
-
require 'axlsx/workbook/worksheet/comment.rb'
|
|
31
|
-
require 'axlsx/workbook/worksheet/merged_cells.rb'
|
|
32
|
-
require 'axlsx/workbook/worksheet/sheet_protection.rb'
|
|
33
|
-
require 'axlsx/workbook/worksheet/sheet_pr.rb'
|
|
34
|
-
require 'axlsx/workbook/worksheet/dimension.rb'
|
|
35
|
-
require 'axlsx/workbook/worksheet/sheet_data.rb'
|
|
36
|
-
require 'axlsx/workbook/worksheet/worksheet_drawing.rb'
|
|
37
|
-
require 'axlsx/workbook/worksheet/worksheet_comments.rb'
|
|
38
|
-
require 'axlsx/workbook/worksheet/worksheet_hyperlink'
|
|
39
|
-
require 'axlsx/workbook/worksheet/worksheet_hyperlinks'
|
|
40
|
-
require 'axlsx/workbook/worksheet/break'
|
|
41
|
-
require 'axlsx/workbook/worksheet/row_breaks'
|
|
42
|
-
require 'axlsx/workbook/worksheet/col_breaks'
|
|
43
|
-
require 'axlsx/workbook/workbook_view'
|
|
44
|
-
require 'axlsx/workbook/workbook_views'
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
require 'axlsx/workbook/
|
|
48
|
-
require 'axlsx/workbook/
|
|
49
|
-
require 'axlsx/workbook/
|
|
50
|
-
require 'axlsx/workbook/
|
|
51
|
-
require 'axlsx/workbook/worksheet/
|
|
52
|
-
require 'axlsx/workbook/worksheet/
|
|
53
|
-
require 'axlsx/workbook/worksheet/
|
|
54
|
-
require 'axlsx/workbook/worksheet/
|
|
55
|
-
require 'axlsx/workbook/worksheet/
|
|
56
|
-
require 'axlsx/workbook/worksheet/
|
|
57
|
-
require 'axlsx/workbook/worksheet/
|
|
58
|
-
require 'axlsx/workbook/worksheet/
|
|
59
|
-
require 'axlsx/workbook/worksheet/
|
|
60
|
-
require 'axlsx/workbook/worksheet/
|
|
61
|
-
|
|
62
|
-
require 'axlsx/workbook/worksheet/selection.rb'
|
|
2
|
+
require 'axlsx/workbook/worksheet/sheet_calc_pr.rb'
|
|
3
|
+
require 'axlsx/workbook/worksheet/auto_filter/auto_filter.rb'
|
|
4
|
+
require 'axlsx/workbook/worksheet/date_time_converter.rb'
|
|
5
|
+
require 'axlsx/workbook/worksheet/protected_range.rb'
|
|
6
|
+
require 'axlsx/workbook/worksheet/protected_ranges.rb'
|
|
7
|
+
require 'axlsx/workbook/worksheet/rich_text_run'
|
|
8
|
+
require 'axlsx/workbook/worksheet/rich_text'
|
|
9
|
+
require 'axlsx/workbook/worksheet/cell_serializer.rb'
|
|
10
|
+
require 'axlsx/workbook/worksheet/cell.rb'
|
|
11
|
+
require 'axlsx/workbook/worksheet/page_margins.rb'
|
|
12
|
+
require 'axlsx/workbook/worksheet/page_set_up_pr.rb'
|
|
13
|
+
require 'axlsx/workbook/worksheet/outline_pr.rb'
|
|
14
|
+
require 'axlsx/workbook/worksheet/page_setup.rb'
|
|
15
|
+
require 'axlsx/workbook/worksheet/header_footer.rb'
|
|
16
|
+
require 'axlsx/workbook/worksheet/print_options.rb'
|
|
17
|
+
require 'axlsx/workbook/worksheet/cfvo.rb'
|
|
18
|
+
require 'axlsx/workbook/worksheet/cfvos.rb'
|
|
19
|
+
require 'axlsx/workbook/worksheet/color_scale.rb'
|
|
20
|
+
require 'axlsx/workbook/worksheet/data_bar.rb'
|
|
21
|
+
require 'axlsx/workbook/worksheet/icon_set.rb'
|
|
22
|
+
require 'axlsx/workbook/worksheet/conditional_formatting.rb'
|
|
23
|
+
require 'axlsx/workbook/worksheet/conditional_formatting_rule.rb'
|
|
24
|
+
require 'axlsx/workbook/worksheet/conditional_formattings.rb'
|
|
25
|
+
require 'axlsx/workbook/worksheet/row.rb'
|
|
26
|
+
require 'axlsx/workbook/worksheet/col.rb'
|
|
27
|
+
require 'axlsx/workbook/worksheet/cols.rb'
|
|
28
|
+
require 'axlsx/workbook/worksheet/comments.rb'
|
|
29
|
+
require 'axlsx/workbook/worksheet/comment.rb'
|
|
30
|
+
require 'axlsx/workbook/worksheet/merged_cells.rb'
|
|
31
|
+
require 'axlsx/workbook/worksheet/sheet_protection.rb'
|
|
32
|
+
require 'axlsx/workbook/worksheet/sheet_pr.rb'
|
|
33
|
+
require 'axlsx/workbook/worksheet/dimension.rb'
|
|
34
|
+
require 'axlsx/workbook/worksheet/sheet_data.rb'
|
|
35
|
+
require 'axlsx/workbook/worksheet/worksheet_drawing.rb'
|
|
36
|
+
require 'axlsx/workbook/worksheet/worksheet_comments.rb'
|
|
37
|
+
require 'axlsx/workbook/worksheet/worksheet_hyperlink'
|
|
38
|
+
require 'axlsx/workbook/worksheet/worksheet_hyperlinks'
|
|
39
|
+
require 'axlsx/workbook/worksheet/break'
|
|
40
|
+
require 'axlsx/workbook/worksheet/row_breaks'
|
|
41
|
+
require 'axlsx/workbook/worksheet/col_breaks'
|
|
42
|
+
require 'axlsx/workbook/workbook_view'
|
|
43
|
+
require 'axlsx/workbook/workbook_views'
|
|
44
|
+
require 'axlsx/workbook/worksheet/worksheet.rb'
|
|
45
|
+
require 'axlsx/workbook/shared_strings_table.rb'
|
|
46
|
+
require 'axlsx/workbook/defined_name.rb'
|
|
47
|
+
require 'axlsx/workbook/defined_names.rb'
|
|
48
|
+
require 'axlsx/workbook/worksheet/table_style_info.rb'
|
|
49
|
+
require 'axlsx/workbook/worksheet/table.rb'
|
|
50
|
+
require 'axlsx/workbook/worksheet/tables.rb'
|
|
51
|
+
require 'axlsx/workbook/worksheet/pivot_table_cache_definition.rb'
|
|
52
|
+
require 'axlsx/workbook/worksheet/pivot_table.rb'
|
|
53
|
+
require 'axlsx/workbook/worksheet/pivot_tables.rb'
|
|
54
|
+
require 'axlsx/workbook/worksheet/data_validation.rb'
|
|
55
|
+
require 'axlsx/workbook/worksheet/data_validations.rb'
|
|
56
|
+
require 'axlsx/workbook/worksheet/sheet_view.rb'
|
|
57
|
+
require 'axlsx/workbook/worksheet/sheet_format_pr.rb'
|
|
58
|
+
require 'axlsx/workbook/worksheet/pane.rb'
|
|
59
|
+
require 'axlsx/workbook/worksheet/selection.rb'
|
|
60
|
+
|
|
63
61
|
# The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
|
|
64
62
|
# The following parts of the Office Open XML spreadsheet specification are not implimented in this version.
|
|
65
63
|
#
|
|
@@ -84,7 +82,6 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
84
82
|
#
|
|
85
83
|
# *workbookPr is only supported to the extend of date1904
|
|
86
84
|
class Workbook
|
|
87
|
-
|
|
88
85
|
BOLD_FONT_MULTIPLIER = 1.5
|
|
89
86
|
FONT_SCALE_DIVISOR = 10.0
|
|
90
87
|
|
|
@@ -109,29 +106,28 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
109
106
|
@is_reversed = v
|
|
110
107
|
end
|
|
111
108
|
|
|
112
|
-
|
|
113
|
-
# A collection of worksheets associated with this workbook.
|
|
109
|
+
# A collection of worksheets associated with this workbook.
|
|
114
110
|
# @note The recommended way to manage worksheets is add_worksheet
|
|
115
111
|
# @see Workbook#add_worksheet
|
|
116
112
|
# @see Worksheet
|
|
117
113
|
# @return [SimpleTypedList]
|
|
118
114
|
attr_reader :worksheets
|
|
119
115
|
|
|
120
|
-
# A
|
|
116
|
+
# A collection of charts associated with this workbook
|
|
121
117
|
# @note The recommended way to manage charts is Worksheet#add_chart
|
|
122
118
|
# @see Worksheet#add_chart
|
|
123
119
|
# @see Chart
|
|
124
120
|
# @return [SimpleTypedList]
|
|
125
121
|
attr_reader :charts
|
|
126
122
|
|
|
127
|
-
# A
|
|
123
|
+
# A collection of images associated with this workbook
|
|
128
124
|
# @note The recommended way to manage images is Worksheet#add_image
|
|
129
125
|
# @see Worksheet#add_image
|
|
130
126
|
# @see Pic
|
|
131
127
|
# @return [SimpleTypedList]
|
|
132
128
|
attr_reader :images
|
|
133
129
|
|
|
134
|
-
# A
|
|
130
|
+
# A collection of drawings associated with this workbook
|
|
135
131
|
# @note The recommended way to manage drawings is Worksheet#add_chart
|
|
136
132
|
# @see Worksheet#add_chart
|
|
137
133
|
# @see Drawing
|
|
@@ -140,15 +136,14 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
140
136
|
|
|
141
137
|
# pretty sure this two are always empty and can be removed.
|
|
142
138
|
|
|
143
|
-
|
|
144
|
-
# A colllection of tables associated with this workbook
|
|
139
|
+
# A collection of tables associated with this workbook
|
|
145
140
|
# @note The recommended way to manage drawings is Worksheet#add_table
|
|
146
141
|
# @see Worksheet#add_table
|
|
147
142
|
# @see Table
|
|
148
143
|
# @return [SimpleTypedList]
|
|
149
144
|
attr_reader :tables
|
|
150
145
|
|
|
151
|
-
# A
|
|
146
|
+
# A collection of pivot tables associated with this workbook
|
|
152
147
|
# @note The recommended way to manage drawings is Worksheet#add_table
|
|
153
148
|
# @see Worksheet#add_table
|
|
154
149
|
# @see Table
|
|
@@ -217,11 +212,9 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
217
212
|
self.styles_applied = true
|
|
218
213
|
end
|
|
219
214
|
|
|
220
|
-
|
|
221
215
|
# Indicates if the epoc date for serialization should be 1904. If false, 1900 is used.
|
|
222
216
|
@@date1904 = false
|
|
223
217
|
|
|
224
|
-
|
|
225
218
|
# A quick helper to retrive a worksheet by name
|
|
226
219
|
# @param [String] name The name of the sheet you are looking for
|
|
227
220
|
# @return [Worksheet] The sheet found, or nil
|
|
@@ -230,10 +223,10 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
230
223
|
@worksheets[index] if index
|
|
231
224
|
end
|
|
232
225
|
|
|
233
|
-
# Creates a new Workbook
|
|
234
|
-
# The
|
|
235
|
-
# @option options [Boolean] date1904
|
|
236
|
-
def initialize(options={})
|
|
226
|
+
# Creates a new Workbook.
|
|
227
|
+
# The recommended way to work with workbooks is via Package#workbook.
|
|
228
|
+
# @option options [Boolean] date1904 If this is not specified, date1904 is set to false. Office 2011 for Mac defaults to false.
|
|
229
|
+
def initialize(options = {})
|
|
237
230
|
@styles = Styles.new
|
|
238
231
|
@worksheets = SimpleTypedList.new Worksheet
|
|
239
232
|
@drawings = SimpleTypedList.new Drawing
|
|
@@ -243,13 +236,12 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
243
236
|
@tables = SimpleTypedList.new Table
|
|
244
237
|
@pivot_tables = SimpleTypedList.new PivotTable
|
|
245
238
|
@comments = SimpleTypedList.new Comments
|
|
246
|
-
|
|
247
|
-
|
|
248
239
|
@use_autowidth = true
|
|
249
240
|
@bold_font_multiplier = BOLD_FONT_MULTIPLIER
|
|
250
241
|
@font_scale_divisor = FONT_SCALE_DIVISOR
|
|
251
242
|
|
|
252
|
-
self.
|
|
243
|
+
self.escape_formulas = options[:escape_formulas].nil? ? Axlsx.escape_formulas : options[:escape_formulas]
|
|
244
|
+
self.date1904 = !options[:date1904].nil? && options[:date1904]
|
|
253
245
|
yield self if block_given?
|
|
254
246
|
end
|
|
255
247
|
|
|
@@ -268,6 +260,19 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
268
260
|
# @return [Boolean]
|
|
269
261
|
def self.date1904() @@date1904; end
|
|
270
262
|
|
|
263
|
+
# Whether to treat values starting with an equals sign as formulas or as literal strings.
|
|
264
|
+
# Allowing user-generated data to be interpreted as formulas is a security risk.
|
|
265
|
+
# See https://www.owasp.org/index.php/CSV_Injection for details.
|
|
266
|
+
# @return [Boolean]
|
|
267
|
+
attr_reader :escape_formulas
|
|
268
|
+
|
|
269
|
+
# Sets whether to treat values starting with an equals sign as formulas or as literal strings.
|
|
270
|
+
# @param [Boolean] value The value to set.
|
|
271
|
+
def escape_formulas=(value)
|
|
272
|
+
Axlsx.validate_boolean(value)
|
|
273
|
+
@escape_formulas = value
|
|
274
|
+
end
|
|
275
|
+
|
|
271
276
|
# Indicates if the workbook should use autowidths or not.
|
|
272
277
|
# @note This gem no longer depends on RMagick for autowidth
|
|
273
278
|
# calculation. Thus the performance benefits of turning this off are
|
|
@@ -276,7 +281,7 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
276
281
|
def use_autowidth() @use_autowidth; end
|
|
277
282
|
|
|
278
283
|
# see @use_autowidth
|
|
279
|
-
def use_autowidth=(v=true) Axlsx::validate_boolean v; @use_autowidth = v; end
|
|
284
|
+
def use_autowidth=(v = true) Axlsx::validate_boolean v; @use_autowidth = v; end
|
|
280
285
|
|
|
281
286
|
# Font size of bold fonts is multiplied with this
|
|
282
287
|
# Used for automatic calculation of cell widths with bold text
|
|
@@ -306,7 +311,7 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
306
311
|
# @param [Hash] options Options to pass into the worksheed during initialization.
|
|
307
312
|
# @option options [String] name The name of the worksheet
|
|
308
313
|
# @option options [Hash] page_margins The page margins for the worksheet
|
|
309
|
-
def insert_worksheet(index=0, options={})
|
|
314
|
+
def insert_worksheet(index = 0, options = {})
|
|
310
315
|
worksheet = Worksheet.new(self, options)
|
|
311
316
|
@worksheets.delete_at(@worksheets.size - 1)
|
|
312
317
|
@worksheets.insert(index, worksheet)
|
|
@@ -320,7 +325,7 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
320
325
|
# @option options [String] name The name of the worksheet.
|
|
321
326
|
# @option options [Hash] page_margins The page margins for the worksheet.
|
|
322
327
|
# @see Worksheet#initialize
|
|
323
|
-
def add_worksheet(options={})
|
|
328
|
+
def add_worksheet(options = {})
|
|
324
329
|
worksheet = Worksheet.new(self, options)
|
|
325
330
|
yield worksheet if block_given?
|
|
326
331
|
worksheet
|
|
@@ -330,7 +335,7 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
330
335
|
# @return WorkbookViews
|
|
331
336
|
# @option options [Hash] options passed into the added WorkbookView
|
|
332
337
|
# @see WorkbookView#initialize
|
|
333
|
-
def add_view(options={})
|
|
338
|
+
def add_view(options = {})
|
|
334
339
|
views << WorkbookView.new(options)
|
|
335
340
|
end
|
|
336
341
|
|
|
@@ -347,14 +352,14 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
347
352
|
def relationships
|
|
348
353
|
r = Relationships.new
|
|
349
354
|
@worksheets.each do |sheet|
|
|
350
|
-
r << Relationship.new(sheet, WORKSHEET_R, WORKSHEET_PN % (r.size+1))
|
|
355
|
+
r << Relationship.new(sheet, WORKSHEET_R, WORKSHEET_PN % (r.size + 1))
|
|
351
356
|
end
|
|
352
357
|
pivot_tables.each_with_index do |pivot_table, index|
|
|
353
|
-
r << Relationship.new(pivot_table.cache_definition, PIVOT_TABLE_CACHE_DEFINITION_R, PIVOT_TABLE_CACHE_DEFINITION_PN % (index+1))
|
|
358
|
+
r << Relationship.new(pivot_table.cache_definition, PIVOT_TABLE_CACHE_DEFINITION_R, PIVOT_TABLE_CACHE_DEFINITION_PN % (index + 1))
|
|
354
359
|
end
|
|
355
|
-
r << Relationship.new(self, STYLES_R,
|
|
360
|
+
r << Relationship.new(self, STYLES_R, STYLES_PN)
|
|
356
361
|
if use_shared_strings
|
|
357
|
-
|
|
362
|
+
r << Relationship.new(self, SHARED_STRINGS_R, SHARED_STRINGS_PN)
|
|
358
363
|
end
|
|
359
364
|
r
|
|
360
365
|
end
|
|
@@ -380,7 +385,7 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
380
385
|
# @param [Symbol] space must be one of :preserve or :default
|
|
381
386
|
def xml_space=(space)
|
|
382
387
|
Axlsx::RestrictionValidator.validate(:xml_space, [:preserve, :default], space)
|
|
383
|
-
@xml_space = space
|
|
388
|
+
@xml_space = space
|
|
384
389
|
end
|
|
385
390
|
|
|
386
391
|
# returns a range of cells in a worksheet
|
|
@@ -391,13 +396,14 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
391
396
|
sheet_name = cell_def.split('!')[0] if cell_def.match('!')
|
|
392
397
|
worksheet = self.worksheets.select { |s| s.name == sheet_name }.first
|
|
393
398
|
raise ArgumentError, 'Unknown Sheet' unless sheet_name && worksheet.is_a?(Worksheet)
|
|
394
|
-
|
|
399
|
+
|
|
400
|
+
worksheet[cell_def.gsub(/.+!/, "")]
|
|
395
401
|
end
|
|
396
402
|
|
|
397
403
|
# Serialize the workbook
|
|
398
404
|
# @param [String] str
|
|
399
405
|
# @return [String]
|
|
400
|
-
def to_xml_string(str='')
|
|
406
|
+
def to_xml_string(str = '')
|
|
401
407
|
add_worksheet(name: 'Sheet1') unless worksheets.size > 0
|
|
402
408
|
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
403
409
|
str << ('<workbook xmlns="' << XML_NS << '" xmlns:r="' << XML_NS_R << '">')
|
|
@@ -420,6 +426,5 @@ require 'axlsx/workbook/worksheet/selection.rb'
|
|
|
420
426
|
end
|
|
421
427
|
str << '</workbook>'
|
|
422
428
|
end
|
|
423
|
-
|
|
424
429
|
end
|
|
425
430
|
end
|
|
@@ -19,19 +19,16 @@
|
|
|
19
19
|
# </xsd:complexType>
|
|
20
20
|
|
|
21
21
|
module Axlsx
|
|
22
|
-
|
|
23
22
|
# A BookView defines the display properties for a workbook.
|
|
24
23
|
# Units for window widths and other dimensions are expressed in twips.
|
|
25
24
|
# Twip measurements are portable between different display resolutions.
|
|
26
25
|
# The formula is (screen pixels) * (20 * 72) / (logical device dpi),
|
|
27
26
|
# where the logical device dpi can be different for x and y coordinates.
|
|
28
27
|
class WorkbookView
|
|
29
|
-
|
|
30
28
|
include Axlsx::SerializedAttributes
|
|
31
29
|
include Axlsx::OptionsParser
|
|
32
30
|
include Axlsx::Accessors
|
|
33
31
|
|
|
34
|
-
|
|
35
32
|
# Creates a new BookView object
|
|
36
33
|
# @param [Hash] options A hash of key/value pairs that will be mapped to this instances attributes.
|
|
37
34
|
# @option [Symbol] visibility Specifies visible state of the workbook window. The default value for this attribute is :visible.
|
|
@@ -47,16 +44,15 @@ module Axlsx
|
|
|
47
44
|
# @option [Integer] window_width Specifies the width of the workbook window. The unit of measurement for this value is twips.
|
|
48
45
|
# @option [Integer] window_height Specifies the height of the workbook window. The unit of measurement for this value is twips.
|
|
49
46
|
# @option [Boolean] auto_filter_date_grouping Specifies a boolean value that indicates whether to group dates when presenting the user with filtering options in the user interface.
|
|
50
|
-
def initialize(options={})
|
|
47
|
+
def initialize(options = {})
|
|
51
48
|
parse_options options
|
|
52
49
|
yield self if block_given?
|
|
53
50
|
end
|
|
54
51
|
|
|
55
|
-
|
|
56
52
|
unsigned_int_attr_accessor :x_window, :y_window, :window_width, :window_height,
|
|
57
53
|
:tab_ratio, :first_sheet, :active_tab
|
|
58
54
|
|
|
59
|
-
validated_attr_accessor
|
|
55
|
+
validated_attr_accessor [:visibility], :validate_view_visibility
|
|
60
56
|
|
|
61
57
|
serializable_attributes :visibility, :minimized,
|
|
62
58
|
:show_horizontal_scroll, :show_vertical_scroll,
|
|
@@ -67,14 +63,13 @@ module Axlsx
|
|
|
67
63
|
boolean_attr_accessor :minimized, :show_horizontal_scroll, :show_vertical_scroll,
|
|
68
64
|
:show_sheet_tabs, :auto_filter_date_grouping
|
|
69
65
|
|
|
70
|
-
|
|
71
66
|
# Serialize the WorkbookView
|
|
72
67
|
# @param [String] str
|
|
73
68
|
# @return [String]
|
|
74
69
|
def to_xml_string(str = '')
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
str << '<workbookView '
|
|
71
|
+
serialized_attributes str
|
|
72
|
+
str << '></workbookView>'
|
|
78
73
|
end
|
|
79
74
|
end
|
|
80
75
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module Axlsx
|
|
2
2
|
# a simple types list of BookView objects
|
|
3
3
|
class WorkbookViews < SimpleTypedList
|
|
4
|
-
|
|
5
4
|
# creates the book views object
|
|
6
5
|
def initialize
|
|
7
6
|
super WorkbookView
|
|
@@ -12,11 +11,10 @@ module Axlsx
|
|
|
12
11
|
# @return [String]
|
|
13
12
|
def to_xml_string(str = '')
|
|
14
13
|
return if empty?
|
|
14
|
+
|
|
15
15
|
str << "<bookViews>"
|
|
16
16
|
each { |view| view.to_xml_string(str) }
|
|
17
17
|
str << '</bookViews>'
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
|
-
|
|
22
|
-
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
1
|
require 'axlsx/workbook/worksheet/auto_filter/filter_column.rb'
|
|
3
2
|
require 'axlsx/workbook/worksheet/auto_filter/filters.rb'
|
|
4
3
|
|
|
5
4
|
module Axlsx
|
|
6
|
-
|
|
7
|
-
#This class represents an auto filter range in a worksheet
|
|
5
|
+
# This class represents an auto filter range in a worksheet
|
|
8
6
|
class AutoFilter
|
|
9
|
-
|
|
10
7
|
# creates a new Autofilter object
|
|
11
8
|
# @param [Worksheet] worksheet
|
|
12
9
|
def initialize(worksheet)
|
|
13
10
|
raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
|
|
11
|
+
|
|
14
12
|
@worksheet = worksheet
|
|
15
13
|
end
|
|
16
14
|
|
|
@@ -27,7 +25,8 @@ module Axlsx
|
|
|
27
25
|
# @return [String]
|
|
28
26
|
def defined_name
|
|
29
27
|
return unless range
|
|
30
|
-
|
|
28
|
+
|
|
29
|
+
Axlsx.cell_range(range.split(':').collect { |name| worksheet.name_to_cell(name) })
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
# A collection of filterColumns for this auto_filter
|
|
@@ -54,24 +53,26 @@ module Axlsx
|
|
|
54
53
|
start_point = Axlsx::name_to_indices(first_cell)
|
|
55
54
|
end_point = Axlsx::name_to_indices(last_cell)
|
|
56
55
|
# The +1 is so we skip the header row with the filter drop downs
|
|
57
|
-
rows = worksheet.rows[(start_point.last+1)..end_point.last] || []
|
|
56
|
+
rows = worksheet.rows[(start_point.last + 1)..end_point.last] || []
|
|
58
57
|
|
|
59
58
|
column_offset = start_point.first
|
|
60
59
|
columns.each do |column|
|
|
61
60
|
rows.each do |row|
|
|
62
61
|
next if row.hidden
|
|
62
|
+
|
|
63
63
|
column.apply(row, column_offset)
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
|
+
|
|
67
68
|
# serialize the object
|
|
68
69
|
# @return [String]
|
|
69
|
-
def to_xml_string(str='')
|
|
70
|
+
def to_xml_string(str = '')
|
|
70
71
|
return unless range
|
|
72
|
+
|
|
71
73
|
str << "<autoFilter ref='#{range}'>"
|
|
72
74
|
columns.each { |filter_column| filter_column.to_xml_string(str) }
|
|
73
75
|
str << "</autoFilter>"
|
|
74
76
|
end
|
|
75
|
-
|
|
76
77
|
end
|
|
77
78
|
end
|
|
@@ -4,7 +4,6 @@ module Axlsx
|
|
|
4
4
|
# If a column in the AutoFilter range has no criteria specified,
|
|
5
5
|
# then there is no corresponding filterColumn collection expressed for that column.
|
|
6
6
|
class FilterColumn
|
|
7
|
-
|
|
8
7
|
include Axlsx::OptionsParser
|
|
9
8
|
include Axlsx::SerializedAttributes
|
|
10
9
|
|
|
@@ -17,7 +16,7 @@ module Axlsx
|
|
|
17
16
|
# @option [Boolean] show_button @see show_button
|
|
18
17
|
def initialize(col_id, filter_type, options = {})
|
|
19
18
|
RestrictionValidator.validate 'FilterColumn.filter', FILTERS, filter_type
|
|
20
|
-
#Axlsx::validate_unsigned_int(col_id)
|
|
19
|
+
# Axlsx::validate_unsigned_int(col_id)
|
|
21
20
|
self.col_id = col_id
|
|
22
21
|
parse_options options
|
|
23
22
|
@filter = Axlsx.const_get(Axlsx.camel(filter_type)).new(options)
|
|
@@ -27,7 +26,7 @@ module Axlsx
|
|
|
27
26
|
serializable_attributes :col_id, :hidden_button, :show_button
|
|
28
27
|
|
|
29
28
|
# Allowed filters
|
|
30
|
-
FILTERS =
|
|
29
|
+
FILTERS = [:filters] # , :top10, :custom_filters, :dynamic_filters, :color_filters, :icon_filters]
|
|
31
30
|
|
|
32
31
|
# Zero-based index indicating the AutoFilter column to which this filter information applies.
|
|
33
32
|
# @return [Integer]
|
|
@@ -52,7 +51,7 @@ module Axlsx
|
|
|
52
51
|
end
|
|
53
52
|
|
|
54
53
|
# Sets the col_id attribute for this filter column.
|
|
55
|
-
# @param [Integer | Cell] column_index The zero based index of the column to which this filter applies.
|
|
54
|
+
# @param [Integer | Cell] column_index The zero based index of the column to which this filter applies.
|
|
56
55
|
# When you specify a cell, the column index will be read off the cell
|
|
57
56
|
# @return [Integer]
|
|
58
57
|
def col_id=(column_index)
|
|
@@ -65,8 +64,9 @@ module Axlsx
|
|
|
65
64
|
# @param [Array] row A row from a worksheet that needs to be
|
|
66
65
|
# filtered.
|
|
67
66
|
def apply(row, offset)
|
|
68
|
-
row.hidden = @filter.apply(row.cells[offset+col_id.to_i])
|
|
67
|
+
row.hidden = @filter.apply(row.cells[offset + col_id.to_i])
|
|
69
68
|
end
|
|
69
|
+
|
|
70
70
|
# @param [Boolean] hidden Flag indicating whether the AutoFilter button for this column is hidden.
|
|
71
71
|
# @return [Boolean]
|
|
72
72
|
def hidden_button=(hidden)
|
|
@@ -85,7 +85,7 @@ module Axlsx
|
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
# Serialize the object to xml
|
|
88
|
-
def to_xml_string(str='')
|
|
88
|
+
def to_xml_string(str = '')
|
|
89
89
|
str << "<filterColumn #{serialized_attributes}>"
|
|
90
90
|
@filter.to_xml_string(str)
|
|
91
91
|
str << "</filterColumn>"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Axlsx
|
|
2
|
-
|
|
3
|
-
# When multiple values are chosen to filter by, or when a group of date values are chosen to filter by,
|
|
2
|
+
# When multiple values are chosen to filter by, or when a group of date values are chosen to filter by,
|
|
4
3
|
# this object groups those criteria together.
|
|
5
4
|
class Filters
|
|
6
5
|
include Axlsx::OptionsParser
|
|
@@ -16,7 +15,7 @@ module Axlsx
|
|
|
16
15
|
# @note The recommended way to interact with filter objects is via AutoFilter#add_column
|
|
17
16
|
# @example
|
|
18
17
|
# ws.auto_filter.add_column(0, :filters, :blank => true, :calendar_type => 'japan', :filter_items => [100, 'a'])
|
|
19
|
-
def initialize(options={})
|
|
18
|
+
def initialize(options = {})
|
|
20
19
|
parse_options options
|
|
21
20
|
end
|
|
22
21
|
|
|
@@ -29,7 +28,7 @@ module Axlsx
|
|
|
29
28
|
# @return [Boolean]
|
|
30
29
|
attr_reader :blank
|
|
31
30
|
|
|
32
|
-
# Calendar type for date grouped items.
|
|
31
|
+
# Calendar type for date grouped items.
|
|
33
32
|
# Used to interpret the values in dateGroupItem.
|
|
34
33
|
# This is the calendar type used to evaluate all dates in the filter column,
|
|
35
34
|
# even when those dates are not using the same calendar system / date formatting.
|
|
@@ -42,6 +41,7 @@ module Axlsx
|
|
|
42
41
|
# TODO implement this for date filters as well!
|
|
43
42
|
def apply(cell)
|
|
44
43
|
return false unless cell
|
|
44
|
+
|
|
45
45
|
filter_items.each do |filter|
|
|
46
46
|
return false if cell.value == filter.val
|
|
47
47
|
end
|
|
@@ -76,12 +76,12 @@ module Axlsx
|
|
|
76
76
|
# Serialize the object to xml
|
|
77
77
|
def to_xml_string(str = '')
|
|
78
78
|
str << "<filters #{serialized_attributes}>"
|
|
79
|
-
filter_items.each {
|
|
79
|
+
filter_items.each { |filter| filter.to_xml_string(str) }
|
|
80
80
|
date_group_items.each { |date_group_item| date_group_item.to_xml_string(str) }
|
|
81
81
|
str << '</filters>'
|
|
82
82
|
end
|
|
83
83
|
|
|
84
|
-
# not entirely happy with this.
|
|
84
|
+
# not entirely happy with this.
|
|
85
85
|
# filter_items should be a simple typed list that overrides << etc
|
|
86
86
|
# to create Filter objects from the inserted values. However this
|
|
87
87
|
# is most likely so rarely used...(really? do you know that?)
|
|
@@ -98,13 +98,13 @@ module Axlsx
|
|
|
98
98
|
def date_group_items=(options)
|
|
99
99
|
options.each do |date_group|
|
|
100
100
|
raise ArgumentError, "date_group_items should be an array of hashes specifying the options for each date_group_item" unless date_group.is_a?(Hash)
|
|
101
|
+
|
|
101
102
|
date_group_items << DateGroupItem.new(date_group)
|
|
102
103
|
end
|
|
103
104
|
end
|
|
104
105
|
|
|
105
106
|
# This class expresses a filter criteria value.
|
|
106
107
|
class Filter
|
|
107
|
-
|
|
108
108
|
# Creates a new filter value object
|
|
109
109
|
# @param [Any] value The value of the filter. This is not restricted, but
|
|
110
110
|
# will be serialized via to_s so if you are passing an object
|
|
@@ -113,8 +113,7 @@ module Axlsx
|
|
|
113
113
|
@val = value
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
#Filter value used in the criteria.
|
|
116
|
+
# Filter value used in the criteria.
|
|
118
117
|
attr_accessor :val
|
|
119
118
|
|
|
120
119
|
# Serializes the filter value object
|
|
@@ -124,7 +123,6 @@ module Axlsx
|
|
|
124
123
|
end
|
|
125
124
|
end
|
|
126
125
|
|
|
127
|
-
|
|
128
126
|
# This collection is used to express a group of dates or times which are
|
|
129
127
|
# used in an AutoFilter criteria. Values are always written in the calendar
|
|
130
128
|
# type of the first date encountered in the filter range, so that all
|
|
@@ -132,7 +130,7 @@ module Axlsx
|
|
|
132
130
|
# types, can be correctly compared for the purposes of filtering.
|
|
133
131
|
class DateGroupItem
|
|
134
132
|
include Axlsx::OptionsParser
|
|
135
|
-
include Axlsx::SerializedAttributes
|
|
133
|
+
include Axlsx::SerializedAttributes
|
|
136
134
|
|
|
137
135
|
# Creates a new DateGroupItem
|
|
138
136
|
# @param [Hash] options A hash of options to use when
|
|
@@ -145,9 +143,10 @@ include Axlsx::SerializedAttributes
|
|
|
145
143
|
# @option [Integer] hour @see hour
|
|
146
144
|
# @option [Integer] minute @see minute
|
|
147
145
|
# @option [Integer] second @see second
|
|
148
|
-
def initialize(options={})
|
|
149
|
-
raise ArgumentError,
|
|
146
|
+
def initialize(options = {})
|
|
147
|
+
raise ArgumentError, "You must specify a year for date time grouping" unless options[:year]
|
|
150
148
|
raise ArgumentError, "You must specify a date_time_grouping when creating a DateGroupItem for auto filter" unless options[:date_time_grouping]
|
|
149
|
+
|
|
151
150
|
parse_options options
|
|
152
151
|
end
|
|
153
152
|
|
|
@@ -200,7 +199,7 @@ include Axlsx::SerializedAttributes
|
|
|
200
199
|
end
|
|
201
200
|
|
|
202
201
|
# The day value for the date group item
|
|
203
|
-
# This must be between 1 and 31
|
|
202
|
+
# This must be between 1 and 31
|
|
204
203
|
# @note no attempt is made to ensure the date value is valid for any given month
|
|
205
204
|
def day=(value)
|
|
206
205
|
RangeValidator.validate "DateGroupItem.day", 0, 31, value
|