caxlsx 3.2.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +394 -354
- data/LICENSE +21 -21
- data/README.md +184 -168
- data/Rakefile +28 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
- data/lib/axlsx/content_type/content_type.rb +22 -26
- data/lib/axlsx/content_type/default.rb +21 -25
- data/lib/axlsx/content_type/override.rb +21 -25
- data/lib/axlsx/doc_props/app.rb +230 -235
- data/lib/axlsx/doc_props/core.rb +34 -39
- data/lib/axlsx/drawing/area_chart.rb +96 -99
- data/lib/axlsx/drawing/area_series.rb +107 -110
- data/lib/axlsx/drawing/ax_data_source.rb +21 -26
- data/lib/axlsx/drawing/axes.rb +60 -61
- data/lib/axlsx/drawing/axis.rb +185 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
- data/lib/axlsx/drawing/bar_chart.rb +135 -138
- data/lib/axlsx/drawing/bar_series.rb +91 -97
- data/lib/axlsx/drawing/bubble_chart.rb +56 -59
- data/lib/axlsx/drawing/bubble_series.rb +60 -63
- data/lib/axlsx/drawing/cat_axis.rb +80 -85
- data/lib/axlsx/drawing/chart.rb +294 -276
- data/lib/axlsx/drawing/d_lbls.rb +92 -90
- data/lib/axlsx/drawing/drawing.rb +163 -167
- data/lib/axlsx/drawing/graphic_frame.rb +51 -54
- data/lib/axlsx/drawing/hyperlink.rb +97 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
- data/lib/axlsx/drawing/line_chart.rb +96 -99
- data/lib/axlsx/drawing/line_series.rb +107 -110
- data/lib/axlsx/drawing/marker.rb +80 -84
- data/lib/axlsx/drawing/num_data.rb +47 -52
- data/lib/axlsx/drawing/num_data_source.rb +58 -62
- data/lib/axlsx/drawing/num_val.rb +31 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
- data/lib/axlsx/drawing/pic.rb +244 -211
- data/lib/axlsx/drawing/picture_locking.rb +39 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
- data/lib/axlsx/drawing/pie_series.rb +69 -74
- data/lib/axlsx/drawing/scaling.rb +57 -60
- data/lib/axlsx/drawing/scatter_chart.rb +71 -74
- data/lib/axlsx/drawing/scatter_series.rb +126 -129
- data/lib/axlsx/drawing/ser_axis.rb +41 -45
- data/lib/axlsx/drawing/series.rb +67 -69
- data/lib/axlsx/drawing/series_title.rb +23 -25
- data/lib/axlsx/drawing/str_data.rb +37 -42
- data/lib/axlsx/drawing/str_val.rb +31 -34
- data/lib/axlsx/drawing/title.rb +104 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
- data/lib/axlsx/drawing/val_axis.rb +34 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +39 -42
- data/lib/axlsx/drawing/vml_shape.rb +63 -66
- data/lib/axlsx/package.rb +397 -388
- data/lib/axlsx/rels/relationship.rb +127 -130
- data/lib/axlsx/rels/relationships.rb +29 -32
- data/lib/axlsx/stylesheet/border.rb +70 -73
- data/lib/axlsx/stylesheet/border_pr.rb +69 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
- data/lib/axlsx/stylesheet/cell_style.rb +68 -72
- data/lib/axlsx/stylesheet/color.rb +77 -76
- data/lib/axlsx/stylesheet/dxf.rb +75 -79
- data/lib/axlsx/stylesheet/fill.rb +31 -35
- data/lib/axlsx/stylesheet/font.rb +157 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
- data/lib/axlsx/stylesheet/styles.rb +543 -494
- data/lib/axlsx/stylesheet/table_style.rb +51 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
- data/lib/axlsx/stylesheet/table_styles.rb +42 -46
- data/lib/axlsx/stylesheet/xf.rb +144 -147
- data/lib/axlsx/util/accessors.rb +62 -64
- data/lib/axlsx/util/constants.rb +414 -410
- data/lib/axlsx/util/mime_type_utils.rb +24 -11
- data/lib/axlsx/util/options_parser.rb +15 -16
- data/lib/axlsx/util/serialized_attributes.rb +88 -89
- data/lib/axlsx/util/simple_typed_list.rb +180 -179
- data/lib/axlsx/util/storage.rb +142 -146
- data/lib/axlsx/util/validators.rb +315 -312
- data/lib/axlsx/util/zip_command.rb +71 -73
- data/lib/axlsx/version.rb +4 -5
- data/lib/axlsx/workbook/defined_name.rb +129 -128
- data/lib/axlsx/workbook/defined_names.rb +20 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
- data/lib/axlsx/workbook/workbook.rb +430 -395
- data/lib/axlsx/workbook/workbook_view.rb +75 -80
- data/lib/axlsx/workbook/workbook_views.rb +20 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
- data/lib/axlsx/workbook/worksheet/break.rb +32 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +552 -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 +16 -18
- data/lib/axlsx/workbook/worksheet/col.rb +142 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
- data/lib/axlsx/workbook/worksheet/row.rb +173 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
- data/lib/axlsx/workbook/worksheet/table.rb +100 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +218 -185
- data/lib/caxlsx.rb +1 -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,91 +1,90 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
# @
|
|
11
|
-
# @
|
|
12
|
-
# @option [String]
|
|
13
|
-
# @option [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
#
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
#
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@ref = v if v.is_a?(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
#
|
|
61
|
-
# @
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
str <<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
str <<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
str << '<
|
|
72
|
-
str << '<
|
|
73
|
-
str <<
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
vml.
|
|
85
|
-
vml.
|
|
86
|
-
vml.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# A comment is the text data for a comment
|
|
3
|
+
class Comment
|
|
4
|
+
include Axlsx::OptionsParser
|
|
5
|
+
include Axlsx::Accessors
|
|
6
|
+
|
|
7
|
+
# Creates a new comment object
|
|
8
|
+
# @param [Comments] comments The comment collection this comment belongs to
|
|
9
|
+
# @param [Hash] options
|
|
10
|
+
# @option [String] author the author of the comment
|
|
11
|
+
# @option [String] text The text for the comment
|
|
12
|
+
# @option [String] ref The refence (e.g. 'A3' where this comment will be anchored.
|
|
13
|
+
# @option [Boolean] visible This controls the visiblity of the associated vml_shape.
|
|
14
|
+
def initialize(comments, options = {})
|
|
15
|
+
raise ArgumentError, "A comment needs a parent comments object" unless comments.is_a?(Comments)
|
|
16
|
+
|
|
17
|
+
@visible = true
|
|
18
|
+
@comments = comments
|
|
19
|
+
parse_options options
|
|
20
|
+
yield self if block_given?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
string_attr_accessor :text, :author
|
|
24
|
+
boolean_attr_accessor :visible
|
|
25
|
+
|
|
26
|
+
# The owning Comments object
|
|
27
|
+
# @return [Comments]
|
|
28
|
+
attr_reader :comments
|
|
29
|
+
|
|
30
|
+
# The string based cell position reference (e.g. 'A1') that determines the positioning of this comment
|
|
31
|
+
# @return [String|Cell]
|
|
32
|
+
attr_reader :ref
|
|
33
|
+
|
|
34
|
+
# TODO
|
|
35
|
+
# r (Rich Text Run)
|
|
36
|
+
# rPh (Phonetic Text Run)
|
|
37
|
+
# phoneticPr (Phonetic Properties)
|
|
38
|
+
|
|
39
|
+
# The vml shape that will render this comment
|
|
40
|
+
# @return [VmlShape]
|
|
41
|
+
def vml_shape
|
|
42
|
+
@vml_shape ||= initialize_vml_shape
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# The index of this author in a unique sorted list of all authors in
|
|
46
|
+
# the comment.
|
|
47
|
+
# @return [Integer]
|
|
48
|
+
def author_index
|
|
49
|
+
@comments.authors.index(author)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @see ref
|
|
53
|
+
def ref=(v)
|
|
54
|
+
Axlsx::DataTypeValidator.validate :comment_ref, [String, Cell], v
|
|
55
|
+
@ref = v if v.is_a?(String)
|
|
56
|
+
@ref = v.r if v.is_a?(Cell)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# serialize the object
|
|
60
|
+
# @param [String] str
|
|
61
|
+
# @return [String]
|
|
62
|
+
def to_xml_string(str = "")
|
|
63
|
+
author = @comments.authors[author_index]
|
|
64
|
+
str << ('<comment ref="' << ref << '" authorId="' << author_index.to_s << '">')
|
|
65
|
+
str << '<text>'
|
|
66
|
+
unless author.to_s == ""
|
|
67
|
+
str << '<r><rPr><b/><color indexed="81"/></rPr>'
|
|
68
|
+
str << ("<t>" << ::CGI.escapeHTML(author.to_s) << ":\n</t></r>")
|
|
69
|
+
end
|
|
70
|
+
str << '<r>'
|
|
71
|
+
str << '<rPr><color indexed="81"/></rPr>'
|
|
72
|
+
str << ('<t>' << ::CGI.escapeHTML(text) << '</t></r></text>')
|
|
73
|
+
str << '</comment>'
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
# initialize the vml shape based on this comment's ref/position in the worksheet.
|
|
79
|
+
# by default, all columns are 5 columns wide and 5 rows high
|
|
80
|
+
def initialize_vml_shape
|
|
81
|
+
pos = Axlsx::name_to_indices(ref)
|
|
82
|
+
@vml_shape = VmlShape.new(:row => pos[1], :column => pos[0], :visible => @visible) do |vml|
|
|
83
|
+
vml.left_column = vml.column
|
|
84
|
+
vml.right_column = vml.column + 2
|
|
85
|
+
vml.top_row = vml.row
|
|
86
|
+
vml.bottom_row = vml.row + 4
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -1,82 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
# @
|
|
38
|
-
# @option options [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
raise ArgumentError, "Comment
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
#
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
#
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
#
|
|
64
|
-
# @
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
str << '
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Comments is a collection of Comment objects for a worksheet
|
|
3
|
+
class Comments < SimpleTypedList
|
|
4
|
+
# the vml_drawing that holds the shapes for comments
|
|
5
|
+
# @return [VmlDrawing]
|
|
6
|
+
attr_reader :vml_drawing
|
|
7
|
+
|
|
8
|
+
# The worksheet that these comments belong to
|
|
9
|
+
# @return [Worksheet]
|
|
10
|
+
attr_reader :worksheet
|
|
11
|
+
|
|
12
|
+
# The index of this collection in the workbook. Effectively the index of the worksheet.
|
|
13
|
+
# @return [Integer]
|
|
14
|
+
def index
|
|
15
|
+
@worksheet.index
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# The part name for this object
|
|
19
|
+
# @return [String]
|
|
20
|
+
def pn
|
|
21
|
+
"#{COMMENT_PN % (index + 1)}"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Creates a new Comments object
|
|
25
|
+
# @param [Worksheet] worksheet The sheet that these comments belong to.
|
|
26
|
+
def initialize(worksheet)
|
|
27
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
|
28
|
+
|
|
29
|
+
super(Comment)
|
|
30
|
+
@worksheet = worksheet
|
|
31
|
+
@vml_drawing = VmlDrawing.new(self)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Adds a new comment to the worksheet that owns these comments.
|
|
35
|
+
# @note the author, text and ref options are required
|
|
36
|
+
# @option options [String] author The name of the author for this comment
|
|
37
|
+
# @option options [String] text The text for this comment
|
|
38
|
+
# @option options [Stirng|Cell] ref The cell that this comment is attached to.
|
|
39
|
+
def add_comment(options = {})
|
|
40
|
+
raise ArgumentError, "Comment require an author" unless options[:author]
|
|
41
|
+
raise ArgumentError, "Comment requires text" unless options[:text]
|
|
42
|
+
raise ArgumentError, "Comment requires ref" unless options[:ref]
|
|
43
|
+
|
|
44
|
+
self << Comment.new(self, options)
|
|
45
|
+
yield last if block_given?
|
|
46
|
+
last
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# A sorted list of the unique authors in the contained comments
|
|
50
|
+
# @return [Array]
|
|
51
|
+
def authors
|
|
52
|
+
map { |comment| comment.author.to_s }.uniq.sort
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# The relationships required by this object
|
|
56
|
+
# @return [Array]
|
|
57
|
+
def relationships
|
|
58
|
+
[Relationship.new(self, VML_DRAWING_R, "../#{vml_drawing.pn}"),
|
|
59
|
+
Relationship.new(self, COMMENT_R, "../#{pn}")]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# serialize the object
|
|
63
|
+
# @param [String] str
|
|
64
|
+
# @return [String]
|
|
65
|
+
def to_xml_string(str = "")
|
|
66
|
+
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
67
|
+
str << ('<comments xmlns="' << XML_NS << '"><authors>')
|
|
68
|
+
authors.each do |author|
|
|
69
|
+
str << ('<author>' << author.to_s << '</author>')
|
|
70
|
+
end
|
|
71
|
+
str << '</authors><commentList>'
|
|
72
|
+
each do |comment|
|
|
73
|
+
comment.to_xml_string str
|
|
74
|
+
end
|
|
75
|
+
str << '</commentList></comments>'
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -1,82 +1,81 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# Conditional formatting allows styling of ranges based on functions
|
|
3
|
-
#
|
|
4
|
-
# @note The recommended way to manage conditional formatting is via Worksheet#add_conditional_formatting
|
|
5
|
-
# @see Worksheet#add_conditional_formatting
|
|
6
|
-
# @see ConditionalFormattingRule
|
|
7
|
-
class ConditionalFormatting
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
#
|
|
12
|
-
# @option options [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
# @
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
38
|
-
# { :type => :cellIs, :operator => :
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
# @
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
rules
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
# @
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
74
|
-
# @
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
str <<
|
|
78
|
-
str <<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Conditional formatting allows styling of ranges based on functions
|
|
3
|
+
#
|
|
4
|
+
# @note The recommended way to manage conditional formatting is via Worksheet#add_conditional_formatting
|
|
5
|
+
# @see Worksheet#add_conditional_formatting
|
|
6
|
+
# @see ConditionalFormattingRule
|
|
7
|
+
class ConditionalFormatting
|
|
8
|
+
include Axlsx::OptionsParser
|
|
9
|
+
|
|
10
|
+
# Creates a new {ConditionalFormatting} object
|
|
11
|
+
# @option options [Array] rules The rules to apply
|
|
12
|
+
# @option options [String] sqref The range to apply the rules to
|
|
13
|
+
def initialize(options = {})
|
|
14
|
+
@rules = []
|
|
15
|
+
parse_options options
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Range over which the formatting is applied, in "A1:B2" format
|
|
19
|
+
# @return [String]
|
|
20
|
+
attr_reader :sqref
|
|
21
|
+
|
|
22
|
+
# Rules to apply the formatting to. Can be either a hash of
|
|
23
|
+
# options to create a {ConditionalFormattingRule}, an array of hashes
|
|
24
|
+
# for multiple ConditionalFormattingRules, or an array of already
|
|
25
|
+
# created ConditionalFormattingRules.
|
|
26
|
+
# @see ConditionalFormattingRule#initialize
|
|
27
|
+
# @return [Array]
|
|
28
|
+
attr_reader :rules
|
|
29
|
+
|
|
30
|
+
# Add Conditional Formatting Rules to this object. Rules can either
|
|
31
|
+
# be already created {ConditionalFormattingRule} elements or
|
|
32
|
+
# hashes of options for automatic creation. If rules is a hash
|
|
33
|
+
# instead of an array, assume only one rule being added.
|
|
34
|
+
#
|
|
35
|
+
# @example This would apply formatting "1" to cells > 20, and formatting "2" to cells < 1
|
|
36
|
+
# conditional_formatting.add_rules [
|
|
37
|
+
# { :type => :cellIs, :operator => :greaterThan, :formula => "20", :dxfId => 1, :priority=> 1 },
|
|
38
|
+
# { :type => :cellIs, :operator => :lessThan, :formula => "10", :dxfId => 2, :priority=> 2 } ]
|
|
39
|
+
#
|
|
40
|
+
# @param [Array|Hash] rules the rules to apply, can be just one in hash form
|
|
41
|
+
# @see ConditionalFormattingRule#initialize
|
|
42
|
+
def add_rules(rules)
|
|
43
|
+
rules = [rules] if rules.is_a? Hash
|
|
44
|
+
rules.each do |rule|
|
|
45
|
+
add_rule rule
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Add a ConditionalFormattingRule. If a hash of options is passed
|
|
50
|
+
# in create a rule on the fly.
|
|
51
|
+
# @param [ConditionalFormattingRule|Hash] rule A rule to use, or the options necessary to create one.
|
|
52
|
+
# @see ConditionalFormattingRule#initialize
|
|
53
|
+
def add_rule(rule)
|
|
54
|
+
if rule.is_a? Axlsx::ConditionalFormattingRule
|
|
55
|
+
@rules << rule
|
|
56
|
+
elsif rule.is_a? Hash
|
|
57
|
+
@rules << ConditionalFormattingRule.new(rule)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# @see rules
|
|
62
|
+
def rules=(v); @rules = v end
|
|
63
|
+
# @see sqref
|
|
64
|
+
def sqref=(v); Axlsx::validate_string(v); @sqref = v end
|
|
65
|
+
|
|
66
|
+
# Serializes the conditional formatting element
|
|
67
|
+
# @example Conditional Formatting XML looks like:
|
|
68
|
+
# <conditionalFormatting sqref="E3:E9">
|
|
69
|
+
# <cfRule type="cellIs" dxfId="0" priority="1" operator="greaterThan">
|
|
70
|
+
# <formula>0.5</formula>
|
|
71
|
+
# </cfRule>
|
|
72
|
+
# </conditionalFormatting>
|
|
73
|
+
# @param [String] str
|
|
74
|
+
# @return [String]
|
|
75
|
+
def to_xml_string(str = '')
|
|
76
|
+
str << ('<conditionalFormatting sqref="' << sqref << '">')
|
|
77
|
+
str << rules.collect { |rule| rule.to_xml_string }.join(' ')
|
|
78
|
+
str << '</conditionalFormatting>'
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|