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,64 +1,65 @@
|
|
|
1
|
-
module Axlsx
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
str << "<dimension ref=\"%s\"></dimension>" % sqref
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# The first cell in the dimension
|
|
44
|
-
# @return [String]
|
|
45
|
-
def first_cell_reference
|
|
46
|
-
dimension_reference(worksheet.rows.first.first, Dimension.default_first)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# the last cell in the dimension
|
|
50
|
-
# @return [String]
|
|
51
|
-
def last_cell_reference
|
|
52
|
-
dimension_reference(worksheet.rows.last.last, Dimension.default_last)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
# Returns the reference of a cell or the default specified
|
|
58
|
-
# @return [String]
|
|
59
|
-
def dimension_reference(cell, default)
|
|
60
|
-
return default unless cell.respond_to?(:r)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# This class manages the dimensions for a worksheet.
|
|
3
|
+
# While this node is optional in the specification some readers like
|
|
4
|
+
# LibraOffice require this node to render the sheet
|
|
5
|
+
class Dimension
|
|
6
|
+
# the default value for the first cell in the dimension
|
|
7
|
+
# @return [String]
|
|
8
|
+
def self.default_first
|
|
9
|
+
@@default_first ||= 'A1'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# the default value for the last cell in the dimension
|
|
13
|
+
# @return [String]
|
|
14
|
+
def self.default_last
|
|
15
|
+
@@default_last ||= 'AA200'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Creates a new dimension object
|
|
19
|
+
# @param[Worksheet] worksheet - the worksheet this dimension applies
|
|
20
|
+
# to.
|
|
21
|
+
def initialize(worksheet)
|
|
22
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
|
23
|
+
|
|
24
|
+
@worksheet = worksheet
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
attr_reader :worksheet
|
|
28
|
+
|
|
29
|
+
# the full refernece for this dimension
|
|
30
|
+
# @return [String]
|
|
31
|
+
def sqref
|
|
32
|
+
"#{first_cell_reference}:#{last_cell_reference}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# serialize the object
|
|
36
|
+
# @return [String]
|
|
37
|
+
def to_xml_string(str = '')
|
|
38
|
+
return if worksheet.rows.empty?
|
|
39
|
+
|
|
40
|
+
str << "<dimension ref=\"%s\"></dimension>" % sqref
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# The first cell in the dimension
|
|
44
|
+
# @return [String]
|
|
45
|
+
def first_cell_reference
|
|
46
|
+
dimension_reference(worksheet.rows.first.first, Dimension.default_first)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# the last cell in the dimension
|
|
50
|
+
# @return [String]
|
|
51
|
+
def last_cell_reference
|
|
52
|
+
dimension_reference(worksheet.rows.last.last, Dimension.default_last)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
# Returns the reference of a cell or the default specified
|
|
58
|
+
# @return [String]
|
|
59
|
+
def dimension_reference(cell, default)
|
|
60
|
+
return default unless cell.respond_to?(:r)
|
|
61
|
+
|
|
62
|
+
cell.r
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -1,52 +1,51 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# Header/Footer options for printing a worksheet. All settings are optional.
|
|
3
|
-
#
|
|
4
|
-
# Headers and footers are generated using a string which is a combination
|
|
5
|
-
# of plain text and control characters. A fairly comprehensive list of control
|
|
6
|
-
# characters can be found here:
|
|
7
|
-
# https://github.com/randym/axlsx/blob/master/notes_on_header_footer.md
|
|
8
|
-
#
|
|
9
|
-
# @note The recommended way of managing header/footers is via Worksheet#header_footer
|
|
10
|
-
# @see Worksheet#initialize
|
|
11
|
-
class HeaderFooter
|
|
12
|
-
|
|
13
|
-
include Axlsx::
|
|
14
|
-
include Axlsx::
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
# @option options [String]
|
|
19
|
-
# @option options [String]
|
|
20
|
-
# @option options [String]
|
|
21
|
-
# @option options [String]
|
|
22
|
-
# @option options [String]
|
|
23
|
-
# @option options [
|
|
24
|
-
# @option options [Boolean]
|
|
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
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Header/Footer options for printing a worksheet. All settings are optional.
|
|
3
|
+
#
|
|
4
|
+
# Headers and footers are generated using a string which is a combination
|
|
5
|
+
# of plain text and control characters. A fairly comprehensive list of control
|
|
6
|
+
# characters can be found here:
|
|
7
|
+
# https://github.com/randym/axlsx/blob/master/notes_on_header_footer.md
|
|
8
|
+
#
|
|
9
|
+
# @note The recommended way of managing header/footers is via Worksheet#header_footer
|
|
10
|
+
# @see Worksheet#initialize
|
|
11
|
+
class HeaderFooter
|
|
12
|
+
include Axlsx::OptionsParser
|
|
13
|
+
include Axlsx::SerializedAttributes
|
|
14
|
+
include Axlsx::Accessors
|
|
15
|
+
|
|
16
|
+
# Creates a new HeaderFooter object
|
|
17
|
+
# @option options [String] odd_header The content for headers on odd numbered pages.
|
|
18
|
+
# @option options [String] odd_footer The content for footers on odd numbered pages.
|
|
19
|
+
# @option options [String] even_header The content for headers on even numbered pages.
|
|
20
|
+
# @option options [String] even_footer The content for footers on even numbered pages.
|
|
21
|
+
# @option options [String] first_header The content for headers on the first page.
|
|
22
|
+
# @option options [String] first_footer The content for footers on the first page.
|
|
23
|
+
# @option options [Boolean] different_odd_even Setting this to true will show different headers/footers on odd and even pages. When false, the odd headers/footers are used on each page. (Default: false)
|
|
24
|
+
# @option options [Boolean] different_first If true, will use the first header/footer on page 1. Otherwise, the odd header/footer is used.
|
|
25
|
+
def initialize(options = {})
|
|
26
|
+
parse_options options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
serializable_attributes :different_odd_even, :different_first
|
|
30
|
+
serializable_element_attributes :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
|
|
31
|
+
string_attr_accessor :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
|
|
32
|
+
boolean_attr_accessor :different_odd_even, :different_first
|
|
33
|
+
|
|
34
|
+
# Set some or all header/footers at once.
|
|
35
|
+
# @param [Hash] options The header/footer options to set (possible keys are :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer, :different_odd_even, and :different_first).
|
|
36
|
+
def set(options)
|
|
37
|
+
parse_options options
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Serializes the header/footer object.
|
|
41
|
+
# @param [String] str
|
|
42
|
+
# @return [String]
|
|
43
|
+
def to_xml_string(str = '')
|
|
44
|
+
serialized_tag('headerFooter', str) do
|
|
45
|
+
serialized_element_attributes(str) do |value|
|
|
46
|
+
value = ::CGI.escapeHTML(value)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -1,81 +1,80 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# Conditional Format Rule icon sets
|
|
3
|
-
# Describes an icon set conditional formatting rule.
|
|
4
|
-
|
|
5
|
-
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
6
|
-
# @see Worksheet#add_conditional_formatting
|
|
7
|
-
# @see ConditionalFormattingRule#initialize
|
|
8
|
-
class IconSet
|
|
9
|
-
|
|
10
|
-
include Axlsx::
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
# @option options [
|
|
15
|
-
# @option options [Boolean]
|
|
16
|
-
# @option options [Boolean]
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
# @
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
#
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
@value_objects
|
|
77
|
-
@value_objects.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Conditional Format Rule icon sets
|
|
3
|
+
# Describes an icon set conditional formatting rule.
|
|
4
|
+
|
|
5
|
+
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
6
|
+
# @see Worksheet#add_conditional_formatting
|
|
7
|
+
# @see ConditionalFormattingRule#initialize
|
|
8
|
+
class IconSet
|
|
9
|
+
include Axlsx::OptionsParser
|
|
10
|
+
include Axlsx::SerializedAttributes
|
|
11
|
+
|
|
12
|
+
# Creates a new icon set object
|
|
13
|
+
# @option options [String] iconSet
|
|
14
|
+
# @option options [Boolean] reverse
|
|
15
|
+
# @option options [Boolean] percent
|
|
16
|
+
# @option options [Boolean] showValue
|
|
17
|
+
def initialize(options = {})
|
|
18
|
+
@percent = @showValue = true
|
|
19
|
+
@reverse = false
|
|
20
|
+
@iconSet = "3TrafficLights1"
|
|
21
|
+
initialize_value_objects
|
|
22
|
+
parse_options options
|
|
23
|
+
yield self if block_given?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
serializable_attributes :iconSet, :percent, :reverse, :showValue
|
|
27
|
+
|
|
28
|
+
# The icon set to display.
|
|
29
|
+
# Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters
|
|
30
|
+
# The default value is 3TrafficLights1
|
|
31
|
+
# @return [String]
|
|
32
|
+
attr_reader :iconSet
|
|
33
|
+
|
|
34
|
+
# Indicates whether the thresholds indicate percentile values, instead of number values.
|
|
35
|
+
# The default falue is true
|
|
36
|
+
# @return [Boolean]
|
|
37
|
+
attr_reader :percent
|
|
38
|
+
|
|
39
|
+
# If true, reverses the default order of the icons in this icon set.maxLength attribute
|
|
40
|
+
# The default value is false
|
|
41
|
+
# @return [Boolean]
|
|
42
|
+
attr_reader :reverse
|
|
43
|
+
|
|
44
|
+
# Indicates whether to show the values of the cells on which this data bar is applied.
|
|
45
|
+
# The default value is true
|
|
46
|
+
# @return [Boolean]
|
|
47
|
+
attr_reader :showValue
|
|
48
|
+
|
|
49
|
+
# @see iconSet
|
|
50
|
+
def iconSet=(v); Axlsx::validate_icon_set(v); @iconSet = v end
|
|
51
|
+
|
|
52
|
+
# @see showValue
|
|
53
|
+
def showValue=(v); Axlsx.validate_boolean(v); @showValue = v end
|
|
54
|
+
|
|
55
|
+
# @see percent
|
|
56
|
+
def percent=(v); Axlsx.validate_boolean(v); @percent = v end
|
|
57
|
+
|
|
58
|
+
# @see reverse
|
|
59
|
+
def reverse=(v); Axlsx.validate_boolean(v); @reverse = v end
|
|
60
|
+
|
|
61
|
+
# Serialize this object to an xml string
|
|
62
|
+
# @param [String] str
|
|
63
|
+
# @return [String]
|
|
64
|
+
def to_xml_string(str = "")
|
|
65
|
+
serialized_tag('iconSet', str) do
|
|
66
|
+
@value_objects.each { |cfvo| cfvo.to_xml_string(str) }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
private
|
|
71
|
+
|
|
72
|
+
# Initalize the simple typed list of value objects
|
|
73
|
+
# I am keeping this private for now as I am not sure what impact changes to the required two cfvo objects will do.
|
|
74
|
+
def initialize_value_objects
|
|
75
|
+
@value_objects = SimpleTypedList.new Cfvo
|
|
76
|
+
@value_objects.concat [Cfvo.new(:type => :percent, :val => 0), Cfvo.new(:type => :percent, :val => 33), Cfvo.new(:type => :percent, :val => 67)]
|
|
77
|
+
@value_objects.lock
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
module Axlsx
|
|
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
|
-
str << "<mergeCells count='#{size}'>"
|
|
33
|
-
each { |merged_cell| str << "<mergeCell ref='#{merged_cell}'></mergeCell>" }
|
|
34
|
-
str << '</mergeCells>'
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# A simple list of merged cells
|
|
3
|
+
class MergedCells < SimpleTypedList
|
|
4
|
+
# creates a new MergedCells object
|
|
5
|
+
# @param [Worksheet] worksheet
|
|
6
|
+
def initialize(worksheet)
|
|
7
|
+
raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
|
|
8
|
+
|
|
9
|
+
super String
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# adds cells to the merged cells collection
|
|
13
|
+
# @param [Array||String] cells The cells to add to the merged cells
|
|
14
|
+
# collection. This can be an array of actual cells or a string style
|
|
15
|
+
# range like 'A1:C1'
|
|
16
|
+
def add(cells)
|
|
17
|
+
self << if cells.is_a?(String)
|
|
18
|
+
cells
|
|
19
|
+
elsif cells.is_a?(Array)
|
|
20
|
+
Axlsx::cell_range(cells, false)
|
|
21
|
+
elsif cells.is_a?(Row)
|
|
22
|
+
Axlsx::cell_range(cells, false)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# serialize the object
|
|
27
|
+
# @param [String] str
|
|
28
|
+
# @return [String]
|
|
29
|
+
def to_xml_string(str = '')
|
|
30
|
+
return if empty?
|
|
31
|
+
|
|
32
|
+
str << "<mergeCells count='#{size}'>"
|
|
33
|
+
each { |merged_cell| str << "<mergeCell ref='#{merged_cell}'></mergeCell>" }
|
|
34
|
+
str << '</mergeCells>'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
include Axlsx::
|
|
7
|
-
include Axlsx::
|
|
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
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# The OutlinePr class manages serialization of a worksheet's outlinePr element, which provides various
|
|
3
|
+
# options to control outlining.
|
|
4
|
+
class OutlinePr
|
|
5
|
+
include Axlsx::OptionsParser
|
|
6
|
+
include Axlsx::Accessors
|
|
7
|
+
include Axlsx::SerializedAttributes
|
|
8
|
+
|
|
9
|
+
serializable_attributes :summary_below,
|
|
10
|
+
:summary_right,
|
|
11
|
+
:apply_styles
|
|
12
|
+
|
|
13
|
+
# These attributes are all boolean so I'm doing a bit of a hand
|
|
14
|
+
# waving magic show to set up the attriubte accessors
|
|
15
|
+
boolean_attr_accessor :summary_below,
|
|
16
|
+
:summary_right,
|
|
17
|
+
:apply_styles
|
|
18
|
+
|
|
19
|
+
# Creates a new OutlinePr object
|
|
20
|
+
# @param [Hash] options used to create the outline_pr
|
|
21
|
+
def initialize(options = {})
|
|
22
|
+
parse_options options
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Serialize the object
|
|
26
|
+
# @param [String] str serialized output will be appended to this object if provided.
|
|
27
|
+
# @return [String]
|
|
28
|
+
def to_xml_string(str = '')
|
|
29
|
+
str << "<outlinePr #{serialized_attributes} />"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|