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,395 +1,425 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
module Axlsx
|
|
3
|
-
require 'axlsx/workbook/worksheet/sheet_calc_pr.rb'
|
|
4
|
-
require 'axlsx/workbook/worksheet/auto_filter/auto_filter.rb'
|
|
5
|
-
require 'axlsx/workbook/worksheet/date_time_converter.rb'
|
|
6
|
-
require 'axlsx/workbook/worksheet/protected_range.rb'
|
|
7
|
-
require 'axlsx/workbook/worksheet/protected_ranges.rb'
|
|
8
|
-
require 'axlsx/workbook/worksheet/rich_text_run'
|
|
9
|
-
require 'axlsx/workbook/worksheet/rich_text'
|
|
10
|
-
require 'axlsx/workbook/worksheet/cell_serializer.rb'
|
|
11
|
-
require 'axlsx/workbook/worksheet/cell.rb'
|
|
12
|
-
require 'axlsx/workbook/worksheet/page_margins.rb'
|
|
13
|
-
require 'axlsx/workbook/worksheet/page_set_up_pr.rb'
|
|
14
|
-
require 'axlsx/workbook/worksheet/outline_pr.rb'
|
|
15
|
-
require 'axlsx/workbook/worksheet/page_setup.rb'
|
|
16
|
-
require 'axlsx/workbook/worksheet/header_footer.rb'
|
|
17
|
-
require 'axlsx/workbook/worksheet/print_options.rb'
|
|
18
|
-
require 'axlsx/workbook/worksheet/cfvo.rb'
|
|
19
|
-
require 'axlsx/workbook/worksheet/cfvos.rb'
|
|
20
|
-
require 'axlsx/workbook/worksheet/color_scale.rb'
|
|
21
|
-
require 'axlsx/workbook/worksheet/data_bar.rb'
|
|
22
|
-
require 'axlsx/workbook/worksheet/icon_set.rb'
|
|
23
|
-
require 'axlsx/workbook/worksheet/conditional_formatting.rb'
|
|
24
|
-
require 'axlsx/workbook/worksheet/conditional_formatting_rule.rb'
|
|
25
|
-
require 'axlsx/workbook/worksheet/conditional_formattings.rb'
|
|
26
|
-
require 'axlsx/workbook/worksheet/row.rb'
|
|
27
|
-
require 'axlsx/workbook/worksheet/col.rb'
|
|
28
|
-
require 'axlsx/workbook/worksheet/cols.rb'
|
|
29
|
-
require 'axlsx/workbook/worksheet/comments.rb'
|
|
30
|
-
require 'axlsx/workbook/worksheet/comment.rb'
|
|
31
|
-
require 'axlsx/workbook/worksheet/merged_cells.rb'
|
|
32
|
-
require 'axlsx/workbook/worksheet/sheet_protection.rb'
|
|
33
|
-
require 'axlsx/workbook/worksheet/sheet_pr.rb'
|
|
34
|
-
require 'axlsx/workbook/worksheet/dimension.rb'
|
|
35
|
-
require 'axlsx/workbook/worksheet/sheet_data.rb'
|
|
36
|
-
require 'axlsx/workbook/worksheet/worksheet_drawing.rb'
|
|
37
|
-
require 'axlsx/workbook/worksheet/worksheet_comments.rb'
|
|
38
|
-
require 'axlsx/workbook/worksheet/worksheet_hyperlink'
|
|
39
|
-
require 'axlsx/workbook/worksheet/worksheet_hyperlinks'
|
|
40
|
-
require 'axlsx/workbook/worksheet/break'
|
|
41
|
-
require 'axlsx/workbook/worksheet/row_breaks'
|
|
42
|
-
require 'axlsx/workbook/worksheet/col_breaks'
|
|
43
|
-
require 'axlsx/workbook/workbook_view'
|
|
44
|
-
require 'axlsx/workbook/workbook_views'
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
require 'axlsx/workbook/worksheet/worksheet.rb'
|
|
48
|
-
require 'axlsx/workbook/shared_strings_table.rb'
|
|
49
|
-
require 'axlsx/workbook/defined_name.rb'
|
|
50
|
-
require 'axlsx/workbook/defined_names.rb'
|
|
51
|
-
require 'axlsx/workbook/worksheet/table_style_info.rb'
|
|
52
|
-
require 'axlsx/workbook/worksheet/table.rb'
|
|
53
|
-
require 'axlsx/workbook/worksheet/tables.rb'
|
|
54
|
-
require 'axlsx/workbook/worksheet/pivot_table_cache_definition.rb'
|
|
55
|
-
require 'axlsx/workbook/worksheet/pivot_table.rb'
|
|
56
|
-
require 'axlsx/workbook/worksheet/pivot_tables.rb'
|
|
57
|
-
require 'axlsx/workbook/worksheet/data_validation.rb'
|
|
58
|
-
require 'axlsx/workbook/worksheet/data_validations.rb'
|
|
59
|
-
require 'axlsx/workbook/worksheet/sheet_view.rb'
|
|
60
|
-
require 'axlsx/workbook/worksheet/sheet_format_pr.rb'
|
|
61
|
-
require 'axlsx/workbook/worksheet/pane.rb'
|
|
62
|
-
require 'axlsx/workbook/worksheet/selection.rb'
|
|
63
|
-
# The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
|
|
64
|
-
# The following parts of the Office Open XML spreadsheet specification are not implimented in this version.
|
|
65
|
-
#
|
|
66
|
-
# bookViews
|
|
67
|
-
# calcPr
|
|
68
|
-
# customWorkbookViews
|
|
69
|
-
# definedNames
|
|
70
|
-
# externalReferences
|
|
71
|
-
# extLst
|
|
72
|
-
# fileRecoveryPr
|
|
73
|
-
# fileSharing
|
|
74
|
-
# fileVersion
|
|
75
|
-
# functionGroups
|
|
76
|
-
# oleSize
|
|
77
|
-
# pivotCaches
|
|
78
|
-
# smartTagPr
|
|
79
|
-
# smartTagTypes
|
|
80
|
-
# webPublishing
|
|
81
|
-
# webPublishObjects
|
|
82
|
-
# workbookProtection
|
|
83
|
-
# workbookPr*
|
|
84
|
-
#
|
|
85
|
-
# *workbookPr is only supported to the extend of date1904
|
|
86
|
-
class Workbook
|
|
87
|
-
|
|
88
|
-
BOLD_FONT_MULTIPLIER = 1.5
|
|
89
|
-
FONT_SCALE_DIVISOR = 10.0
|
|
90
|
-
|
|
91
|
-
# When true, the Package will be generated with a shared string table. This may be required by some OOXML processors that do not
|
|
92
|
-
# adhere to the ECMA specification that dictates string may be inline in the sheet.
|
|
93
|
-
# Using this option will increase the time required to serialize the document as every string in every cell must be analzed and referenced.
|
|
94
|
-
# @return [Boolean]
|
|
95
|
-
attr_reader :use_shared_strings
|
|
96
|
-
|
|
97
|
-
# @see use_shared_strings
|
|
98
|
-
def use_shared_strings=(v)
|
|
99
|
-
Axlsx::validate_boolean(v)
|
|
100
|
-
@use_shared_strings = v
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# If true reverse the order in which the workbook is serialized
|
|
104
|
-
# @return [Boolean]
|
|
105
|
-
attr_reader :is_reversed
|
|
106
|
-
|
|
107
|
-
def is_reversed=(v)
|
|
108
|
-
Axlsx::validate_boolean(v)
|
|
109
|
-
@is_reversed = v
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
# A collection of worksheets associated with this workbook.
|
|
114
|
-
# @note The recommended way to manage worksheets is add_worksheet
|
|
115
|
-
# @see Workbook#add_worksheet
|
|
116
|
-
# @see Worksheet
|
|
117
|
-
# @return [SimpleTypedList]
|
|
118
|
-
attr_reader :worksheets
|
|
119
|
-
|
|
120
|
-
# A colllection of charts associated with this workbook
|
|
121
|
-
# @note The recommended way to manage charts is Worksheet#add_chart
|
|
122
|
-
# @see Worksheet#add_chart
|
|
123
|
-
# @see Chart
|
|
124
|
-
# @return [SimpleTypedList]
|
|
125
|
-
attr_reader :charts
|
|
126
|
-
|
|
127
|
-
# A colllection of images associated with this workbook
|
|
128
|
-
# @note The recommended way to manage images is Worksheet#add_image
|
|
129
|
-
# @see Worksheet#add_image
|
|
130
|
-
# @see Pic
|
|
131
|
-
# @return [SimpleTypedList]
|
|
132
|
-
attr_reader :images
|
|
133
|
-
|
|
134
|
-
# A colllection of drawings associated with this workbook
|
|
135
|
-
# @note The recommended way to manage drawings is Worksheet#add_chart
|
|
136
|
-
# @see Worksheet#add_chart
|
|
137
|
-
# @see Drawing
|
|
138
|
-
# @return [SimpleTypedList]
|
|
139
|
-
attr_reader :drawings
|
|
140
|
-
|
|
141
|
-
# pretty sure this two are always empty and can be removed.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
# A colllection of tables associated with this workbook
|
|
145
|
-
# @note The recommended way to manage drawings is Worksheet#add_table
|
|
146
|
-
# @see Worksheet#add_table
|
|
147
|
-
# @see Table
|
|
148
|
-
# @return [SimpleTypedList]
|
|
149
|
-
attr_reader :tables
|
|
150
|
-
|
|
151
|
-
# A colllection of pivot tables associated with this workbook
|
|
152
|
-
# @note The recommended way to manage drawings is Worksheet#add_table
|
|
153
|
-
# @see Worksheet#add_table
|
|
154
|
-
# @see Table
|
|
155
|
-
# @return [SimpleTypedList]
|
|
156
|
-
attr_reader :pivot_tables
|
|
157
|
-
|
|
158
|
-
# A collection of views for this workbook
|
|
159
|
-
def views
|
|
160
|
-
@views ||= WorkbookViews.new
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
# A collection of defined names for this workbook
|
|
164
|
-
# @note The recommended way to manage defined names is Workbook#add_defined_name
|
|
165
|
-
# @see DefinedName
|
|
166
|
-
# @return [DefinedNames]
|
|
167
|
-
def defined_names
|
|
168
|
-
@defined_names ||= DefinedNames.new
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
# A collection of comments associated with this workbook
|
|
172
|
-
# @note The recommended way to manage comments is WOrksheet#add_comment
|
|
173
|
-
# @see Worksheet#add_comment
|
|
174
|
-
# @see Comment
|
|
175
|
-
# @return [Comments]
|
|
176
|
-
def comments
|
|
177
|
-
worksheets.map { |sheet| sheet.comments }.compact
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
# The styles associated with this workbook
|
|
181
|
-
# @note The recommended way to manage styles is Styles#add_style
|
|
182
|
-
# @see Style#add_style
|
|
183
|
-
# @see Style
|
|
184
|
-
# @return [Styles]
|
|
185
|
-
def styles
|
|
186
|
-
yield @styles if block_given?
|
|
187
|
-
@styles
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
#
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
#
|
|
197
|
-
# @return
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
#
|
|
227
|
-
# @return [
|
|
228
|
-
def
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
#
|
|
234
|
-
#
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
#
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
#
|
|
272
|
-
#
|
|
273
|
-
#
|
|
274
|
-
#
|
|
275
|
-
# @
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
# @
|
|
279
|
-
def
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
#
|
|
292
|
-
#
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
#
|
|
302
|
-
#
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
#
|
|
308
|
-
# @
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
#
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
#
|
|
339
|
-
#
|
|
340
|
-
#
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
#
|
|
369
|
-
#
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
end
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
module Axlsx
|
|
3
|
+
require 'axlsx/workbook/worksheet/sheet_calc_pr.rb'
|
|
4
|
+
require 'axlsx/workbook/worksheet/auto_filter/auto_filter.rb'
|
|
5
|
+
require 'axlsx/workbook/worksheet/date_time_converter.rb'
|
|
6
|
+
require 'axlsx/workbook/worksheet/protected_range.rb'
|
|
7
|
+
require 'axlsx/workbook/worksheet/protected_ranges.rb'
|
|
8
|
+
require 'axlsx/workbook/worksheet/rich_text_run'
|
|
9
|
+
require 'axlsx/workbook/worksheet/rich_text'
|
|
10
|
+
require 'axlsx/workbook/worksheet/cell_serializer.rb'
|
|
11
|
+
require 'axlsx/workbook/worksheet/cell.rb'
|
|
12
|
+
require 'axlsx/workbook/worksheet/page_margins.rb'
|
|
13
|
+
require 'axlsx/workbook/worksheet/page_set_up_pr.rb'
|
|
14
|
+
require 'axlsx/workbook/worksheet/outline_pr.rb'
|
|
15
|
+
require 'axlsx/workbook/worksheet/page_setup.rb'
|
|
16
|
+
require 'axlsx/workbook/worksheet/header_footer.rb'
|
|
17
|
+
require 'axlsx/workbook/worksheet/print_options.rb'
|
|
18
|
+
require 'axlsx/workbook/worksheet/cfvo.rb'
|
|
19
|
+
require 'axlsx/workbook/worksheet/cfvos.rb'
|
|
20
|
+
require 'axlsx/workbook/worksheet/color_scale.rb'
|
|
21
|
+
require 'axlsx/workbook/worksheet/data_bar.rb'
|
|
22
|
+
require 'axlsx/workbook/worksheet/icon_set.rb'
|
|
23
|
+
require 'axlsx/workbook/worksheet/conditional_formatting.rb'
|
|
24
|
+
require 'axlsx/workbook/worksheet/conditional_formatting_rule.rb'
|
|
25
|
+
require 'axlsx/workbook/worksheet/conditional_formattings.rb'
|
|
26
|
+
require 'axlsx/workbook/worksheet/row.rb'
|
|
27
|
+
require 'axlsx/workbook/worksheet/col.rb'
|
|
28
|
+
require 'axlsx/workbook/worksheet/cols.rb'
|
|
29
|
+
require 'axlsx/workbook/worksheet/comments.rb'
|
|
30
|
+
require 'axlsx/workbook/worksheet/comment.rb'
|
|
31
|
+
require 'axlsx/workbook/worksheet/merged_cells.rb'
|
|
32
|
+
require 'axlsx/workbook/worksheet/sheet_protection.rb'
|
|
33
|
+
require 'axlsx/workbook/worksheet/sheet_pr.rb'
|
|
34
|
+
require 'axlsx/workbook/worksheet/dimension.rb'
|
|
35
|
+
require 'axlsx/workbook/worksheet/sheet_data.rb'
|
|
36
|
+
require 'axlsx/workbook/worksheet/worksheet_drawing.rb'
|
|
37
|
+
require 'axlsx/workbook/worksheet/worksheet_comments.rb'
|
|
38
|
+
require 'axlsx/workbook/worksheet/worksheet_hyperlink'
|
|
39
|
+
require 'axlsx/workbook/worksheet/worksheet_hyperlinks'
|
|
40
|
+
require 'axlsx/workbook/worksheet/break'
|
|
41
|
+
require 'axlsx/workbook/worksheet/row_breaks'
|
|
42
|
+
require 'axlsx/workbook/worksheet/col_breaks'
|
|
43
|
+
require 'axlsx/workbook/workbook_view'
|
|
44
|
+
require 'axlsx/workbook/workbook_views'
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
require 'axlsx/workbook/worksheet/worksheet.rb'
|
|
48
|
+
require 'axlsx/workbook/shared_strings_table.rb'
|
|
49
|
+
require 'axlsx/workbook/defined_name.rb'
|
|
50
|
+
require 'axlsx/workbook/defined_names.rb'
|
|
51
|
+
require 'axlsx/workbook/worksheet/table_style_info.rb'
|
|
52
|
+
require 'axlsx/workbook/worksheet/table.rb'
|
|
53
|
+
require 'axlsx/workbook/worksheet/tables.rb'
|
|
54
|
+
require 'axlsx/workbook/worksheet/pivot_table_cache_definition.rb'
|
|
55
|
+
require 'axlsx/workbook/worksheet/pivot_table.rb'
|
|
56
|
+
require 'axlsx/workbook/worksheet/pivot_tables.rb'
|
|
57
|
+
require 'axlsx/workbook/worksheet/data_validation.rb'
|
|
58
|
+
require 'axlsx/workbook/worksheet/data_validations.rb'
|
|
59
|
+
require 'axlsx/workbook/worksheet/sheet_view.rb'
|
|
60
|
+
require 'axlsx/workbook/worksheet/sheet_format_pr.rb'
|
|
61
|
+
require 'axlsx/workbook/worksheet/pane.rb'
|
|
62
|
+
require 'axlsx/workbook/worksheet/selection.rb'
|
|
63
|
+
# The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
|
|
64
|
+
# The following parts of the Office Open XML spreadsheet specification are not implimented in this version.
|
|
65
|
+
#
|
|
66
|
+
# bookViews
|
|
67
|
+
# calcPr
|
|
68
|
+
# customWorkbookViews
|
|
69
|
+
# definedNames
|
|
70
|
+
# externalReferences
|
|
71
|
+
# extLst
|
|
72
|
+
# fileRecoveryPr
|
|
73
|
+
# fileSharing
|
|
74
|
+
# fileVersion
|
|
75
|
+
# functionGroups
|
|
76
|
+
# oleSize
|
|
77
|
+
# pivotCaches
|
|
78
|
+
# smartTagPr
|
|
79
|
+
# smartTagTypes
|
|
80
|
+
# webPublishing
|
|
81
|
+
# webPublishObjects
|
|
82
|
+
# workbookProtection
|
|
83
|
+
# workbookPr*
|
|
84
|
+
#
|
|
85
|
+
# *workbookPr is only supported to the extend of date1904
|
|
86
|
+
class Workbook
|
|
87
|
+
|
|
88
|
+
BOLD_FONT_MULTIPLIER = 1.5
|
|
89
|
+
FONT_SCALE_DIVISOR = 10.0
|
|
90
|
+
|
|
91
|
+
# When true, the Package will be generated with a shared string table. This may be required by some OOXML processors that do not
|
|
92
|
+
# adhere to the ECMA specification that dictates string may be inline in the sheet.
|
|
93
|
+
# Using this option will increase the time required to serialize the document as every string in every cell must be analzed and referenced.
|
|
94
|
+
# @return [Boolean]
|
|
95
|
+
attr_reader :use_shared_strings
|
|
96
|
+
|
|
97
|
+
# @see use_shared_strings
|
|
98
|
+
def use_shared_strings=(v)
|
|
99
|
+
Axlsx::validate_boolean(v)
|
|
100
|
+
@use_shared_strings = v
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# If true reverse the order in which the workbook is serialized
|
|
104
|
+
# @return [Boolean]
|
|
105
|
+
attr_reader :is_reversed
|
|
106
|
+
|
|
107
|
+
def is_reversed=(v)
|
|
108
|
+
Axlsx::validate_boolean(v)
|
|
109
|
+
@is_reversed = v
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
# A collection of worksheets associated with this workbook.
|
|
114
|
+
# @note The recommended way to manage worksheets is add_worksheet
|
|
115
|
+
# @see Workbook#add_worksheet
|
|
116
|
+
# @see Worksheet
|
|
117
|
+
# @return [SimpleTypedList]
|
|
118
|
+
attr_reader :worksheets
|
|
119
|
+
|
|
120
|
+
# A colllection of charts associated with this workbook
|
|
121
|
+
# @note The recommended way to manage charts is Worksheet#add_chart
|
|
122
|
+
# @see Worksheet#add_chart
|
|
123
|
+
# @see Chart
|
|
124
|
+
# @return [SimpleTypedList]
|
|
125
|
+
attr_reader :charts
|
|
126
|
+
|
|
127
|
+
# A colllection of images associated with this workbook
|
|
128
|
+
# @note The recommended way to manage images is Worksheet#add_image
|
|
129
|
+
# @see Worksheet#add_image
|
|
130
|
+
# @see Pic
|
|
131
|
+
# @return [SimpleTypedList]
|
|
132
|
+
attr_reader :images
|
|
133
|
+
|
|
134
|
+
# A colllection of drawings associated with this workbook
|
|
135
|
+
# @note The recommended way to manage drawings is Worksheet#add_chart
|
|
136
|
+
# @see Worksheet#add_chart
|
|
137
|
+
# @see Drawing
|
|
138
|
+
# @return [SimpleTypedList]
|
|
139
|
+
attr_reader :drawings
|
|
140
|
+
|
|
141
|
+
# pretty sure this two are always empty and can be removed.
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
# A colllection of tables associated with this workbook
|
|
145
|
+
# @note The recommended way to manage drawings is Worksheet#add_table
|
|
146
|
+
# @see Worksheet#add_table
|
|
147
|
+
# @see Table
|
|
148
|
+
# @return [SimpleTypedList]
|
|
149
|
+
attr_reader :tables
|
|
150
|
+
|
|
151
|
+
# A colllection of pivot tables associated with this workbook
|
|
152
|
+
# @note The recommended way to manage drawings is Worksheet#add_table
|
|
153
|
+
# @see Worksheet#add_table
|
|
154
|
+
# @see Table
|
|
155
|
+
# @return [SimpleTypedList]
|
|
156
|
+
attr_reader :pivot_tables
|
|
157
|
+
|
|
158
|
+
# A collection of views for this workbook
|
|
159
|
+
def views
|
|
160
|
+
@views ||= WorkbookViews.new
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# A collection of defined names for this workbook
|
|
164
|
+
# @note The recommended way to manage defined names is Workbook#add_defined_name
|
|
165
|
+
# @see DefinedName
|
|
166
|
+
# @return [DefinedNames]
|
|
167
|
+
def defined_names
|
|
168
|
+
@defined_names ||= DefinedNames.new
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# A collection of comments associated with this workbook
|
|
172
|
+
# @note The recommended way to manage comments is WOrksheet#add_comment
|
|
173
|
+
# @see Worksheet#add_comment
|
|
174
|
+
# @see Comment
|
|
175
|
+
# @return [Comments]
|
|
176
|
+
def comments
|
|
177
|
+
worksheets.map { |sheet| sheet.comments }.compact
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# The styles associated with this workbook
|
|
181
|
+
# @note The recommended way to manage styles is Styles#add_style
|
|
182
|
+
# @see Style#add_style
|
|
183
|
+
# @see Style
|
|
184
|
+
# @return [Styles]
|
|
185
|
+
def styles
|
|
186
|
+
yield @styles if block_given?
|
|
187
|
+
@styles
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# An array that holds all cells with styles
|
|
191
|
+
# @return Set
|
|
192
|
+
def styled_cells
|
|
193
|
+
@styled_cells ||= Set.new
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# Are the styles added with workbook.add_styles applied yet
|
|
197
|
+
# @return Boolean
|
|
198
|
+
attr_accessor :styles_applied
|
|
199
|
+
|
|
200
|
+
# A helper to apply styles that were added using `worksheet.add_style`
|
|
201
|
+
# @return [Boolean]
|
|
202
|
+
def apply_styles
|
|
203
|
+
return false if !styled_cells
|
|
204
|
+
|
|
205
|
+
styled_cells.each do |cell|
|
|
206
|
+
current_style = styles.style_index[cell.style]
|
|
207
|
+
|
|
208
|
+
if current_style
|
|
209
|
+
new_style = Axlsx.hash_deep_merge(current_style, cell.raw_style)
|
|
210
|
+
else
|
|
211
|
+
new_style = cell.raw_style
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
cell.style = styles.add_style(new_style)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
self.styles_applied = true
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
# Indicates if the epoc date for serialization should be 1904. If false, 1900 is used.
|
|
222
|
+
@@date1904 = false
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
# A quick helper to retrive a worksheet by name
|
|
226
|
+
# @param [String] name The name of the sheet you are looking for
|
|
227
|
+
# @return [Worksheet] The sheet found, or nil
|
|
228
|
+
def sheet_by_name(name)
|
|
229
|
+
index = @worksheets.index { |sheet| sheet.name == name }
|
|
230
|
+
@worksheets[index] if index
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
# Creates a new Workbook
|
|
234
|
+
# The recomended way to work with workbooks is via Package#workbook
|
|
235
|
+
# @option options [Boolean] date1904. If this is not specified, date1904 is set to false. Office 2011 for Mac defaults to false.
|
|
236
|
+
def initialize(options={})
|
|
237
|
+
@styles = Styles.new
|
|
238
|
+
@worksheets = SimpleTypedList.new Worksheet
|
|
239
|
+
@drawings = SimpleTypedList.new Drawing
|
|
240
|
+
@charts = SimpleTypedList.new Chart
|
|
241
|
+
@images = SimpleTypedList.new Pic
|
|
242
|
+
# Are these even used????? Check package serialization parts
|
|
243
|
+
@tables = SimpleTypedList.new Table
|
|
244
|
+
@pivot_tables = SimpleTypedList.new PivotTable
|
|
245
|
+
@comments = SimpleTypedList.new Comments
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
@use_autowidth = true
|
|
249
|
+
@bold_font_multiplier = BOLD_FONT_MULTIPLIER
|
|
250
|
+
@font_scale_divisor = FONT_SCALE_DIVISOR
|
|
251
|
+
|
|
252
|
+
self.date1904= !options[:date1904].nil? && options[:date1904]
|
|
253
|
+
yield self if block_given?
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
# Instance level access to the class variable 1904
|
|
257
|
+
# @return [Boolean]
|
|
258
|
+
def date1904() @@date1904; end
|
|
259
|
+
|
|
260
|
+
# see @date1904
|
|
261
|
+
def date1904=(v) Axlsx::validate_boolean v; @@date1904 = v; end
|
|
262
|
+
|
|
263
|
+
# Sets the date1904 attribute to the provided boolean
|
|
264
|
+
# @return [Boolean]
|
|
265
|
+
def self.date1904=(v) Axlsx::validate_boolean v; @@date1904 = v; end
|
|
266
|
+
|
|
267
|
+
# retrieves the date1904 attribute
|
|
268
|
+
# @return [Boolean]
|
|
269
|
+
def self.date1904() @@date1904; end
|
|
270
|
+
|
|
271
|
+
# Indicates if the workbook should use autowidths or not.
|
|
272
|
+
# @note This gem no longer depends on RMagick for autowidth
|
|
273
|
+
# calculation. Thus the performance benefits of turning this off are
|
|
274
|
+
# marginal unless you are creating a very large sheet.
|
|
275
|
+
# @return [Boolean]
|
|
276
|
+
def use_autowidth() @use_autowidth; end
|
|
277
|
+
|
|
278
|
+
# see @use_autowidth
|
|
279
|
+
def use_autowidth=(v=true) Axlsx::validate_boolean v; @use_autowidth = v; end
|
|
280
|
+
|
|
281
|
+
# Font size of bold fonts is multiplied with this
|
|
282
|
+
# Used for automatic calculation of cell widths with bold text
|
|
283
|
+
# @return [Float]
|
|
284
|
+
attr_reader :bold_font_multiplier
|
|
285
|
+
|
|
286
|
+
def bold_font_multiplier=(v)
|
|
287
|
+
Axlsx::validate_float v
|
|
288
|
+
@bold_font_multiplier = v
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
# Font scale is calculated with this value (font_size / font_scale_divisor)
|
|
292
|
+
# Used for automatic calculation of cell widths
|
|
293
|
+
# @return [Float]
|
|
294
|
+
attr_reader :font_scale_divisor
|
|
295
|
+
|
|
296
|
+
def font_scale_divisor=(v)
|
|
297
|
+
Axlsx::validate_float v
|
|
298
|
+
@font_scale_divisor = v
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
# inserts a worksheet into this workbook at the position specified.
|
|
302
|
+
# It the index specified is out of range, the worksheet will be added to the end of the
|
|
303
|
+
# worksheets collection
|
|
304
|
+
# @return [Worksheet]
|
|
305
|
+
# @param index The zero based position to insert the newly created worksheet
|
|
306
|
+
# @param [Hash] options Options to pass into the worksheed during initialization.
|
|
307
|
+
# @option options [String] name The name of the worksheet
|
|
308
|
+
# @option options [Hash] page_margins The page margins for the worksheet
|
|
309
|
+
def insert_worksheet(index=0, options={})
|
|
310
|
+
worksheet = Worksheet.new(self, options)
|
|
311
|
+
@worksheets.delete_at(@worksheets.size - 1)
|
|
312
|
+
@worksheets.insert(index, worksheet)
|
|
313
|
+
yield worksheet if block_given?
|
|
314
|
+
worksheet
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
#
|
|
318
|
+
# Adds a worksheet to this workbook
|
|
319
|
+
# @return [Worksheet]
|
|
320
|
+
# @option options [String] name The name of the worksheet.
|
|
321
|
+
# @option options [Hash] page_margins The page margins for the worksheet.
|
|
322
|
+
# @see Worksheet#initialize
|
|
323
|
+
def add_worksheet(options={})
|
|
324
|
+
worksheet = Worksheet.new(self, options)
|
|
325
|
+
yield worksheet if block_given?
|
|
326
|
+
worksheet
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
# Adds a new WorkbookView
|
|
330
|
+
# @return WorkbookViews
|
|
331
|
+
# @option options [Hash] options passed into the added WorkbookView
|
|
332
|
+
# @see WorkbookView#initialize
|
|
333
|
+
def add_view(options={})
|
|
334
|
+
views << WorkbookView.new(options)
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
# Adds a defined name to this workbook
|
|
338
|
+
# @return [DefinedName]
|
|
339
|
+
# @param [String] formula @see DefinedName
|
|
340
|
+
# @param [Hash] options @see DefinedName
|
|
341
|
+
def add_defined_name(formula, options)
|
|
342
|
+
defined_names << DefinedName.new(formula, options)
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
# The workbook relationships. This is managed automatically by the workbook
|
|
346
|
+
# @return [Relationships]
|
|
347
|
+
def relationships
|
|
348
|
+
r = Relationships.new
|
|
349
|
+
@worksheets.each do |sheet|
|
|
350
|
+
r << Relationship.new(sheet, WORKSHEET_R, WORKSHEET_PN % (r.size+1))
|
|
351
|
+
end
|
|
352
|
+
pivot_tables.each_with_index do |pivot_table, index|
|
|
353
|
+
r << Relationship.new(pivot_table.cache_definition, PIVOT_TABLE_CACHE_DEFINITION_R, PIVOT_TABLE_CACHE_DEFINITION_PN % (index+1))
|
|
354
|
+
end
|
|
355
|
+
r << Relationship.new(self, STYLES_R, STYLES_PN)
|
|
356
|
+
if use_shared_strings
|
|
357
|
+
r << Relationship.new(self, SHARED_STRINGS_R, SHARED_STRINGS_PN)
|
|
358
|
+
end
|
|
359
|
+
r
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
# generates a shared string object against all cells in all worksheets.
|
|
363
|
+
# @return [SharedStringTable]
|
|
364
|
+
def shared_strings
|
|
365
|
+
SharedStringsTable.new(worksheets.collect { |ws| ws.cells }, xml_space)
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
# The xml:space attribute for the worksheet.
|
|
369
|
+
# This determines how whitespace is handled withing the document.
|
|
370
|
+
# The most relevant part being whitespace in the cell text.
|
|
371
|
+
# allowed values are :preserve and :default. Axlsx uses :preserve unless
|
|
372
|
+
# you explicily set this to :default.
|
|
373
|
+
# @return Symbol
|
|
374
|
+
def xml_space
|
|
375
|
+
@xml_space ||= :preserve
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
# Sets the xml:space attribute for the worksheet
|
|
379
|
+
# @see Worksheet#xml_space
|
|
380
|
+
# @param [Symbol] space must be one of :preserve or :default
|
|
381
|
+
def xml_space=(space)
|
|
382
|
+
Axlsx::RestrictionValidator.validate(:xml_space, [:preserve, :default], space)
|
|
383
|
+
@xml_space = space;
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
# returns a range of cells in a worksheet
|
|
387
|
+
# @param [String] cell_def The excel style reference defining the worksheet and cells. The range must specify the sheet to
|
|
388
|
+
# retrieve the cells from. e.g. range('Sheet1!A1:B2') will return an array of four cells [A1, A2, B1, B2] while range('Sheet1!A1') will return a single Cell.
|
|
389
|
+
# @return [Cell, Array]
|
|
390
|
+
def [](cell_def)
|
|
391
|
+
sheet_name = cell_def.split('!')[0] if cell_def.match('!')
|
|
392
|
+
worksheet = self.worksheets.select { |s| s.name == sheet_name }.first
|
|
393
|
+
raise ArgumentError, 'Unknown Sheet' unless sheet_name && worksheet.is_a?(Worksheet)
|
|
394
|
+
worksheet[cell_def.gsub(/.+!/,"")]
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
# Serialize the workbook
|
|
398
|
+
# @param [String] str
|
|
399
|
+
# @return [String]
|
|
400
|
+
def to_xml_string(str='')
|
|
401
|
+
add_worksheet(name: 'Sheet1') unless worksheets.size > 0
|
|
402
|
+
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
403
|
+
str << ('<workbook xmlns="' << XML_NS << '" xmlns:r="' << XML_NS_R << '">')
|
|
404
|
+
str << ('<workbookPr date1904="' << @@date1904.to_s << '"/>')
|
|
405
|
+
views.to_xml_string(str)
|
|
406
|
+
str << '<sheets>'
|
|
407
|
+
if is_reversed
|
|
408
|
+
worksheets.reverse_each { |sheet| sheet.to_sheet_node_xml_string(str) }
|
|
409
|
+
else
|
|
410
|
+
worksheets.each { |sheet| sheet.to_sheet_node_xml_string(str) }
|
|
411
|
+
end
|
|
412
|
+
str << '</sheets>'
|
|
413
|
+
defined_names.to_xml_string(str)
|
|
414
|
+
unless pivot_tables.empty?
|
|
415
|
+
str << '<pivotCaches>'
|
|
416
|
+
pivot_tables.each do |pivot_table|
|
|
417
|
+
str << ('<pivotCache cacheId="' << pivot_table.cache_definition.cache_id.to_s << '" r:id="' << pivot_table.cache_definition.rId << '"/>')
|
|
418
|
+
end
|
|
419
|
+
str << '</pivotCaches>'
|
|
420
|
+
end
|
|
421
|
+
str << '</workbook>'
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
end
|
|
425
|
+
end
|