ooxml_parser 0.14.2 → 0.15.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/lib/ooxml_parser/version.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/differential_formatting_records.rb +41 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/color_scale.rb +32 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar/conditional_format_value_object.rb +44 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar.rb +102 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/differential_formatting_record.rb +34 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set/conditional_formatting_icon.rb +26 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set.rb +55 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule.rb +100 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting.rb +32 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings.rb +33 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +5 -0
- metadata +13 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d95158b66da173b7cc2b1c80b4780c0893cb840ff47a20bee389285054e3f4e
|
4
|
+
data.tar.gz: ec88614112d6ec0c69e5269dd8d128ead722cd1d338ac0500f7868409e8a5160
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac0bae842196c698f38563be771715d3cb78de1081904528f4557fe6faf0c7b20199945f0b5da952da0eef238e5b38a80e06e3c65a64a76b44824d9a105a24b4
|
7
|
+
data.tar.gz: cec21fd072fc64cc6ec436b86a0f68a0a11fb42356ca6826f20e2e8ccaa3de291e2ba2e8f76bcda5243473a46217f1d3a6b04beedfa0e9b2ac00f11aa9a7983f
|
data/lib/ooxml_parser/version.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Parsing `dxfs` tag
|
5
|
+
class DifferentialFormattingRecords < OOXMLDocumentObject
|
6
|
+
# @return [Array, DifferentialFormattingRecord] list of formatting records
|
7
|
+
attr_reader :differential_formatting_records
|
8
|
+
# @return [Integer] count of formats
|
9
|
+
attr_reader :count
|
10
|
+
|
11
|
+
def initialize(parent: nil)
|
12
|
+
@differential_formatting_records = []
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Array, DifferentialFormattingRecord] accessor
|
17
|
+
def [](key)
|
18
|
+
@differential_formatting_records[key]
|
19
|
+
end
|
20
|
+
|
21
|
+
# Parse DifferentialFormattingRecords data
|
22
|
+
# @param [Nokogiri::XML:Element] node with DifferentialFormattingRecords data
|
23
|
+
# @return [DifferentialFormattingRecords] value of DifferentialFormattingRecords data
|
24
|
+
def parse(node)
|
25
|
+
node.attributes.each do |key, value|
|
26
|
+
case key
|
27
|
+
when 'count'
|
28
|
+
@count = value.value.to_i
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
node.xpath('*').each do |node_child|
|
33
|
+
case node_child.name
|
34
|
+
when 'dxf'
|
35
|
+
@differential_formatting_records << DifferentialFormattingRecord.new(parent: self).parse(node_child)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
self
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -5,6 +5,7 @@ require_relative 'style_sheet/fills'
|
|
5
5
|
require_relative 'style_sheet/fonts'
|
6
6
|
require_relative 'style_sheet/number_formats'
|
7
7
|
require_relative 'style_sheet/xlsx_borders'
|
8
|
+
require_relative 'style_sheet/differential_formatting_records'
|
8
9
|
module OoxmlParser
|
9
10
|
# Parsing file styles.xml
|
10
11
|
class StyleSheet < OOXMLDocumentObject
|
@@ -18,6 +19,8 @@ module OoxmlParser
|
|
18
19
|
attr_reader :cell_xfs
|
19
20
|
# @return [XlsxBorders] Cell XFs
|
20
21
|
attr_reader :borders
|
22
|
+
# @return [DifferentialFormattingRecords] list of differential formatting records
|
23
|
+
attr_reader :differential_formatting_records
|
21
24
|
|
22
25
|
def initialize(parent: nil)
|
23
26
|
@number_formats = NumberFormats.new(parent: self)
|
@@ -42,6 +45,8 @@ module OoxmlParser
|
|
42
45
|
@cell_xfs = CellXfs.new(parent: self).parse(node_child)
|
43
46
|
when 'borders'
|
44
47
|
@borders = XlsxBorders.new(parent: self).parse(node_child)
|
48
|
+
when 'dxfs'
|
49
|
+
@differential_formatting_records = DifferentialFormattingRecords.new(parent: self).parse(node_child)
|
45
50
|
end
|
46
51
|
end
|
47
52
|
self
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for `colorScale` data
|
5
|
+
class ColorScale < OOXMLDocumentObject
|
6
|
+
# @return [Array<ConditionalFormatValueObject>] list of values
|
7
|
+
attr_reader :values
|
8
|
+
# @return [Array<OoxmlColor>] list of colors
|
9
|
+
attr_reader :colors
|
10
|
+
|
11
|
+
def initialize(parent: nil)
|
12
|
+
@values = []
|
13
|
+
@colors = []
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
# Parse ColorScale data
|
18
|
+
# @param [Nokogiri::XML:Element] node with ColorScale data
|
19
|
+
# @return [ColorScale] value of ColorScale data
|
20
|
+
def parse(node)
|
21
|
+
node.xpath('*').each do |node_child|
|
22
|
+
case node_child.name
|
23
|
+
when 'cfvo'
|
24
|
+
@values << ConditionalFormatValueObject.new(parent: self).parse(node_child)
|
25
|
+
when 'color'
|
26
|
+
@colors << OoxmlColor.new(parent: self).parse(node_child)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
self
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for `cfvo` data
|
5
|
+
class ConditionalFormatValueObject < OOXMLDocumentObject
|
6
|
+
# @return [Symbol] Value type
|
7
|
+
attr_reader :type
|
8
|
+
# @return [String] Value
|
9
|
+
attr_reader :value
|
10
|
+
# @return [Symbol] Specifies whether value uses greater than or equal to operator
|
11
|
+
attr_reader :greater_or_equal
|
12
|
+
# @return [Formula] Formula
|
13
|
+
attr_reader :formula
|
14
|
+
|
15
|
+
def initialize(parent: nil)
|
16
|
+
@greater_or_equal = true
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
# Parse ConditionalFormatValueObject data
|
21
|
+
# @param [Nokogiri::XML:Element] node with ConditionalFormatValueObject data
|
22
|
+
# @return [ConditionalFormatValueObject] value of ConditionalFormatValueObject data
|
23
|
+
def parse(node)
|
24
|
+
node.attributes.each do |key, value|
|
25
|
+
case key
|
26
|
+
when 'type'
|
27
|
+
@type = value.value.to_sym
|
28
|
+
when 'val'
|
29
|
+
@value = value.value.to_s
|
30
|
+
when 'gte'
|
31
|
+
@greater_or_equal = attribute_enabled?(value)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
node.xpath('*').each do |node_child|
|
36
|
+
case node_child.name
|
37
|
+
when 'f'
|
38
|
+
@formula = Formula.new(parent: self).parse(node_child)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
self
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'data_bar/conditional_format_value_object'
|
4
|
+
module OoxmlParser
|
5
|
+
# Class for `dataBar` data
|
6
|
+
class DataBar < OOXMLDocumentObject
|
7
|
+
# @return [Integer] Minimal length of the data bar as a percentage of the cell width
|
8
|
+
attr_reader :min_length
|
9
|
+
# @return [Integer] Maximal length of the data bar as a percentage of the cell width
|
10
|
+
attr_reader :max_length
|
11
|
+
# @return [Symbol] Specifies whether value is shown in a cell
|
12
|
+
attr_reader :show_value
|
13
|
+
# @return [Symbol] Position of axis in a cell
|
14
|
+
attr_reader :axis_position
|
15
|
+
# @return [Symbol] Data bar direction
|
16
|
+
attr_reader :direction
|
17
|
+
# @return [Symbol] Specifies whether data bar fill is gradient
|
18
|
+
attr_reader :gradient
|
19
|
+
# @return [Symbol] Specifies whether data bar has border
|
20
|
+
attr_reader :border
|
21
|
+
# @return [Symbol] Specifies whether fill color for negative values is same as for positive
|
22
|
+
attr_reader :negative_bar_same_as_positive
|
23
|
+
# @return [Symbol] Specifies whether border color for negative values is same as for positive
|
24
|
+
attr_reader :negative_border_same_as_positive
|
25
|
+
# @return [Array, ConditionalFormatValueObject] minimal and maximal value
|
26
|
+
attr_reader :values
|
27
|
+
# @return [Color] Fill color for positive values
|
28
|
+
attr_reader :fill_color
|
29
|
+
# @return [Color] Fill color for negative values
|
30
|
+
attr_reader :negative_fill_color
|
31
|
+
# @return [Color] Border color for positive values
|
32
|
+
attr_reader :border_color
|
33
|
+
# @return [Color] Border color for negative values
|
34
|
+
attr_reader :negative_border_color
|
35
|
+
# @return [Color] Axis color
|
36
|
+
attr_reader :axis_color
|
37
|
+
|
38
|
+
def initialize(parent: nil)
|
39
|
+
@values = []
|
40
|
+
@show_value = true
|
41
|
+
@gradient = true
|
42
|
+
@negative_border_same_as_positive = true
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
# Parse DataBar data
|
47
|
+
# @param [Nokogiri::XML:Element] node with DataBar data
|
48
|
+
# @return [DataBar] value of DataBar data
|
49
|
+
def parse(node)
|
50
|
+
node.attributes.each do |key, value|
|
51
|
+
case key
|
52
|
+
when 'minLength'
|
53
|
+
@min_length = value.value.to_i
|
54
|
+
when 'maxLength'
|
55
|
+
@max_length = value.value.to_i
|
56
|
+
when 'showValue'
|
57
|
+
@show_value = attribute_enabled?(value)
|
58
|
+
when 'axisPosition'
|
59
|
+
@axis_position = value.value.to_sym
|
60
|
+
when 'direction'
|
61
|
+
@direction = value.value.to_sym
|
62
|
+
when 'gradient'
|
63
|
+
@gradient = attribute_enabled?(value)
|
64
|
+
when 'border'
|
65
|
+
@border = attribute_enabled?(value)
|
66
|
+
when 'negativeBarColorSameAsPositive'
|
67
|
+
@negative_bar_same_as_positive = attribute_enabled?(value)
|
68
|
+
when 'negativeBarBorderColorSameAsPositive'
|
69
|
+
@negative_border_same_as_positive = attribute_enabled?(value)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
node.xpath('*').each do |node_child|
|
74
|
+
case node_child.name
|
75
|
+
when 'cfvo'
|
76
|
+
@values << ConditionalFormatValueObject.new(parent: self).parse(node_child)
|
77
|
+
when 'fillColor'
|
78
|
+
@fill_color = OoxmlColor.new(parent: self).parse(node_child)
|
79
|
+
when 'negativeFillColor'
|
80
|
+
@negative_fill_color = OoxmlColor.new(parent: self).parse(node_child)
|
81
|
+
when 'borderColor'
|
82
|
+
@border_color = OoxmlColor.new(parent: self).parse(node_child)
|
83
|
+
when 'negativeBorderColor'
|
84
|
+
@negative_border_color = OoxmlColor.new(parent: self).parse(node_child)
|
85
|
+
when 'axisColor'
|
86
|
+
@axis_color = OoxmlColor.new(parent: self).parse(node_child)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
self
|
90
|
+
end
|
91
|
+
|
92
|
+
# @return [ConditionalFormatValueObject] minimal value
|
93
|
+
def minimum
|
94
|
+
values[0]
|
95
|
+
end
|
96
|
+
|
97
|
+
# @return [ConditionalFormatValueObject] maximal value
|
98
|
+
def maximum
|
99
|
+
values[1]
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for `dxf` data
|
5
|
+
class DifferentialFormattingRecord < OOXMLDocumentObject
|
6
|
+
# @return [Font] Font
|
7
|
+
attr_reader :font
|
8
|
+
# @return [NumberFormat] Number format
|
9
|
+
attr_reader :number_format
|
10
|
+
# @return [Fill] Fill
|
11
|
+
attr_reader :fill
|
12
|
+
# @return [Borders] Borders
|
13
|
+
attr_reader :borders
|
14
|
+
|
15
|
+
# Parse DifferentialFormattingRecord data
|
16
|
+
# @param [Nokogiri::XML:Element] node with DifferentialFormattingRecord data
|
17
|
+
# @return [DifferentialFormattingRecord] value of DifferentialFormattingRecord data
|
18
|
+
def parse(node)
|
19
|
+
node.xpath('*').each do |node_child|
|
20
|
+
case node_child.name
|
21
|
+
when 'font'
|
22
|
+
@font = Font.new(parent: self).parse(node_child)
|
23
|
+
when 'numFmt'
|
24
|
+
@number_format = NumberFormat.new(parent: self).parse(node_child)
|
25
|
+
when 'fill'
|
26
|
+
@fill = Fill.new(parent: self).parse(node_child)
|
27
|
+
when 'border'
|
28
|
+
@borders = XlsxBorder.new(parent: self).parse(node_child)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
self
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for `cfIcon` data
|
5
|
+
class ConditionalFormattingIcon < OOXMLDocumentObject
|
6
|
+
# @return [String] Name of icon set
|
7
|
+
attr_reader :icon_set
|
8
|
+
# @return [Integer] Id of icon in set
|
9
|
+
attr_reader :icon_id
|
10
|
+
|
11
|
+
# Parse ConditionalFormattingIcon data
|
12
|
+
# @param [Nokogiri::XML:Element] node with ConditionalFormattingIcon data
|
13
|
+
# @return [ConditionalFormattingIcon] value of ConditionalFormattingIcon data
|
14
|
+
def parse(node)
|
15
|
+
node.attributes.each do |key, value|
|
16
|
+
case key
|
17
|
+
when 'iconSet'
|
18
|
+
@icon_set = value.value.to_s
|
19
|
+
when 'iconId'
|
20
|
+
@icon_id = value.value.to_i
|
21
|
+
end
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'icon_set/conditional_formatting_icon'
|
4
|
+
module OoxmlParser
|
5
|
+
# Class for `iconSet` data
|
6
|
+
class IconSet < OOXMLDocumentObject
|
7
|
+
# @return [String] Name of icon set
|
8
|
+
attr_reader :set
|
9
|
+
# @return [Symbol] Specifies whether icons are shown in reverse order
|
10
|
+
attr_reader :reverse
|
11
|
+
# @return [Symbol] Specifies whether value is shown in a cell
|
12
|
+
attr_reader :show_value
|
13
|
+
# @return [Symbol] Specifies whether icon set is custom
|
14
|
+
attr_reader :custom
|
15
|
+
# @return [Array<ConditionalFormatValueObject>] list of values
|
16
|
+
attr_reader :values
|
17
|
+
# @return [Array<ConditionalFormattingIcon>] list of icons for custom sets
|
18
|
+
attr_reader :icons
|
19
|
+
|
20
|
+
def initialize(parent: nil)
|
21
|
+
@values = []
|
22
|
+
@icons = []
|
23
|
+
@show_value = true
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
# Parse IconSet data
|
28
|
+
# @param [Nokogiri::XML:Element] node with IconSet data
|
29
|
+
# @return [IconSet] value of IconSet data
|
30
|
+
def parse(node)
|
31
|
+
node.attributes.each do |key, value|
|
32
|
+
case key
|
33
|
+
when 'iconSet'
|
34
|
+
@set = value.value.to_s
|
35
|
+
when 'reverse'
|
36
|
+
@reverse = attribute_enabled?(value)
|
37
|
+
when 'showValue'
|
38
|
+
@show_value = attribute_enabled?(value)
|
39
|
+
when 'custom'
|
40
|
+
@custom = attribute_enabled?(value)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
node.xpath('*').each do |node_child|
|
45
|
+
case node_child.name
|
46
|
+
when 'cfvo'
|
47
|
+
@values << ConditionalFormatValueObject.new(parent: self).parse(node_child)
|
48
|
+
when 'cfIcon'
|
49
|
+
@icons << ConditionalFormattingIcon.new(parent: self).parse(node_child)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
self
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'conditional_formatting_rule/differential_formatting_record'
|
4
|
+
require_relative 'conditional_formatting_rule/data_bar'
|
5
|
+
require_relative 'conditional_formatting_rule/color_scale'
|
6
|
+
require_relative 'conditional_formatting_rule/icon_set'
|
7
|
+
module OoxmlParser
|
8
|
+
# Class for `cfRule` data
|
9
|
+
class ConditionalFormattingRule < OOXMLDocumentObject
|
10
|
+
# @return [Symbol] Type of rule
|
11
|
+
attr_reader :type
|
12
|
+
# @return [Integer] Specifies position on the list of rules
|
13
|
+
attr_reader :priority
|
14
|
+
# @return [String] ID of rule
|
15
|
+
attr_reader :id
|
16
|
+
# @return [Integer] index of format
|
17
|
+
attr_reader :format_index
|
18
|
+
# @return [Symbol] Specifies whether rules with lower priority should be applied over this rule
|
19
|
+
attr_reader :stop_if_true
|
20
|
+
# @return [Symbol] Relational operator in value rule
|
21
|
+
attr_reader :operator
|
22
|
+
# @return [Symbol] Specifies whether percent is used in top/bottom rule
|
23
|
+
attr_reader :percent
|
24
|
+
# @return [Integer] Number of items in top/bottom rule
|
25
|
+
attr_reader :rank
|
26
|
+
# @return [Integer] Number of standard deviations in above/below average rule
|
27
|
+
attr_reader :standard_deviation
|
28
|
+
# @return [String] text value in text rule
|
29
|
+
attr_reader :text
|
30
|
+
# @return [Array, Formula] Formulas to determine condition
|
31
|
+
attr_reader :formulas
|
32
|
+
# @return [DifferentialFormattingRecord] Format
|
33
|
+
attr_reader :rule_format
|
34
|
+
# @return [DataBar] data bar formatting
|
35
|
+
attr_reader :data_bar
|
36
|
+
# @return [ColorScale] color scale formatting
|
37
|
+
attr_reader :color_scale
|
38
|
+
# @return [IconSet] icon set formatting
|
39
|
+
attr_reader :icon_set
|
40
|
+
|
41
|
+
def initialize(parent: nil)
|
42
|
+
@formulas = []
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
# Parse ConditionalFormattingRule data
|
47
|
+
# @param [Nokogiri::XML:Element] node with ConditionalFormattingRule data
|
48
|
+
# @return [ConditionalFormattingRule] value of ConditionalFormattingRule data
|
49
|
+
def parse(node)
|
50
|
+
node.attributes.each do |key, value|
|
51
|
+
case key
|
52
|
+
when 'type'
|
53
|
+
@type = value.value.to_sym
|
54
|
+
when 'priority'
|
55
|
+
@priority = value.value.to_i
|
56
|
+
when 'id'
|
57
|
+
@id = value.value.to_s
|
58
|
+
when 'dxfId'
|
59
|
+
@format_index = value.value.to_i
|
60
|
+
when 'stopIfTrue'
|
61
|
+
@stop_if_true = attribute_enabled?(value)
|
62
|
+
when 'operator'
|
63
|
+
@operator = value.value.to_sym
|
64
|
+
when 'percent'
|
65
|
+
@percent = attribute_enabled?(value)
|
66
|
+
when 'rank'
|
67
|
+
@rank = value.value.to_i
|
68
|
+
when 'stdDev'
|
69
|
+
@standard_deviation = value.value.to_i
|
70
|
+
when 'text'
|
71
|
+
@text = value.text.to_s
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
node.xpath('*').each do |node_child|
|
76
|
+
case node_child.name
|
77
|
+
when 'f'
|
78
|
+
@formulas << Formula.new(parent: self).parse(node_child)
|
79
|
+
when 'dxf'
|
80
|
+
@rule_format = DifferentialFormattingRecord.new(parent: self).parse(node_child)
|
81
|
+
when 'dataBar'
|
82
|
+
@data_bar = DataBar.new(parent: self).parse(node_child)
|
83
|
+
when 'colorScale'
|
84
|
+
@color_scale = ColorScale.new(parent: self).parse(node_child)
|
85
|
+
when 'iconSet'
|
86
|
+
@icon_set = IconSet.new(parent: self).parse(node_child)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
self
|
90
|
+
end
|
91
|
+
|
92
|
+
# @return [nil, DifferentialFormattingRecord] format of rule
|
93
|
+
def format
|
94
|
+
return @rule_format if @rule_format
|
95
|
+
return nil unless @format_index
|
96
|
+
|
97
|
+
root_object.style_sheet.differential_formatting_records[@format_index]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'conditional_formatting/conditional_formatting_rule'
|
4
|
+
module OoxmlParser
|
5
|
+
# Class for `conditionalFormatting` data
|
6
|
+
class ConditionalFormatting < OOXMLDocumentObject
|
7
|
+
# @return [Array, ConditionalFormattingRule] list of conditional formatting rules
|
8
|
+
attr_reader :rules
|
9
|
+
# @return [String] Ranges to which conditional formatting is applied
|
10
|
+
attr_reader :reference_sequence
|
11
|
+
|
12
|
+
def initialize(parent: nil)
|
13
|
+
@rules = []
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
# Parse ConditionalFormatting data
|
18
|
+
# @param [Nokogiri::XML:Element] node with ConditionalFormatting data
|
19
|
+
# @return [ConditionalFormatting] value of ConditionalFormatting data
|
20
|
+
def parse(node)
|
21
|
+
node.xpath('*').each do |node_child|
|
22
|
+
case node_child.name
|
23
|
+
when 'cfRule'
|
24
|
+
@rules << ConditionalFormattingRule.new(parent: self).parse(node_child)
|
25
|
+
when 'sqref'
|
26
|
+
@reference_sequence = node_child.text
|
27
|
+
end
|
28
|
+
end
|
29
|
+
self
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'conditional_formattings/conditional_formatting'
|
4
|
+
module OoxmlParser
|
5
|
+
# Class for `conditionalFormattings` data
|
6
|
+
class ConditionalFormattings < OOXMLDocumentObject
|
7
|
+
# @return [Array<ConditionalFormatting>] list of conditional formattings
|
8
|
+
attr_reader :conditional_formattings_list
|
9
|
+
|
10
|
+
def initialize(parent: nil)
|
11
|
+
@conditional_formattings_list = []
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Array, ConditionalFormatting] accessor
|
16
|
+
def [](key)
|
17
|
+
@conditional_formattings_list[key]
|
18
|
+
end
|
19
|
+
|
20
|
+
# Parse ConditionalFormattings data
|
21
|
+
# @param [Nokogiri::XML:Element] node with ConditionalFormattings data
|
22
|
+
# @return [ConditionalFormattings] value of ConditionalFormattings data
|
23
|
+
def parse(node)
|
24
|
+
node.xpath('*').each do |node_child|
|
25
|
+
case node_child.name
|
26
|
+
when 'conditionalFormatting'
|
27
|
+
@conditional_formattings_list << ConditionalFormatting.new(parent: self).parse(node_child)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
self
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -3,11 +3,14 @@
|
|
3
3
|
require_relative 'extension/data_validations'
|
4
4
|
require_relative 'extension/sparkline_groups'
|
5
5
|
require_relative 'extension/x14_table'
|
6
|
+
require_relative 'extension/conditional_formattings'
|
6
7
|
module OoxmlParser
|
7
8
|
# Class for `ext` data
|
8
9
|
class Extension < OOXMLDocumentObject
|
9
10
|
# @return [DataValidations] list of data validations
|
10
11
|
attr_accessor :data_validations
|
12
|
+
# @return [ConditionalFormattings] list of conditional formattings
|
13
|
+
attr_reader :conditional_formattings
|
11
14
|
# @return [X14Table] table data in x14 namespace
|
12
15
|
attr_accessor :table
|
13
16
|
# @return [SparklineGroups] list of groups
|
@@ -21,6 +24,8 @@ module OoxmlParser
|
|
21
24
|
case column_node.name
|
22
25
|
when 'dataValidations'
|
23
26
|
@data_validations = DataValidations.new(parent: self).parse(column_node)
|
27
|
+
when 'conditionalFormattings'
|
28
|
+
@conditional_formattings = ConditionalFormattings.new(parent: self).parse(column_node)
|
24
29
|
when 'table'
|
25
30
|
@table = X14Table.new(parent: self).parse(column_node)
|
26
31
|
when 'sparklineGroups'
|
@@ -31,6 +31,8 @@ module OoxmlParser
|
|
31
31
|
attr_accessor :extension_list
|
32
32
|
# @return [XlsxHeaderFooter] header and footer
|
33
33
|
attr_reader :header_footer
|
34
|
+
# @return [Array<ConditionalFormatting>] list of conditional formattings
|
35
|
+
attr_reader :conditional_formattings
|
34
36
|
|
35
37
|
def initialize(parent: nil)
|
36
38
|
@columns = []
|
@@ -42,6 +44,7 @@ module OoxmlParser
|
|
42
44
|
@drawings = []
|
43
45
|
@sheet_views = []
|
44
46
|
@table_parts = []
|
47
|
+
@conditional_formattings = []
|
45
48
|
super
|
46
49
|
end
|
47
50
|
|
@@ -129,6 +132,8 @@ module OoxmlParser
|
|
129
132
|
@extension_list = ExtensionList.new(parent: self).parse(worksheet_node_child)
|
130
133
|
when 'headerFooter'
|
131
134
|
@header_footer = XlsxHeaderFooter.new(parent: self).parse(worksheet_node_child)
|
135
|
+
when 'conditionalFormatting'
|
136
|
+
@conditional_formattings << ConditionalFormatting.new(parent: self).parse(worksheet_node_child)
|
132
137
|
end
|
133
138
|
end
|
134
139
|
parse_comments
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ooxml_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ONLYOFFICE
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-09-
|
13
|
+
date: 2021-09-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -509,6 +509,7 @@ files:
|
|
509
509
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs.rb
|
510
510
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/cell_style/alignment.rb
|
511
511
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/xf.rb
|
512
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/differential_formatting_records.rb
|
512
513
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills.rb
|
513
514
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb
|
514
515
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill/pattern_fill.rb
|
@@ -536,6 +537,15 @@ files:
|
|
536
537
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column/custom_filters/custom_filter.rb
|
537
538
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list.rb
|
538
539
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb
|
540
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings.rb
|
541
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting.rb
|
542
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule.rb
|
543
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/color_scale.rb
|
544
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar.rb
|
545
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar/conditional_format_value_object.rb
|
546
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/differential_formatting_record.rb
|
547
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set.rb
|
548
|
+
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set/conditional_formatting_icon.rb
|
539
549
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations.rb
|
540
550
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation.rb
|
541
551
|
- lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation/data_validation_formula.rb
|
@@ -579,7 +589,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
579
589
|
- !ruby/object:Gem::Version
|
580
590
|
version: '0'
|
581
591
|
requirements: []
|
582
|
-
rubygems_version: 3.2.
|
592
|
+
rubygems_version: 3.2.27
|
583
593
|
signing_key:
|
584
594
|
specification_version: 4
|
585
595
|
summary: OoxmlParser Gem
|