caxlsx 3.0.4 → 3.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/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +354 -334
- data/LICENSE +21 -21
- data/README.md +168 -170
- data/Rakefile +29 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
- data/lib/axlsx/content_type/content_type.rb +26 -26
- data/lib/axlsx/content_type/default.rb +25 -25
- data/lib/axlsx/content_type/override.rb +25 -25
- data/lib/axlsx/doc_props/app.rb +235 -235
- data/lib/axlsx/doc_props/core.rb +39 -39
- data/lib/axlsx/drawing/area_chart.rb +99 -99
- data/lib/axlsx/drawing/area_series.rb +110 -110
- data/lib/axlsx/drawing/ax_data_source.rb +26 -26
- data/lib/axlsx/drawing/axes.rb +61 -61
- data/lib/axlsx/drawing/axis.rb +190 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +148 -151
- data/lib/axlsx/drawing/bar_chart.rb +138 -143
- data/lib/axlsx/drawing/bar_series.rb +97 -80
- data/lib/axlsx/drawing/bubble_chart.rb +59 -59
- data/lib/axlsx/drawing/bubble_series.rb +63 -63
- data/lib/axlsx/drawing/cat_axis.rb +85 -85
- data/lib/axlsx/drawing/chart.rb +276 -276
- data/lib/axlsx/drawing/d_lbls.rb +90 -90
- data/lib/axlsx/drawing/drawing.rb +167 -167
- data/lib/axlsx/drawing/graphic_frame.rb +54 -54
- data/lib/axlsx/drawing/hyperlink.rb +100 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
- data/lib/axlsx/drawing/line_chart.rb +99 -99
- data/lib/axlsx/drawing/line_series.rb +110 -110
- data/lib/axlsx/drawing/marker.rb +84 -84
- data/lib/axlsx/drawing/num_data.rb +52 -52
- data/lib/axlsx/drawing/num_data_source.rb +62 -62
- data/lib/axlsx/drawing/num_val.rb +34 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
- data/lib/axlsx/drawing/pic.rb +211 -211
- data/lib/axlsx/drawing/picture_locking.rb +42 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
- data/lib/axlsx/drawing/pie_series.rb +74 -74
- data/lib/axlsx/drawing/scaling.rb +60 -60
- data/lib/axlsx/drawing/scatter_chart.rb +74 -74
- data/lib/axlsx/drawing/scatter_series.rb +129 -98
- data/lib/axlsx/drawing/ser_axis.rb +45 -45
- data/lib/axlsx/drawing/series.rb +69 -69
- data/lib/axlsx/drawing/series_title.rb +25 -25
- data/lib/axlsx/drawing/str_data.rb +42 -42
- data/lib/axlsx/drawing/str_val.rb +34 -34
- data/lib/axlsx/drawing/title.rb +97 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
- data/lib/axlsx/drawing/val_axis.rb +37 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +42 -42
- data/lib/axlsx/drawing/vml_shape.rb +66 -66
- data/lib/axlsx/package.rb +388 -363
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -71
- data/lib/axlsx/stylesheet/border_pr.rb +71 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
- data/lib/axlsx/stylesheet/cell_style.rb +72 -72
- data/lib/axlsx/stylesheet/color.rb +76 -76
- data/lib/axlsx/stylesheet/dxf.rb +79 -79
- data/lib/axlsx/stylesheet/fill.rb +35 -35
- data/lib/axlsx/stylesheet/font.rb +156 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
- data/lib/axlsx/stylesheet/styles.rb +494 -420
- data/lib/axlsx/stylesheet/table_style.rb +54 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
- data/lib/axlsx/stylesheet/table_styles.rb +46 -46
- data/lib/axlsx/stylesheet/xf.rb +147 -147
- data/lib/axlsx/util/accessors.rb +64 -64
- data/lib/axlsx/util/constants.rb +410 -401
- data/lib/axlsx/util/mime_type_utils.rb +11 -11
- data/lib/axlsx/util/options_parser.rb +16 -16
- data/lib/axlsx/util/serialized_attributes.rb +89 -89
- data/lib/axlsx/util/simple_typed_list.rb +179 -179
- data/lib/axlsx/util/storage.rb +146 -146
- data/lib/axlsx/util/validators.rb +312 -312
- data/lib/axlsx/util/zip_command.rb +73 -73
- data/lib/axlsx/version.rb +5 -5
- data/lib/axlsx/workbook/defined_name.rb +128 -128
- data/lib/axlsx/workbook/defined_names.rb +21 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
- data/lib/axlsx/workbook/workbook.rb +395 -370
- data/lib/axlsx/workbook/workbook_view.rb +80 -80
- data/lib/axlsx/workbook/workbook_views.rb +22 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
- data/lib/axlsx/workbook/worksheet/col.rb +145 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
- data/lib/axlsx/workbook/worksheet/row.rb +164 -162
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
- data/lib/axlsx/workbook/worksheet/table.rb +102 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +185 -170
- data/lib/caxlsx.rb +2 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- data/test/benchmark.rb +72 -72
- data/test/content_type/tc_content_type.rb +76 -76
- data/test/content_type/tc_default.rb +16 -16
- data/test/content_type/tc_override.rb +14 -14
- data/test/doc_props/tc_app.rb +43 -43
- data/test/doc_props/tc_core.rb +42 -42
- data/test/drawing/tc_area_chart.rb +39 -39
- data/test/drawing/tc_area_series.rb +71 -71
- data/test/drawing/tc_axes.rb +7 -7
- data/test/drawing/tc_axis.rb +112 -112
- data/test/drawing/tc_bar_3D_chart.rb +86 -71
- data/test/drawing/tc_bar_chart.rb +86 -71
- data/test/drawing/tc_bar_series.rb +46 -37
- data/test/drawing/tc_bubble_chart.rb +44 -44
- data/test/drawing/tc_bubble_series.rb +21 -21
- data/test/drawing/tc_cat_axis.rb +31 -31
- data/test/drawing/tc_cat_axis_data.rb +27 -27
- data/test/drawing/tc_chart.rb +123 -123
- data/test/drawing/tc_d_lbls.rb +57 -57
- data/test/drawing/tc_data_source.rb +23 -23
- data/test/drawing/tc_drawing.rb +80 -80
- data/test/drawing/tc_graphic_frame.rb +27 -27
- data/test/drawing/tc_hyperlink.rb +64 -64
- data/test/drawing/tc_line_3d_chart.rb +47 -47
- data/test/drawing/tc_line_chart.rb +39 -39
- data/test/drawing/tc_line_series.rb +71 -71
- data/test/drawing/tc_marker.rb +44 -44
- data/test/drawing/tc_named_axis_data.rb +27 -27
- data/test/drawing/tc_num_data.rb +31 -31
- data/test/drawing/tc_num_val.rb +29 -29
- data/test/drawing/tc_one_cell_anchor.rb +66 -66
- data/test/drawing/tc_pic.rb +103 -103
- data/test/drawing/tc_picture_locking.rb +72 -72
- data/test/drawing/tc_pie_3D_chart.rb +28 -28
- data/test/drawing/tc_pie_series.rb +33 -33
- data/test/drawing/tc_scaling.rb +36 -36
- data/test/drawing/tc_scatter_chart.rb +48 -48
- data/test/drawing/tc_scatter_series.rb +74 -56
- data/test/drawing/tc_ser_axis.rb +31 -31
- data/test/drawing/tc_series.rb +23 -23
- data/test/drawing/tc_series_title.rb +54 -54
- data/test/drawing/tc_str_data.rb +18 -18
- data/test/drawing/tc_str_val.rb +30 -30
- data/test/drawing/tc_title.rb +70 -70
- data/test/drawing/tc_two_cell_anchor.rb +36 -36
- data/test/drawing/tc_val_axis.rb +24 -24
- data/test/drawing/tc_view_3D.rb +54 -54
- data/test/drawing/tc_vml_drawing.rb +25 -25
- data/test/drawing/tc_vml_shape.rb +106 -106
- data/test/profile.rb +24 -24
- data/test/rels/tc_relationship.rb +52 -52
- data/test/rels/tc_relationships.rb +37 -37
- data/test/stylesheet/tc_border.rb +37 -37
- data/test/stylesheet/tc_border_pr.rb +32 -32
- data/test/stylesheet/tc_cell_alignment.rb +81 -81
- data/test/stylesheet/tc_cell_protection.rb +29 -29
- data/test/stylesheet/tc_cell_style.rb +57 -57
- data/test/stylesheet/tc_color.rb +43 -43
- data/test/stylesheet/tc_dxf.rb +81 -81
- data/test/stylesheet/tc_fill.rb +18 -18
- data/test/stylesheet/tc_font.rb +133 -133
- data/test/stylesheet/tc_gradient_fill.rb +72 -72
- data/test/stylesheet/tc_gradient_stop.rb +31 -31
- data/test/stylesheet/tc_num_fmt.rb +30 -30
- data/test/stylesheet/tc_pattern_fill.rb +43 -43
- data/test/stylesheet/tc_styles.rb +309 -261
- data/test/stylesheet/tc_table_style.rb +44 -44
- data/test/stylesheet/tc_table_style_element.rb +45 -45
- data/test/stylesheet/tc_table_styles.rb +29 -29
- data/test/stylesheet/tc_xf.rb +120 -120
- data/test/tc_axlsx.rb +109 -109
- data/test/tc_helper.rb +10 -12
- data/test/tc_package.rb +317 -264
- data/test/util/tc_mime_type_utils.rb +13 -13
- data/test/util/tc_serialized_attributes.rb +19 -19
- data/test/util/tc_simple_typed_list.rb +77 -77
- data/test/util/tc_validators.rb +210 -210
- data/test/workbook/tc_defined_name.rb +49 -49
- data/test/workbook/tc_shared_strings_table.rb +59 -59
- data/test/workbook/tc_workbook.rb +165 -160
- data/test/workbook/tc_workbook_view.rb +50 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
- data/test/workbook/worksheet/tc_break.rb +49 -49
- data/test/workbook/worksheet/tc_cell.rb +465 -453
- data/test/workbook/worksheet/tc_cfvo.rb +31 -31
- data/test/workbook/worksheet/tc_col.rb +93 -93
- data/test/workbook/worksheet/tc_color_scale.rb +58 -58
- data/test/workbook/worksheet/tc_comment.rb +72 -72
- data/test/workbook/worksheet/tc_comments.rb +57 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
- data/test/workbook/worksheet/tc_data_bar.rb +46 -46
- data/test/workbook/worksheet/tc_data_validation.rb +265 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
- data/test/workbook/worksheet/tc_header_footer.rb +151 -151
- data/test/workbook/worksheet/tc_icon_set.rb +45 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
- data/test/workbook/worksheet/tc_page_margins.rb +97 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
- data/test/workbook/worksheet/tc_page_setup.rb +143 -143
- data/test/workbook/worksheet/tc_pane.rb +54 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
- data/test/workbook/worksheet/tc_print_options.rb +72 -72
- data/test/workbook/worksheet/tc_protected_range.rb +17 -17
- data/test/workbook/worksheet/tc_rich_text.rb +44 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
- data/test/workbook/worksheet/tc_row.rb +160 -139
- data/test/workbook/worksheet/tc_selection.rb +55 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
- data/test/workbook/worksheet/tc_table.rb +77 -67
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
- data/test/workbook/worksheet/tc_worksheet.rb +632 -601
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
- metadata +11 -11
@@ -1,246 +1,246 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Axlsx
|
3
|
-
# Data validation allows the validation of cell data
|
4
|
-
#
|
5
|
-
# @note The recommended way to manage data validations is via Worksheet#add_data_validation
|
6
|
-
# @see Worksheet#add_data_validation
|
7
|
-
class DataValidation
|
8
|
-
include Axlsx::OptionsParser
|
9
|
-
|
10
|
-
# Creates a new {DataValidation} object
|
11
|
-
# @option options [String] formula1
|
12
|
-
# @option options [String] formula2
|
13
|
-
# @option options [Boolean] allowBlank - A boolean value indicating whether the data validation allows the use of empty or blank entries.
|
14
|
-
# @option options [String] error - Message text of error alert.
|
15
|
-
# @option options [Symbol] errorStyle - The style of error alert used for this data validation.
|
16
|
-
# @option options [String] errorTitle - itle bar text of error alert.
|
17
|
-
# @option options [Symbol] operator - The relational operator used with this data validation.
|
18
|
-
# @option options [String] prompt - Message text of input prompt.
|
19
|
-
# @option options [String] promptTitle - Title bar text of input prompt.
|
20
|
-
# @option options [Boolean] showDropDown - A boolean value indicating whether to display a dropdown combo box for a list type data validation
|
21
|
-
# @option options [Boolean] showErrorMessage - A boolean value indicating whether to display the error alert message when an invalid value has been entered, according to the criteria specified.
|
22
|
-
# @option options [Boolean] showInputMessage - A boolean value indicating whether to display the input prompt message.
|
23
|
-
# @option options [String] sqref - Range over which data validation is applied, in "A1:B2" format.
|
24
|
-
# @option options [Symbol] type - The type of data validation.
|
25
|
-
def initialize(options={})
|
26
|
-
# defaults
|
27
|
-
@formula1 = @formula2 = @error = @errorTitle = @operator = @prompt = @promptTitle = @sqref = nil
|
28
|
-
@allowBlank = @showErrorMessage = true
|
29
|
-
@showDropDown = @showInputMessage = false
|
30
|
-
@type = :none
|
31
|
-
@errorStyle = :stop
|
32
|
-
parse_options options
|
33
|
-
end
|
34
|
-
|
35
|
-
# instance values that must be serialized as their own elements - e.g. not attributes.
|
36
|
-
CHILD_ELEMENTS = [:formula1, :formula2].freeze
|
37
|
-
|
38
|
-
# Formula1
|
39
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
40
|
-
# @see type
|
41
|
-
# @return [String]
|
42
|
-
# default nil
|
43
|
-
attr_reader :formula1
|
44
|
-
|
45
|
-
# Formula2
|
46
|
-
# Available for type whole, decimal, date, time, textLength
|
47
|
-
# @see type
|
48
|
-
# @return [String]
|
49
|
-
# default nil
|
50
|
-
attr_reader :formula2
|
51
|
-
|
52
|
-
# Allow Blank
|
53
|
-
# A boolean value indicating whether the data validation allows the use of empty or blank
|
54
|
-
# entries. 1 means empty entries are OK and do not violate the validation constraints.
|
55
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
56
|
-
# @see type
|
57
|
-
# @return [Boolean]
|
58
|
-
# default true
|
59
|
-
attr_reader :allowBlank
|
60
|
-
|
61
|
-
# Error Message
|
62
|
-
# Message text of error alert.
|
63
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
64
|
-
# @see type
|
65
|
-
# @return [String]
|
66
|
-
# default nil
|
67
|
-
attr_reader :error
|
68
|
-
|
69
|
-
# Error Style (ST_DataValidationErrorStyle)
|
70
|
-
# The style of error alert used for this data validation.
|
71
|
-
# Options are:
|
72
|
-
# * information: This data validation error style uses an information icon in the error alert.
|
73
|
-
# * stop: This data validation error style uses a stop icon in the error alert.
|
74
|
-
# * warning: This data validation error style uses a warning icon in the error alert.
|
75
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
76
|
-
# @see type
|
77
|
-
# @return [Symbol]
|
78
|
-
# default :stop
|
79
|
-
attr_reader :errorStyle
|
80
|
-
|
81
|
-
# Error Title
|
82
|
-
# Title bar text of error alert.
|
83
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
84
|
-
# @see type
|
85
|
-
# @return [String]
|
86
|
-
# default nil
|
87
|
-
attr_reader :errorTitle
|
88
|
-
|
89
|
-
# Operator (ST_DataValidationOperator)
|
90
|
-
# The relational operator used with this data validation.
|
91
|
-
# Options are:
|
92
|
-
# * between: Data validation which checks if a value is between two other values.
|
93
|
-
# * equal: Data validation which checks if a value is equal to a specified value.
|
94
|
-
# * greater_than: Data validation which checks if a value is greater than a specified value.
|
95
|
-
# * greater_than_or_equal: Data validation which checks if a value is greater than or equal to a specified value.
|
96
|
-
# * less_than: Data validation which checks if a value is less than a specified value.
|
97
|
-
# * less_than_or_equal: Data validation which checks if a value is less than or equal to a specified value.
|
98
|
-
# * not_between: Data validation which checks if a value is not between two other values.
|
99
|
-
# * not_equal: Data validation which checks if a value is not equal to a specified value.
|
100
|
-
# Available for type whole, decimal, date, time, textLength
|
101
|
-
# @see type
|
102
|
-
# @return [Symbol]
|
103
|
-
# default nil
|
104
|
-
attr_reader :operator
|
105
|
-
|
106
|
-
# Input prompt
|
107
|
-
# Message text of input prompt.
|
108
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
109
|
-
# @see type
|
110
|
-
# @return [String]
|
111
|
-
# default nil
|
112
|
-
attr_reader :prompt
|
113
|
-
|
114
|
-
# Prompt title
|
115
|
-
# Title bar text of input prompt.
|
116
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
117
|
-
# @see type
|
118
|
-
# @return [String]
|
119
|
-
# default nil
|
120
|
-
attr_reader :promptTitle
|
121
|
-
|
122
|
-
# Show drop down
|
123
|
-
# A boolean value indicating whether to display a dropdown combo box for a list type data
|
124
|
-
# validation. Be careful: false shows the dropdown list!
|
125
|
-
# Available for type list
|
126
|
-
# @see type
|
127
|
-
# @return [Boolean]
|
128
|
-
# default false
|
129
|
-
attr_reader :showDropDown
|
130
|
-
|
131
|
-
# Show error message
|
132
|
-
# A boolean value indicating whether to display the error alert message when an invalid
|
133
|
-
# value has been entered, according to the criteria specified.
|
134
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
135
|
-
# @see type
|
136
|
-
# @return [Boolean]
|
137
|
-
# default false
|
138
|
-
attr_reader :showErrorMessage
|
139
|
-
|
140
|
-
# Show input message
|
141
|
-
# A boolean value indicating whether to display the input prompt message.
|
142
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
143
|
-
# @see type
|
144
|
-
# @return [Boolean]
|
145
|
-
# default false
|
146
|
-
attr_reader :showInputMessage
|
147
|
-
|
148
|
-
# Range over which data validation is applied, in "A1:B2" format
|
149
|
-
# Available for type whole, decimal, date, time, textLength, list, custom
|
150
|
-
# @see type
|
151
|
-
# @return [String]
|
152
|
-
# default nil
|
153
|
-
attr_reader :sqref
|
154
|
-
|
155
|
-
# The type (ST_DataValidationType) of data validation.
|
156
|
-
# Options are:
|
157
|
-
# * custom: Data validation which uses a custom formula to check the cell value.
|
158
|
-
# * date: Data validation which checks for date values satisfying the given condition.
|
159
|
-
# * decimal: Data validation which checks for decimal values satisfying the given condition.
|
160
|
-
# * list: Data validation which checks for a value matching one of list of values.
|
161
|
-
# * none: No data validation.
|
162
|
-
# * textLength: Data validation which checks for text values, whose length satisfies the given condition.
|
163
|
-
# * time: Data validation which checks for time values satisfying the given condition.
|
164
|
-
# * whole: Data validation which checks for whole number values satisfying the given condition.
|
165
|
-
# @return [Symbol]
|
166
|
-
# default none
|
167
|
-
attr_reader :type
|
168
|
-
|
169
|
-
|
170
|
-
# @see formula1
|
171
|
-
def formula1=(v); Axlsx::validate_string(v); @formula1 = v end
|
172
|
-
|
173
|
-
# @see formula2
|
174
|
-
def formula2=(v); Axlsx::validate_string(v); @formula2 = v end
|
175
|
-
|
176
|
-
# @see allowBlank
|
177
|
-
def allowBlank=(v); Axlsx::validate_boolean(v); @allowBlank = v end
|
178
|
-
|
179
|
-
# @see error
|
180
|
-
def error=(v); Axlsx::validate_string(v); @error = v end
|
181
|
-
|
182
|
-
# @see errorStyle
|
183
|
-
def errorStyle=(v); Axlsx::validate_data_validation_error_style(v); @errorStyle = v end
|
184
|
-
|
185
|
-
# @see errorTitle
|
186
|
-
def errorTitle=(v); Axlsx::validate_string(v); @errorTitle = v end
|
187
|
-
|
188
|
-
# @see operator
|
189
|
-
def operator=(v); Axlsx::validate_data_validation_operator(v); @operator = v end
|
190
|
-
|
191
|
-
# @see prompt
|
192
|
-
def prompt=(v); Axlsx::validate_string(v); @prompt = v end
|
193
|
-
|
194
|
-
# @see promptTitle
|
195
|
-
def promptTitle=(v); Axlsx::validate_string(v); @promptTitle = v end
|
196
|
-
|
197
|
-
# @see showDropDown
|
198
|
-
def showDropDown=(v); Axlsx::validate_boolean(v); @showDropDown = v end
|
199
|
-
|
200
|
-
# @see showErrorMessage
|
201
|
-
def showErrorMessage=(v); Axlsx::validate_boolean(v); @showErrorMessage = v end
|
202
|
-
|
203
|
-
# @see showInputMessage
|
204
|
-
def showInputMessage=(v); Axlsx::validate_boolean(v); @showInputMessage = v end
|
205
|
-
|
206
|
-
# @see sqref
|
207
|
-
def sqref=(v); Axlsx::validate_string(v); @sqref = v end
|
208
|
-
|
209
|
-
# @see type
|
210
|
-
def type=(v); Axlsx::validate_data_validation_type(v); @type = v end
|
211
|
-
|
212
|
-
# Serializes the data validation
|
213
|
-
# @param [String] str
|
214
|
-
# @return [String]
|
215
|
-
def to_xml_string(str = '')
|
216
|
-
valid_attributes = get_valid_attributes
|
217
|
-
|
218
|
-
str << '<dataValidation '
|
219
|
-
str << instance_values.map do |key, value|
|
220
|
-
'' << key << '="' << Axlsx.booleanize(value).to_s << '"' if (valid_attributes.include?(key.to_sym) && !CHILD_ELEMENTS.include?(key.to_sym))
|
221
|
-
end.join(' ')
|
222
|
-
str << '>'
|
223
|
-
str << ('<formula1>' << self.formula1 << '</formula1>') if @formula1 and valid_attributes.include?(:formula1)
|
224
|
-
str << ('<formula2>' << self.formula2 << '</formula2>') if @formula2 and valid_attributes.include?(:formula2)
|
225
|
-
str << '</dataValidation>'
|
226
|
-
end
|
227
|
-
|
228
|
-
private
|
229
|
-
def get_valid_attributes
|
230
|
-
attributes = [:allowBlank, :error, :errorStyle, :errorTitle, :prompt, :promptTitle, :showErrorMessage, :showInputMessage, :sqref, :type ]
|
231
|
-
|
232
|
-
if [:whole, :decimal, :data, :time, :date, :textLength].include?(@type)
|
233
|
-
attributes << [:operator, :formula1]
|
234
|
-
attributes << [:formula2] if [:between, :notBetween].include?(@operator)
|
235
|
-
elsif @type == :list
|
236
|
-
attributes << [:showDropDown, :formula1]
|
237
|
-
elsif @type == :custom
|
238
|
-
attributes << [:formula1]
|
239
|
-
else
|
240
|
-
attributes = []
|
241
|
-
end
|
242
|
-
|
243
|
-
attributes.flatten!
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Axlsx
|
3
|
+
# Data validation allows the validation of cell data
|
4
|
+
#
|
5
|
+
# @note The recommended way to manage data validations is via Worksheet#add_data_validation
|
6
|
+
# @see Worksheet#add_data_validation
|
7
|
+
class DataValidation
|
8
|
+
include Axlsx::OptionsParser
|
9
|
+
|
10
|
+
# Creates a new {DataValidation} object
|
11
|
+
# @option options [String] formula1
|
12
|
+
# @option options [String] formula2
|
13
|
+
# @option options [Boolean] allowBlank - A boolean value indicating whether the data validation allows the use of empty or blank entries.
|
14
|
+
# @option options [String] error - Message text of error alert.
|
15
|
+
# @option options [Symbol] errorStyle - The style of error alert used for this data validation.
|
16
|
+
# @option options [String] errorTitle - itle bar text of error alert.
|
17
|
+
# @option options [Symbol] operator - The relational operator used with this data validation.
|
18
|
+
# @option options [String] prompt - Message text of input prompt.
|
19
|
+
# @option options [String] promptTitle - Title bar text of input prompt.
|
20
|
+
# @option options [Boolean] showDropDown - A boolean value indicating whether to display a dropdown combo box for a list type data validation
|
21
|
+
# @option options [Boolean] showErrorMessage - A boolean value indicating whether to display the error alert message when an invalid value has been entered, according to the criteria specified.
|
22
|
+
# @option options [Boolean] showInputMessage - A boolean value indicating whether to display the input prompt message.
|
23
|
+
# @option options [String] sqref - Range over which data validation is applied, in "A1:B2" format.
|
24
|
+
# @option options [Symbol] type - The type of data validation.
|
25
|
+
def initialize(options={})
|
26
|
+
# defaults
|
27
|
+
@formula1 = @formula2 = @error = @errorTitle = @operator = @prompt = @promptTitle = @sqref = nil
|
28
|
+
@allowBlank = @showErrorMessage = true
|
29
|
+
@showDropDown = @showInputMessage = false
|
30
|
+
@type = :none
|
31
|
+
@errorStyle = :stop
|
32
|
+
parse_options options
|
33
|
+
end
|
34
|
+
|
35
|
+
# instance values that must be serialized as their own elements - e.g. not attributes.
|
36
|
+
CHILD_ELEMENTS = [:formula1, :formula2].freeze
|
37
|
+
|
38
|
+
# Formula1
|
39
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
40
|
+
# @see type
|
41
|
+
# @return [String]
|
42
|
+
# default nil
|
43
|
+
attr_reader :formula1
|
44
|
+
|
45
|
+
# Formula2
|
46
|
+
# Available for type whole, decimal, date, time, textLength
|
47
|
+
# @see type
|
48
|
+
# @return [String]
|
49
|
+
# default nil
|
50
|
+
attr_reader :formula2
|
51
|
+
|
52
|
+
# Allow Blank
|
53
|
+
# A boolean value indicating whether the data validation allows the use of empty or blank
|
54
|
+
# entries. 1 means empty entries are OK and do not violate the validation constraints.
|
55
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
56
|
+
# @see type
|
57
|
+
# @return [Boolean]
|
58
|
+
# default true
|
59
|
+
attr_reader :allowBlank
|
60
|
+
|
61
|
+
# Error Message
|
62
|
+
# Message text of error alert.
|
63
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
64
|
+
# @see type
|
65
|
+
# @return [String]
|
66
|
+
# default nil
|
67
|
+
attr_reader :error
|
68
|
+
|
69
|
+
# Error Style (ST_DataValidationErrorStyle)
|
70
|
+
# The style of error alert used for this data validation.
|
71
|
+
# Options are:
|
72
|
+
# * information: This data validation error style uses an information icon in the error alert.
|
73
|
+
# * stop: This data validation error style uses a stop icon in the error alert.
|
74
|
+
# * warning: This data validation error style uses a warning icon in the error alert.
|
75
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
76
|
+
# @see type
|
77
|
+
# @return [Symbol]
|
78
|
+
# default :stop
|
79
|
+
attr_reader :errorStyle
|
80
|
+
|
81
|
+
# Error Title
|
82
|
+
# Title bar text of error alert.
|
83
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
84
|
+
# @see type
|
85
|
+
# @return [String]
|
86
|
+
# default nil
|
87
|
+
attr_reader :errorTitle
|
88
|
+
|
89
|
+
# Operator (ST_DataValidationOperator)
|
90
|
+
# The relational operator used with this data validation.
|
91
|
+
# Options are:
|
92
|
+
# * between: Data validation which checks if a value is between two other values.
|
93
|
+
# * equal: Data validation which checks if a value is equal to a specified value.
|
94
|
+
# * greater_than: Data validation which checks if a value is greater than a specified value.
|
95
|
+
# * greater_than_or_equal: Data validation which checks if a value is greater than or equal to a specified value.
|
96
|
+
# * less_than: Data validation which checks if a value is less than a specified value.
|
97
|
+
# * less_than_or_equal: Data validation which checks if a value is less than or equal to a specified value.
|
98
|
+
# * not_between: Data validation which checks if a value is not between two other values.
|
99
|
+
# * not_equal: Data validation which checks if a value is not equal to a specified value.
|
100
|
+
# Available for type whole, decimal, date, time, textLength
|
101
|
+
# @see type
|
102
|
+
# @return [Symbol]
|
103
|
+
# default nil
|
104
|
+
attr_reader :operator
|
105
|
+
|
106
|
+
# Input prompt
|
107
|
+
# Message text of input prompt.
|
108
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
109
|
+
# @see type
|
110
|
+
# @return [String]
|
111
|
+
# default nil
|
112
|
+
attr_reader :prompt
|
113
|
+
|
114
|
+
# Prompt title
|
115
|
+
# Title bar text of input prompt.
|
116
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
117
|
+
# @see type
|
118
|
+
# @return [String]
|
119
|
+
# default nil
|
120
|
+
attr_reader :promptTitle
|
121
|
+
|
122
|
+
# Show drop down
|
123
|
+
# A boolean value indicating whether to display a dropdown combo box for a list type data
|
124
|
+
# validation. Be careful: false shows the dropdown list!
|
125
|
+
# Available for type list
|
126
|
+
# @see type
|
127
|
+
# @return [Boolean]
|
128
|
+
# default false
|
129
|
+
attr_reader :showDropDown
|
130
|
+
|
131
|
+
# Show error message
|
132
|
+
# A boolean value indicating whether to display the error alert message when an invalid
|
133
|
+
# value has been entered, according to the criteria specified.
|
134
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
135
|
+
# @see type
|
136
|
+
# @return [Boolean]
|
137
|
+
# default false
|
138
|
+
attr_reader :showErrorMessage
|
139
|
+
|
140
|
+
# Show input message
|
141
|
+
# A boolean value indicating whether to display the input prompt message.
|
142
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
143
|
+
# @see type
|
144
|
+
# @return [Boolean]
|
145
|
+
# default false
|
146
|
+
attr_reader :showInputMessage
|
147
|
+
|
148
|
+
# Range over which data validation is applied, in "A1:B2" format
|
149
|
+
# Available for type whole, decimal, date, time, textLength, list, custom
|
150
|
+
# @see type
|
151
|
+
# @return [String]
|
152
|
+
# default nil
|
153
|
+
attr_reader :sqref
|
154
|
+
|
155
|
+
# The type (ST_DataValidationType) of data validation.
|
156
|
+
# Options are:
|
157
|
+
# * custom: Data validation which uses a custom formula to check the cell value.
|
158
|
+
# * date: Data validation which checks for date values satisfying the given condition.
|
159
|
+
# * decimal: Data validation which checks for decimal values satisfying the given condition.
|
160
|
+
# * list: Data validation which checks for a value matching one of list of values.
|
161
|
+
# * none: No data validation.
|
162
|
+
# * textLength: Data validation which checks for text values, whose length satisfies the given condition.
|
163
|
+
# * time: Data validation which checks for time values satisfying the given condition.
|
164
|
+
# * whole: Data validation which checks for whole number values satisfying the given condition.
|
165
|
+
# @return [Symbol]
|
166
|
+
# default none
|
167
|
+
attr_reader :type
|
168
|
+
|
169
|
+
|
170
|
+
# @see formula1
|
171
|
+
def formula1=(v); Axlsx::validate_string(v); @formula1 = v end
|
172
|
+
|
173
|
+
# @see formula2
|
174
|
+
def formula2=(v); Axlsx::validate_string(v); @formula2 = v end
|
175
|
+
|
176
|
+
# @see allowBlank
|
177
|
+
def allowBlank=(v); Axlsx::validate_boolean(v); @allowBlank = v end
|
178
|
+
|
179
|
+
# @see error
|
180
|
+
def error=(v); Axlsx::validate_string(v); @error = v end
|
181
|
+
|
182
|
+
# @see errorStyle
|
183
|
+
def errorStyle=(v); Axlsx::validate_data_validation_error_style(v); @errorStyle = v end
|
184
|
+
|
185
|
+
# @see errorTitle
|
186
|
+
def errorTitle=(v); Axlsx::validate_string(v); @errorTitle = v end
|
187
|
+
|
188
|
+
# @see operator
|
189
|
+
def operator=(v); Axlsx::validate_data_validation_operator(v); @operator = v end
|
190
|
+
|
191
|
+
# @see prompt
|
192
|
+
def prompt=(v); Axlsx::validate_string(v); @prompt = v end
|
193
|
+
|
194
|
+
# @see promptTitle
|
195
|
+
def promptTitle=(v); Axlsx::validate_string(v); @promptTitle = v end
|
196
|
+
|
197
|
+
# @see showDropDown
|
198
|
+
def showDropDown=(v); Axlsx::validate_boolean(v); @showDropDown = v end
|
199
|
+
|
200
|
+
# @see showErrorMessage
|
201
|
+
def showErrorMessage=(v); Axlsx::validate_boolean(v); @showErrorMessage = v end
|
202
|
+
|
203
|
+
# @see showInputMessage
|
204
|
+
def showInputMessage=(v); Axlsx::validate_boolean(v); @showInputMessage = v end
|
205
|
+
|
206
|
+
# @see sqref
|
207
|
+
def sqref=(v); Axlsx::validate_string(v); @sqref = v end
|
208
|
+
|
209
|
+
# @see type
|
210
|
+
def type=(v); Axlsx::validate_data_validation_type(v); @type = v end
|
211
|
+
|
212
|
+
# Serializes the data validation
|
213
|
+
# @param [String] str
|
214
|
+
# @return [String]
|
215
|
+
def to_xml_string(str = '')
|
216
|
+
valid_attributes = get_valid_attributes
|
217
|
+
|
218
|
+
str << '<dataValidation '
|
219
|
+
str << instance_values.map do |key, value|
|
220
|
+
'' << key << '="' << Axlsx.booleanize(value).to_s << '"' if (valid_attributes.include?(key.to_sym) && !CHILD_ELEMENTS.include?(key.to_sym))
|
221
|
+
end.join(' ')
|
222
|
+
str << '>'
|
223
|
+
str << ('<formula1>' << self.formula1 << '</formula1>') if @formula1 and valid_attributes.include?(:formula1)
|
224
|
+
str << ('<formula2>' << self.formula2 << '</formula2>') if @formula2 and valid_attributes.include?(:formula2)
|
225
|
+
str << '</dataValidation>'
|
226
|
+
end
|
227
|
+
|
228
|
+
private
|
229
|
+
def get_valid_attributes
|
230
|
+
attributes = [:allowBlank, :error, :errorStyle, :errorTitle, :prompt, :promptTitle, :showErrorMessage, :showInputMessage, :sqref, :type ]
|
231
|
+
|
232
|
+
if [:whole, :decimal, :data, :time, :date, :textLength].include?(@type)
|
233
|
+
attributes << [:operator, :formula1]
|
234
|
+
attributes << [:formula2] if [:between, :notBetween].include?(@operator)
|
235
|
+
elsif @type == :list
|
236
|
+
attributes << [:showDropDown, :formula1]
|
237
|
+
elsif @type == :custom
|
238
|
+
attributes << [:formula1]
|
239
|
+
else
|
240
|
+
attributes = []
|
241
|
+
end
|
242
|
+
|
243
|
+
attributes.flatten!
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
@@ -1,28 +1,28 @@
|
|
1
|
-
module Axlsx
|
2
|
-
|
3
|
-
# A simple, self serializing class for storing conditional formattings
|
4
|
-
class DataValidations < SimpleTypedList
|
5
|
-
|
6
|
-
# creates a new Tables object
|
7
|
-
def initialize(worksheet)
|
8
|
-
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
9
|
-
super DataValidation
|
10
|
-
@worksheet = worksheet
|
11
|
-
end
|
12
|
-
|
13
|
-
# The worksheet that owns this collection of tables
|
14
|
-
# @return [Worksheet]
|
15
|
-
attr_reader :worksheet
|
16
|
-
|
17
|
-
# serialize the conditional formattings
|
18
|
-
def to_xml_string(str = "")
|
19
|
-
return if empty?
|
20
|
-
str << "<dataValidations count='#{size}'>"
|
21
|
-
each { |item| item.to_xml_string(str) }
|
22
|
-
str << '</dataValidations>'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# A simple, self serializing class for storing conditional formattings
|
4
|
+
class DataValidations < SimpleTypedList
|
5
|
+
|
6
|
+
# creates a new Tables object
|
7
|
+
def initialize(worksheet)
|
8
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
9
|
+
super DataValidation
|
10
|
+
@worksheet = worksheet
|
11
|
+
end
|
12
|
+
|
13
|
+
# The worksheet that owns this collection of tables
|
14
|
+
# @return [Worksheet]
|
15
|
+
attr_reader :worksheet
|
16
|
+
|
17
|
+
# serialize the conditional formattings
|
18
|
+
def to_xml_string(str = "")
|
19
|
+
return if empty?
|
20
|
+
str << "<dataValidations count='#{size}'>"
|
21
|
+
each { |item| item.to_xml_string(str) }
|
22
|
+
str << '</dataValidations>'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
|
@@ -1,30 +1,30 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require "date"
|
3
|
-
|
4
|
-
module Axlsx
|
5
|
-
# The DateTimeConverter class converts both data and time types to their apprpriate excel serializations
|
6
|
-
class DateTimeConverter
|
7
|
-
|
8
|
-
# The date_to_serial method converts Date objects to the equivelant excel serialized forms
|
9
|
-
# @param [Date] date the date to be serialized
|
10
|
-
# @return [Numeric]
|
11
|
-
def self.date_to_serial(date)
|
12
|
-
epoch = Axlsx::Workbook::date1904 ? Date.new(1904) : Date.new(1899, 12, 30)
|
13
|
-
offset_date = date.respond_to?(:utc_offset) ? date + date.utc_offset.seconds : date
|
14
|
-
(offset_date - epoch).to_f
|
15
|
-
end
|
16
|
-
|
17
|
-
# The time_to_serial methond converts a Time object its excel serialized form.
|
18
|
-
# @param [Time] time the time to be serialized
|
19
|
-
# @return [Numeric]
|
20
|
-
def self.time_to_serial(time)
|
21
|
-
# Using hardcoded offsets here as some operating systems will not except
|
22
|
-
# a 'negative' offset from the ruby epoch.
|
23
|
-
epoch1900 = -2209161600.0 # Time.utc(1899, 12, 30).to_i
|
24
|
-
epoch1904 = -2082844800.0 # Time.utc(1904, 1, 1).to_i
|
25
|
-
seconds_per_day = 86400.0 # 60*60*24
|
26
|
-
epoch = Axlsx::Workbook::date1904 ? epoch1904 : epoch1900
|
27
|
-
(time.utc_offset + time.to_f - epoch)/seconds_per_day
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
1
|
+
# encoding: UTF-8
|
2
|
+
require "date"
|
3
|
+
|
4
|
+
module Axlsx
|
5
|
+
# The DateTimeConverter class converts both data and time types to their apprpriate excel serializations
|
6
|
+
class DateTimeConverter
|
7
|
+
|
8
|
+
# The date_to_serial method converts Date objects to the equivelant excel serialized forms
|
9
|
+
# @param [Date] date the date to be serialized
|
10
|
+
# @return [Numeric]
|
11
|
+
def self.date_to_serial(date)
|
12
|
+
epoch = Axlsx::Workbook::date1904 ? Date.new(1904) : Date.new(1899, 12, 30)
|
13
|
+
offset_date = date.respond_to?(:utc_offset) ? date + date.utc_offset.seconds : date
|
14
|
+
(offset_date - epoch).to_f
|
15
|
+
end
|
16
|
+
|
17
|
+
# The time_to_serial methond converts a Time object its excel serialized form.
|
18
|
+
# @param [Time] time the time to be serialized
|
19
|
+
# @return [Numeric]
|
20
|
+
def self.time_to_serial(time)
|
21
|
+
# Using hardcoded offsets here as some operating systems will not except
|
22
|
+
# a 'negative' offset from the ruby epoch.
|
23
|
+
epoch1900 = -2209161600.0 # Time.utc(1899, 12, 30).to_i
|
24
|
+
epoch1904 = -2082844800.0 # Time.utc(1904, 1, 1).to_i
|
25
|
+
seconds_per_day = 86400.0 # 60*60*24
|
26
|
+
epoch = Axlsx::Workbook::date1904 ? epoch1904 : epoch1900
|
27
|
+
(time.utc_offset + time.to_f - epoch)/seconds_per_day
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|