caxlsx 3.2.0 → 3.3.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 +385 -354
- data/LICENSE +21 -21
- data/README.md +165 -168
- 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 -148
- data/lib/axlsx/drawing/bar_chart.rb +138 -138
- data/lib/axlsx/drawing/bar_series.rb +97 -97
- 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 +299 -276
- data/lib/axlsx/drawing/d_lbls.rb +91 -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 -129
- 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 +107 -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 +398 -388
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -73
- 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 +535 -494
- 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 +416 -410
- 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 +425 -395
- 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/border_creator.rb +76 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
- 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 +267 -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 +335 -296
- 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 -164
- 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 +829 -786
- 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 +204 -185
- 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
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
|
@@ -1,220 +1,220 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
module Axlsx
|
|
3
|
-
# Conditional formatting rules specify formulas whose evaluations
|
|
4
|
-
# format cells
|
|
5
|
-
#
|
|
6
|
-
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
7
|
-
# @see Worksheet#add_conditional_formatting
|
|
8
|
-
# @see ConditionalFormattingRule#initialize
|
|
9
|
-
class ConditionalFormattingRule
|
|
10
|
-
|
|
11
|
-
include Axlsx::OptionsParser
|
|
12
|
-
include Axlsx::SerializedAttributes
|
|
13
|
-
|
|
14
|
-
# Creates a new Conditional Formatting Rule object
|
|
15
|
-
# @option options [Symbol] type The type of this formatting rule
|
|
16
|
-
# @option options [Boolean] aboveAverage This is an aboveAverage rule
|
|
17
|
-
# @option options [Boolean] bottom This is a bottom N rule.
|
|
18
|
-
# @option options [Integer] dxfId The formatting id to apply to matches
|
|
19
|
-
# @option options [Boolean] equalAverage Is the aboveAverage or belowAverage rule inclusive
|
|
20
|
-
# @option options [Integer] priority The priority of the rule, 1 is highest
|
|
21
|
-
# @option options [Symbol] operator Which operator to apply
|
|
22
|
-
# @option options [String] text The value to apply a text operator against
|
|
23
|
-
# @option options [Boolean] percent If a top/bottom N rule, evaluate as N% rather than N
|
|
24
|
-
# @option options [Integer] rank If a top/bottom N rule, the value of N
|
|
25
|
-
# @option options [Integer] stdDev The number of standard deviations above or below the average to match
|
|
26
|
-
# @option options [Boolean] stopIfTrue Stop evaluating rules after this rule matches
|
|
27
|
-
# @option options [Symbol] timePeriod The time period in a date occuring... rule
|
|
28
|
-
# @option options [String] formula The formula to match against in i.e. an equal rule. Use a [minimum, maximum] array for cellIs between/notBetween conditionals.
|
|
29
|
-
def initialize(options={})
|
|
30
|
-
@color_scale = @data_bar = @icon_set = @formula = nil
|
|
31
|
-
parse_options options
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
serializable_attributes :type, :aboveAverage, :bottom, :dxfId, :equalAverage,
|
|
35
|
-
:priority, :operator, :text, :percent, :rank, :stdDev,
|
|
36
|
-
:stopIfTrue, :timePeriod
|
|
37
|
-
|
|
38
|
-
# Formula
|
|
39
|
-
# The formula or value to match against (e.g. 5 with an operator of :greaterThan to specify cell_value > 5).
|
|
40
|
-
# If the operator is :between or :notBetween, use an array to specify [minimum, maximum]
|
|
41
|
-
# @return [String]
|
|
42
|
-
attr_reader :formula
|
|
43
|
-
|
|
44
|
-
# Type (ST_CfType)
|
|
45
|
-
# options are expression, cellIs, colorScale, dataBar, iconSet,
|
|
46
|
-
# top10, uniqueValues, duplicateValues, containsText,
|
|
47
|
-
# notContainsText, beginsWith, endsWith, containsBlanks,
|
|
48
|
-
# notContainsBlanks, containsErrors, notContainsErrors,
|
|
49
|
-
# timePeriod, aboveAverage
|
|
50
|
-
# @return [Symbol]
|
|
51
|
-
attr_reader :type
|
|
52
|
-
|
|
53
|
-
# Above average rule
|
|
54
|
-
# Indicates whether the rule is an "above average" rule. True
|
|
55
|
-
# indicates 'above average'. This attribute is ignored if type is
|
|
56
|
-
# not equal to aboveAverage.
|
|
57
|
-
# @return [Boolean]
|
|
58
|
-
attr_reader :aboveAverage
|
|
59
|
-
|
|
60
|
-
# Bottom N rule
|
|
61
|
-
# @return [Boolean]
|
|
62
|
-
attr_reader :bottom
|
|
63
|
-
|
|
64
|
-
# Differential Formatting Id
|
|
65
|
-
# @return [Integer]
|
|
66
|
-
attr_reader :dxfId
|
|
67
|
-
|
|
68
|
-
# Equal Average
|
|
69
|
-
# Flag indicating whether the 'aboveAverage' and 'belowAverage'
|
|
70
|
-
# criteria is inclusive of the average itself, or exclusive of
|
|
71
|
-
# that value.
|
|
72
|
-
# @return [Boolean]
|
|
73
|
-
attr_reader :equalAverage
|
|
74
|
-
|
|
75
|
-
# Operator
|
|
76
|
-
# The operator in a "cell value is" conditional formatting
|
|
77
|
-
# rule. This attribute is ignored if type is not equal to cellIs
|
|
78
|
-
#
|
|
79
|
-
# Operator must be one of lessThan, lessThanOrEqual, equal,
|
|
80
|
-
# notEqual, greaterThanOrEqual, greaterThan, between, notBetween,
|
|
81
|
-
# containsText, notContains, beginsWith, endsWith
|
|
82
|
-
# @return [Symbol]
|
|
83
|
-
attr_reader :operator
|
|
84
|
-
|
|
85
|
-
# Priority
|
|
86
|
-
# The priority of this conditional formatting rule. This value is
|
|
87
|
-
# used to determine which format should be evaluated and
|
|
88
|
-
# rendered. Lower numeric values are higher priority than higher
|
|
89
|
-
# numeric values, where '1' is the highest priority.
|
|
90
|
-
# @return [Integer]
|
|
91
|
-
attr_reader :priority
|
|
92
|
-
|
|
93
|
-
# Text
|
|
94
|
-
# used in a "text contains" conditional formatting
|
|
95
|
-
# rule.
|
|
96
|
-
# @return [String]
|
|
97
|
-
attr_reader :text
|
|
98
|
-
|
|
99
|
-
# percent (Top 10 Percent)
|
|
100
|
-
# indicates whether a "top/bottom n" rule is a "top/bottom n
|
|
101
|
-
# percent" rule. This attribute is ignored if type is not equal to
|
|
102
|
-
# top10.
|
|
103
|
-
# @return [Boolean]
|
|
104
|
-
attr_reader :percent
|
|
105
|
-
|
|
106
|
-
# rank (Rank)
|
|
107
|
-
# The value of "n" in a "top/bottom n" conditional formatting
|
|
108
|
-
# rule. This attribute is ignored if type is not equal to top10.
|
|
109
|
-
# @return [Integer]
|
|
110
|
-
attr_reader :rank
|
|
111
|
-
|
|
112
|
-
# stdDev (StdDev)
|
|
113
|
-
# The number of standard deviations to include above or below the
|
|
114
|
-
# average in the conditional formatting rule. This attribute is
|
|
115
|
-
# ignored if type is not equal to aboveAverage. If a value is
|
|
116
|
-
# present for stdDev and the rule type = aboveAverage, then this
|
|
117
|
-
# rule is automatically an "above or below N standard deviations"
|
|
118
|
-
# rule.
|
|
119
|
-
# @return [Integer]
|
|
120
|
-
attr_reader :stdDev
|
|
121
|
-
|
|
122
|
-
# stopIfTrue (Stop If True)
|
|
123
|
-
# If this flag is '1', no rules with lower priority shall be
|
|
124
|
-
# applied over this rule, when this rule evaluates to true.
|
|
125
|
-
# @return [Boolean]
|
|
126
|
-
attr_reader :stopIfTrue
|
|
127
|
-
|
|
128
|
-
# timePeriod (Time Period)
|
|
129
|
-
# The applicable time period in a "date occurring…" conditional
|
|
130
|
-
# formatting rule. This attribute is ignored if type is not equal
|
|
131
|
-
# to timePeriod.
|
|
132
|
-
# Valid types are today, yesterday, tomorrow, last7Days,
|
|
133
|
-
# thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
|
|
134
|
-
attr_reader :timePeriod
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
# colorScale (Color Scale)
|
|
138
|
-
# The color scale to apply to this conditional formatting
|
|
139
|
-
# @return [ColorScale]
|
|
140
|
-
def color_scale
|
|
141
|
-
@color_scale ||= ColorScale.new
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
# dataBar (Data Bar)
|
|
145
|
-
# The data bar to apply to this conditional formatting
|
|
146
|
-
# @return [DataBar]
|
|
147
|
-
def data_bar
|
|
148
|
-
@data_bar ||= DataBar.new
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
# iconSet (Icon Set)
|
|
152
|
-
# The icon set to apply to this conditional formatting
|
|
153
|
-
# @return [IconSet]
|
|
154
|
-
def icon_set
|
|
155
|
-
@icon_set ||= IconSet.new
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
# @see type
|
|
159
|
-
def type=(v); Axlsx::validate_conditional_formatting_type(v); @type = v end
|
|
160
|
-
# @see aboveAverage
|
|
161
|
-
def aboveAverage=(v); Axlsx::validate_boolean(v); @aboveAverage = v end
|
|
162
|
-
# @see bottom
|
|
163
|
-
def bottom=(v); Axlsx::validate_boolean(v); @bottom = v end
|
|
164
|
-
# @see dxfId
|
|
165
|
-
def dxfId=(v); Axlsx::validate_unsigned_numeric(v); @dxfId = v end
|
|
166
|
-
# @see equalAverage
|
|
167
|
-
def equalAverage=(v); Axlsx::validate_boolean(v); @equalAverage = v end
|
|
168
|
-
# @see priority
|
|
169
|
-
def priority=(v); Axlsx::validate_unsigned_numeric(v); @priority = v end
|
|
170
|
-
# @see operator
|
|
171
|
-
def operator=(v); Axlsx::validate_conditional_formatting_operator(v); @operator = v end
|
|
172
|
-
# @see text
|
|
173
|
-
def text=(v); Axlsx::validate_string(v); @text = v end
|
|
174
|
-
# @see percent
|
|
175
|
-
def percent=(v); Axlsx::validate_boolean(v); @percent = v end
|
|
176
|
-
# @see rank
|
|
177
|
-
def rank=(v); Axlsx::validate_unsigned_numeric(v); @rank = v end
|
|
178
|
-
# @see stdDev
|
|
179
|
-
def stdDev=(v); Axlsx::validate_unsigned_numeric(v); @stdDev = v end
|
|
180
|
-
# @see stopIfTrue
|
|
181
|
-
def stopIfTrue=(v); Axlsx::validate_boolean(v); @stopIfTrue = v end
|
|
182
|
-
# @see timePeriod
|
|
183
|
-
def timePeriod=(v); Axlsx::validate_time_period_type(v); @timePeriod = v end
|
|
184
|
-
# @see formula
|
|
185
|
-
def formula=(v); [*v].each {|x| Axlsx::validate_string(x) }; @formula = [*v].map { |form| ::CGI.escapeHTML(form) } end
|
|
186
|
-
|
|
187
|
-
# @see color_scale
|
|
188
|
-
def color_scale=(v)
|
|
189
|
-
Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.color_scale', ColorScale, v
|
|
190
|
-
@color_scale = v
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
# @see data_bar
|
|
194
|
-
def data_bar=(v)
|
|
195
|
-
Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.data_bar', DataBar, v
|
|
196
|
-
@data_bar = v
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
# @see icon_set
|
|
200
|
-
def icon_set=(v)
|
|
201
|
-
Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.icon_set', IconSet, v
|
|
202
|
-
@icon_set = v
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
# Serializes the conditional formatting rule
|
|
207
|
-
# @param [String] str
|
|
208
|
-
# @return [String]
|
|
209
|
-
def to_xml_string(str = '')
|
|
210
|
-
str << '<cfRule '
|
|
211
|
-
serialized_attributes str
|
|
212
|
-
str << '>'
|
|
213
|
-
str << ('<formula>' << [*self.formula].join('</formula><formula>') << '</formula>') if @formula
|
|
214
|
-
@color_scale.to_xml_string(str) if @color_scale && @type == :colorScale
|
|
215
|
-
@data_bar.to_xml_string(str) if @data_bar && @type == :dataBar
|
|
216
|
-
@icon_set.to_xml_string(str) if @icon_set && @type == :iconSet
|
|
217
|
-
str << '</cfRule>'
|
|
218
|
-
end
|
|
219
|
-
end
|
|
220
|
-
end
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
module Axlsx
|
|
3
|
+
# Conditional formatting rules specify formulas whose evaluations
|
|
4
|
+
# format cells
|
|
5
|
+
#
|
|
6
|
+
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
7
|
+
# @see Worksheet#add_conditional_formatting
|
|
8
|
+
# @see ConditionalFormattingRule#initialize
|
|
9
|
+
class ConditionalFormattingRule
|
|
10
|
+
|
|
11
|
+
include Axlsx::OptionsParser
|
|
12
|
+
include Axlsx::SerializedAttributes
|
|
13
|
+
|
|
14
|
+
# Creates a new Conditional Formatting Rule object
|
|
15
|
+
# @option options [Symbol] type The type of this formatting rule
|
|
16
|
+
# @option options [Boolean] aboveAverage This is an aboveAverage rule
|
|
17
|
+
# @option options [Boolean] bottom This is a bottom N rule.
|
|
18
|
+
# @option options [Integer] dxfId The formatting id to apply to matches
|
|
19
|
+
# @option options [Boolean] equalAverage Is the aboveAverage or belowAverage rule inclusive
|
|
20
|
+
# @option options [Integer] priority The priority of the rule, 1 is highest
|
|
21
|
+
# @option options [Symbol] operator Which operator to apply
|
|
22
|
+
# @option options [String] text The value to apply a text operator against
|
|
23
|
+
# @option options [Boolean] percent If a top/bottom N rule, evaluate as N% rather than N
|
|
24
|
+
# @option options [Integer] rank If a top/bottom N rule, the value of N
|
|
25
|
+
# @option options [Integer] stdDev The number of standard deviations above or below the average to match
|
|
26
|
+
# @option options [Boolean] stopIfTrue Stop evaluating rules after this rule matches
|
|
27
|
+
# @option options [Symbol] timePeriod The time period in a date occuring... rule
|
|
28
|
+
# @option options [String] formula The formula to match against in i.e. an equal rule. Use a [minimum, maximum] array for cellIs between/notBetween conditionals.
|
|
29
|
+
def initialize(options={})
|
|
30
|
+
@color_scale = @data_bar = @icon_set = @formula = nil
|
|
31
|
+
parse_options options
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
serializable_attributes :type, :aboveAverage, :bottom, :dxfId, :equalAverage,
|
|
35
|
+
:priority, :operator, :text, :percent, :rank, :stdDev,
|
|
36
|
+
:stopIfTrue, :timePeriod
|
|
37
|
+
|
|
38
|
+
# Formula
|
|
39
|
+
# The formula or value to match against (e.g. 5 with an operator of :greaterThan to specify cell_value > 5).
|
|
40
|
+
# If the operator is :between or :notBetween, use an array to specify [minimum, maximum]
|
|
41
|
+
# @return [String]
|
|
42
|
+
attr_reader :formula
|
|
43
|
+
|
|
44
|
+
# Type (ST_CfType)
|
|
45
|
+
# options are expression, cellIs, colorScale, dataBar, iconSet,
|
|
46
|
+
# top10, uniqueValues, duplicateValues, containsText,
|
|
47
|
+
# notContainsText, beginsWith, endsWith, containsBlanks,
|
|
48
|
+
# notContainsBlanks, containsErrors, notContainsErrors,
|
|
49
|
+
# timePeriod, aboveAverage
|
|
50
|
+
# @return [Symbol]
|
|
51
|
+
attr_reader :type
|
|
52
|
+
|
|
53
|
+
# Above average rule
|
|
54
|
+
# Indicates whether the rule is an "above average" rule. True
|
|
55
|
+
# indicates 'above average'. This attribute is ignored if type is
|
|
56
|
+
# not equal to aboveAverage.
|
|
57
|
+
# @return [Boolean]
|
|
58
|
+
attr_reader :aboveAverage
|
|
59
|
+
|
|
60
|
+
# Bottom N rule
|
|
61
|
+
# @return [Boolean]
|
|
62
|
+
attr_reader :bottom
|
|
63
|
+
|
|
64
|
+
# Differential Formatting Id
|
|
65
|
+
# @return [Integer]
|
|
66
|
+
attr_reader :dxfId
|
|
67
|
+
|
|
68
|
+
# Equal Average
|
|
69
|
+
# Flag indicating whether the 'aboveAverage' and 'belowAverage'
|
|
70
|
+
# criteria is inclusive of the average itself, or exclusive of
|
|
71
|
+
# that value.
|
|
72
|
+
# @return [Boolean]
|
|
73
|
+
attr_reader :equalAverage
|
|
74
|
+
|
|
75
|
+
# Operator
|
|
76
|
+
# The operator in a "cell value is" conditional formatting
|
|
77
|
+
# rule. This attribute is ignored if type is not equal to cellIs
|
|
78
|
+
#
|
|
79
|
+
# Operator must be one of lessThan, lessThanOrEqual, equal,
|
|
80
|
+
# notEqual, greaterThanOrEqual, greaterThan, between, notBetween,
|
|
81
|
+
# containsText, notContains, beginsWith, endsWith
|
|
82
|
+
# @return [Symbol]
|
|
83
|
+
attr_reader :operator
|
|
84
|
+
|
|
85
|
+
# Priority
|
|
86
|
+
# The priority of this conditional formatting rule. This value is
|
|
87
|
+
# used to determine which format should be evaluated and
|
|
88
|
+
# rendered. Lower numeric values are higher priority than higher
|
|
89
|
+
# numeric values, where '1' is the highest priority.
|
|
90
|
+
# @return [Integer]
|
|
91
|
+
attr_reader :priority
|
|
92
|
+
|
|
93
|
+
# Text
|
|
94
|
+
# used in a "text contains" conditional formatting
|
|
95
|
+
# rule.
|
|
96
|
+
# @return [String]
|
|
97
|
+
attr_reader :text
|
|
98
|
+
|
|
99
|
+
# percent (Top 10 Percent)
|
|
100
|
+
# indicates whether a "top/bottom n" rule is a "top/bottom n
|
|
101
|
+
# percent" rule. This attribute is ignored if type is not equal to
|
|
102
|
+
# top10.
|
|
103
|
+
# @return [Boolean]
|
|
104
|
+
attr_reader :percent
|
|
105
|
+
|
|
106
|
+
# rank (Rank)
|
|
107
|
+
# The value of "n" in a "top/bottom n" conditional formatting
|
|
108
|
+
# rule. This attribute is ignored if type is not equal to top10.
|
|
109
|
+
# @return [Integer]
|
|
110
|
+
attr_reader :rank
|
|
111
|
+
|
|
112
|
+
# stdDev (StdDev)
|
|
113
|
+
# The number of standard deviations to include above or below the
|
|
114
|
+
# average in the conditional formatting rule. This attribute is
|
|
115
|
+
# ignored if type is not equal to aboveAverage. If a value is
|
|
116
|
+
# present for stdDev and the rule type = aboveAverage, then this
|
|
117
|
+
# rule is automatically an "above or below N standard deviations"
|
|
118
|
+
# rule.
|
|
119
|
+
# @return [Integer]
|
|
120
|
+
attr_reader :stdDev
|
|
121
|
+
|
|
122
|
+
# stopIfTrue (Stop If True)
|
|
123
|
+
# If this flag is '1', no rules with lower priority shall be
|
|
124
|
+
# applied over this rule, when this rule evaluates to true.
|
|
125
|
+
# @return [Boolean]
|
|
126
|
+
attr_reader :stopIfTrue
|
|
127
|
+
|
|
128
|
+
# timePeriod (Time Period)
|
|
129
|
+
# The applicable time period in a "date occurring…" conditional
|
|
130
|
+
# formatting rule. This attribute is ignored if type is not equal
|
|
131
|
+
# to timePeriod.
|
|
132
|
+
# Valid types are today, yesterday, tomorrow, last7Days,
|
|
133
|
+
# thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
|
|
134
|
+
attr_reader :timePeriod
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
# colorScale (Color Scale)
|
|
138
|
+
# The color scale to apply to this conditional formatting
|
|
139
|
+
# @return [ColorScale]
|
|
140
|
+
def color_scale
|
|
141
|
+
@color_scale ||= ColorScale.new
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# dataBar (Data Bar)
|
|
145
|
+
# The data bar to apply to this conditional formatting
|
|
146
|
+
# @return [DataBar]
|
|
147
|
+
def data_bar
|
|
148
|
+
@data_bar ||= DataBar.new
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# iconSet (Icon Set)
|
|
152
|
+
# The icon set to apply to this conditional formatting
|
|
153
|
+
# @return [IconSet]
|
|
154
|
+
def icon_set
|
|
155
|
+
@icon_set ||= IconSet.new
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# @see type
|
|
159
|
+
def type=(v); Axlsx::validate_conditional_formatting_type(v); @type = v end
|
|
160
|
+
# @see aboveAverage
|
|
161
|
+
def aboveAverage=(v); Axlsx::validate_boolean(v); @aboveAverage = v end
|
|
162
|
+
# @see bottom
|
|
163
|
+
def bottom=(v); Axlsx::validate_boolean(v); @bottom = v end
|
|
164
|
+
# @see dxfId
|
|
165
|
+
def dxfId=(v); Axlsx::validate_unsigned_numeric(v); @dxfId = v end
|
|
166
|
+
# @see equalAverage
|
|
167
|
+
def equalAverage=(v); Axlsx::validate_boolean(v); @equalAverage = v end
|
|
168
|
+
# @see priority
|
|
169
|
+
def priority=(v); Axlsx::validate_unsigned_numeric(v); @priority = v end
|
|
170
|
+
# @see operator
|
|
171
|
+
def operator=(v); Axlsx::validate_conditional_formatting_operator(v); @operator = v end
|
|
172
|
+
# @see text
|
|
173
|
+
def text=(v); Axlsx::validate_string(v); @text = v end
|
|
174
|
+
# @see percent
|
|
175
|
+
def percent=(v); Axlsx::validate_boolean(v); @percent = v end
|
|
176
|
+
# @see rank
|
|
177
|
+
def rank=(v); Axlsx::validate_unsigned_numeric(v); @rank = v end
|
|
178
|
+
# @see stdDev
|
|
179
|
+
def stdDev=(v); Axlsx::validate_unsigned_numeric(v); @stdDev = v end
|
|
180
|
+
# @see stopIfTrue
|
|
181
|
+
def stopIfTrue=(v); Axlsx::validate_boolean(v); @stopIfTrue = v end
|
|
182
|
+
# @see timePeriod
|
|
183
|
+
def timePeriod=(v); Axlsx::validate_time_period_type(v); @timePeriod = v end
|
|
184
|
+
# @see formula
|
|
185
|
+
def formula=(v); [*v].each {|x| Axlsx::validate_string(x) }; @formula = [*v].map { |form| ::CGI.escapeHTML(form) } end
|
|
186
|
+
|
|
187
|
+
# @see color_scale
|
|
188
|
+
def color_scale=(v)
|
|
189
|
+
Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.color_scale', ColorScale, v
|
|
190
|
+
@color_scale = v
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
# @see data_bar
|
|
194
|
+
def data_bar=(v)
|
|
195
|
+
Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.data_bar', DataBar, v
|
|
196
|
+
@data_bar = v
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# @see icon_set
|
|
200
|
+
def icon_set=(v)
|
|
201
|
+
Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.icon_set', IconSet, v
|
|
202
|
+
@icon_set = v
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
# Serializes the conditional formatting rule
|
|
207
|
+
# @param [String] str
|
|
208
|
+
# @return [String]
|
|
209
|
+
def to_xml_string(str = '')
|
|
210
|
+
str << '<cfRule '
|
|
211
|
+
serialized_attributes str
|
|
212
|
+
str << '>'
|
|
213
|
+
str << ('<formula>' << [*self.formula].join('</formula><formula>') << '</formula>') if @formula
|
|
214
|
+
@color_scale.to_xml_string(str) if @color_scale && @type == :colorScale
|
|
215
|
+
@data_bar.to_xml_string(str) if @data_bar && @type == :dataBar
|
|
216
|
+
@icon_set.to_xml_string(str) if @icon_set && @type == :iconSet
|
|
217
|
+
str << '</cfRule>'
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
end
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
# A simple, self serializing class for storing conditional formattings
|
|
4
|
-
class ConditionalFormattings < 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 ConditionalFormatting
|
|
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
|
-
each { |item| item.to_xml_string(str) }
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# A simple, self serializing class for storing conditional formattings
|
|
4
|
+
class ConditionalFormattings < 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 ConditionalFormatting
|
|
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
|
+
each { |item| item.to_xml_string(str) }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|