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
data/lib/axlsx/drawing/pic.rb
CHANGED
|
@@ -1,211 +1,244 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
# Worksheet#add_image
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
#
|
|
11
|
-
# @
|
|
12
|
-
# @option options [String] :
|
|
13
|
-
# @option options [String] :
|
|
14
|
-
# @option options [
|
|
15
|
-
# @option options [
|
|
16
|
-
# @option options [Integer] :
|
|
17
|
-
# @option options [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
@
|
|
21
|
-
@
|
|
22
|
-
@
|
|
23
|
-
parse_options options
|
|
24
|
-
start_at(*options[:start_at]) if options[:start_at]
|
|
25
|
-
yield self if block_given?
|
|
26
|
-
@picture_locking = PictureLocking.new(options)
|
|
27
|
-
@opacity = (options[:opacity] * 100000).round if options[:opacity]
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# allowed mime types
|
|
31
|
-
ALLOWED_MIME_TYPES = %w(image/jpeg image/png image/gif)
|
|
32
|
-
|
|
33
|
-
# The name to use for this picture
|
|
34
|
-
# @return [String]
|
|
35
|
-
attr_reader :name
|
|
36
|
-
|
|
37
|
-
# A description of the picture
|
|
38
|
-
# @return [String]
|
|
39
|
-
attr_reader :descr
|
|
40
|
-
|
|
41
|
-
# The path to the image you want to include
|
|
42
|
-
# Only local images are supported at this time.
|
|
43
|
-
# @return [String]
|
|
44
|
-
attr_reader :image_src
|
|
45
|
-
|
|
46
|
-
# The anchor for this image
|
|
47
|
-
# @return [OneCellAnchor]
|
|
48
|
-
attr_reader :anchor
|
|
49
|
-
|
|
50
|
-
# The picture locking attributes for this picture
|
|
51
|
-
attr_reader :picture_locking
|
|
52
|
-
|
|
53
|
-
attr_reader :hyperlink
|
|
54
|
-
|
|
55
|
-
# Picture opacity
|
|
56
|
-
# @return [Integer]
|
|
57
|
-
attr_reader :opacity
|
|
58
|
-
|
|
59
|
-
#
|
|
60
|
-
# @
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
# @
|
|
95
|
-
def
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
#
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
#
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
#
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
#
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
@anchor.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
#
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
@anchor.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
#
|
|
167
|
-
#
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
#
|
|
190
|
-
def
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
1
|
+
module Axlsx
|
|
2
|
+
# a Pic object represents an image in your worksheet
|
|
3
|
+
# Worksheet#add_image is the recommended way to manage images in your sheets
|
|
4
|
+
# @see Worksheet#add_image
|
|
5
|
+
class Pic
|
|
6
|
+
include Axlsx::OptionsParser
|
|
7
|
+
|
|
8
|
+
# Creates a new Pic(ture) object
|
|
9
|
+
# @param [Anchor] anchor the anchor that holds this image
|
|
10
|
+
# @option options [Boolean] :remote indicates if image_src is a remote URI
|
|
11
|
+
# @option options [String] :name
|
|
12
|
+
# @option options [String] :descr
|
|
13
|
+
# @option options [String] :image_src
|
|
14
|
+
# @option options [Array] :start_at
|
|
15
|
+
# @option options [Integer] :width
|
|
16
|
+
# @option options [Integer] :height
|
|
17
|
+
# @option options [Float] :opacity - set the picture opacity, accepts a value between 0.0 and 1.0
|
|
18
|
+
def initialize(anchor, options = {})
|
|
19
|
+
@anchor = anchor
|
|
20
|
+
@hyperlink = nil
|
|
21
|
+
@anchor.drawing.worksheet.workbook.images << self
|
|
22
|
+
@remote = options[:remote]
|
|
23
|
+
parse_options options
|
|
24
|
+
start_at(*options[:start_at]) if options[:start_at]
|
|
25
|
+
yield self if block_given?
|
|
26
|
+
@picture_locking = PictureLocking.new(options)
|
|
27
|
+
@opacity = (options[:opacity] * 100000).round if options[:opacity]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# allowed mime types
|
|
31
|
+
ALLOWED_MIME_TYPES = %w(image/jpeg image/png image/gif)
|
|
32
|
+
|
|
33
|
+
# The name to use for this picture
|
|
34
|
+
# @return [String]
|
|
35
|
+
attr_reader :name
|
|
36
|
+
|
|
37
|
+
# A description of the picture
|
|
38
|
+
# @return [String]
|
|
39
|
+
attr_reader :descr
|
|
40
|
+
|
|
41
|
+
# The path to the image you want to include
|
|
42
|
+
# Only local images are supported at this time.
|
|
43
|
+
# @return [String]
|
|
44
|
+
attr_reader :image_src
|
|
45
|
+
|
|
46
|
+
# The anchor for this image
|
|
47
|
+
# @return [OneCellAnchor]
|
|
48
|
+
attr_reader :anchor
|
|
49
|
+
|
|
50
|
+
# The picture locking attributes for this picture
|
|
51
|
+
attr_reader :picture_locking
|
|
52
|
+
|
|
53
|
+
attr_reader :hyperlink
|
|
54
|
+
|
|
55
|
+
# Picture opacity
|
|
56
|
+
# @return [Integer]
|
|
57
|
+
attr_reader :opacity
|
|
58
|
+
|
|
59
|
+
# Flag for remote picture (from URI)
|
|
60
|
+
# @return [Boolean]
|
|
61
|
+
attr_reader :remote
|
|
62
|
+
|
|
63
|
+
# sets or updates a hyperlink for this image.
|
|
64
|
+
# @param [String] v The href value for the hyper link
|
|
65
|
+
# @option options @see Hyperlink#initialize All options available to the Hyperlink class apply - however href will be overridden with the v parameter value.
|
|
66
|
+
def hyperlink=(v, options = {})
|
|
67
|
+
options[:href] = v
|
|
68
|
+
if hyperlink.is_a?(Hyperlink)
|
|
69
|
+
options.each do |o|
|
|
70
|
+
hyperlink.send("#{o[0]}=", o[1]) if hyperlink.respond_to? "#{o[0]}="
|
|
71
|
+
end
|
|
72
|
+
else
|
|
73
|
+
@hyperlink = Hyperlink.new(self, options)
|
|
74
|
+
end
|
|
75
|
+
hyperlink
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def image_src=(v)
|
|
79
|
+
Axlsx::validate_string(v)
|
|
80
|
+
if remote?
|
|
81
|
+
RegexValidator.validate('Pic.image_src', /\A#{URI::DEFAULT_PARSER.make_regexp}\z/, v)
|
|
82
|
+
RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type_from_uri(v)
|
|
83
|
+
else
|
|
84
|
+
RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type(v)
|
|
85
|
+
raise ArgumentError, "File does not exist" unless File.exist?(v)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
@image_src = v
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @see name
|
|
92
|
+
def name=(v) Axlsx::validate_string(v); @name = v; end
|
|
93
|
+
|
|
94
|
+
# @see descr
|
|
95
|
+
def descr=(v) Axlsx::validate_string(v); @descr = v; end
|
|
96
|
+
|
|
97
|
+
# @see remote
|
|
98
|
+
def remote=(v) Axlsx::validate_boolean(v); @remote = v; end
|
|
99
|
+
|
|
100
|
+
def remote?
|
|
101
|
+
remote == 1 || remote.to_s == 'true'
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# The file name of image_src without any path information
|
|
105
|
+
# @return [String]
|
|
106
|
+
def file_name
|
|
107
|
+
File.basename(image_src) unless remote? || image_src.nil?
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# returns the extension of image_src without the preceeding '.'
|
|
111
|
+
# @return [String]
|
|
112
|
+
def extname
|
|
113
|
+
File.extname(image_src).delete('.') unless image_src.nil?
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# The index of this image in the workbooks images collections
|
|
117
|
+
# @return [Index]
|
|
118
|
+
def index
|
|
119
|
+
@anchor.drawing.worksheet.workbook.images.index(self)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# The part name for this image used in serialization and relationship building
|
|
123
|
+
# @return [String]
|
|
124
|
+
def pn
|
|
125
|
+
"#{IMAGE_PN % [(index + 1), extname]}"
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# The relationship object for this pic.
|
|
129
|
+
# @return [Relationship]
|
|
130
|
+
def relationship
|
|
131
|
+
if remote?
|
|
132
|
+
Relationship.new(self, IMAGE_R, "#{image_src}", target_mode: :External)
|
|
133
|
+
else
|
|
134
|
+
Relationship.new(self, IMAGE_R, "../#{pn}")
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# providing access to the anchor's width attribute
|
|
139
|
+
# @see OneCellAnchor.width
|
|
140
|
+
def width
|
|
141
|
+
return unless @anchor.is_a?(OneCellAnchor)
|
|
142
|
+
|
|
143
|
+
@anchor.width
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# @see width
|
|
147
|
+
def width=(v)
|
|
148
|
+
use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
|
|
149
|
+
@anchor.width = v
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# providing access to update the anchor's height attribute
|
|
153
|
+
# @see OneCellAnchor.width
|
|
154
|
+
# @note this is a noop if you are using a TwoCellAnchor
|
|
155
|
+
def height
|
|
156
|
+
@anchor.height
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# @see height
|
|
160
|
+
# @note This is a noop if you are using a TwoCellAnchor
|
|
161
|
+
def height=(v)
|
|
162
|
+
use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
|
|
163
|
+
@anchor.height = v
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# This is a short cut method to set the start anchor position
|
|
167
|
+
# If you need finer granularity in positioning use
|
|
168
|
+
# graphic_frame.anchor.from.colOff / rowOff
|
|
169
|
+
# @param [Integer] x The column
|
|
170
|
+
# @param [Integer] y The row
|
|
171
|
+
# @return [Marker]
|
|
172
|
+
def start_at(x, y = nil)
|
|
173
|
+
@anchor.start_at x, y
|
|
174
|
+
@anchor.from
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# noop if not using a two cell anchor
|
|
178
|
+
# @param [Integer] x The column
|
|
179
|
+
# @param [Integer] y The row
|
|
180
|
+
# @return [Marker]
|
|
181
|
+
def end_at(x, y = nil)
|
|
182
|
+
use_two_cell_anchor unless @anchor.is_a?(TwoCellAnchor)
|
|
183
|
+
@anchor.end_at x, y
|
|
184
|
+
@anchor.to
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Serializes the object
|
|
188
|
+
# @param [String] str
|
|
189
|
+
# @return [String]
|
|
190
|
+
def to_xml_string(str = '')
|
|
191
|
+
str << '<xdr:pic>'
|
|
192
|
+
str << '<xdr:nvPicPr>'
|
|
193
|
+
str << ('<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">')
|
|
194
|
+
hyperlink.to_xml_string(str) if hyperlink.is_a?(Hyperlink)
|
|
195
|
+
str << '</xdr:cNvPr><xdr:cNvPicPr>'
|
|
196
|
+
picture_locking.to_xml_string(str)
|
|
197
|
+
str << '</xdr:cNvPicPr></xdr:nvPicPr>'
|
|
198
|
+
str << '<xdr:blipFill>'
|
|
199
|
+
str << relationship_xml_portion
|
|
200
|
+
if opacity
|
|
201
|
+
str << "<a:alphaModFix amt=\"#{opacity}\"/>"
|
|
202
|
+
end
|
|
203
|
+
str << '</a:blip>'
|
|
204
|
+
str << '<a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr>'
|
|
205
|
+
str << '<a:xfrm><a:off x="0" y="0"/><a:ext cx="2336800" cy="2161540"/></a:xfrm>'
|
|
206
|
+
str << '<a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic>'
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
private
|
|
210
|
+
|
|
211
|
+
# Return correct xml relationship string portion
|
|
212
|
+
def relationship_xml_portion
|
|
213
|
+
if remote?
|
|
214
|
+
('<a:blip xmlns:r ="' << XML_NS_R << '" r:link="' << relationship.Id << '">')
|
|
215
|
+
else
|
|
216
|
+
('<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Changes the anchor to a one cell anchor.
|
|
221
|
+
def use_one_cell_anchor
|
|
222
|
+
return if @anchor.is_a?(OneCellAnchor)
|
|
223
|
+
|
|
224
|
+
new_anchor = OneCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
|
|
225
|
+
swap_anchor(new_anchor)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# changes the anchor type to a two cell anchor
|
|
229
|
+
def use_two_cell_anchor
|
|
230
|
+
return if @anchor.is_a?(TwoCellAnchor)
|
|
231
|
+
|
|
232
|
+
new_anchor = TwoCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
|
|
233
|
+
swap_anchor(new_anchor)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
# refactoring of swapping code, law of demeter be damned!
|
|
237
|
+
def swap_anchor(new_anchor)
|
|
238
|
+
new_anchor.drawing.anchors.delete(new_anchor)
|
|
239
|
+
@anchor.drawing.anchors[@anchor.drawing.anchors.index(@anchor)] = new_anchor
|
|
240
|
+
new_anchor.instance_variable_set "@object", @anchor.object
|
|
241
|
+
@anchor = new_anchor
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
end
|
|
@@ -1,42 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
include Axlsx::
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
#
|
|
19
|
-
# @option options [Boolean]
|
|
20
|
-
# @option options [Boolean]
|
|
21
|
-
# @option options [Boolean]
|
|
22
|
-
# @option options [Boolean]
|
|
23
|
-
# @option options [Boolean]
|
|
24
|
-
# @option options [Boolean]
|
|
25
|
-
# @option options [Boolean]
|
|
26
|
-
# @option options [Boolean]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
end
|
|
42
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# The picture locking class defines the locking properties for pictures in your workbook.
|
|
3
|
+
class PictureLocking
|
|
4
|
+
include Axlsx::OptionsParser
|
|
5
|
+
include Axlsx::SerializedAttributes
|
|
6
|
+
include Axlsx::Accessors
|
|
7
|
+
|
|
8
|
+
boolean_attr_accessor :noGrp, :noSelect, :noRot, :noChangeAspect,
|
|
9
|
+
:noMove, :noResize, :noEditPoints, :noAdjustHandles,
|
|
10
|
+
:noChangeArrowheads, :noChangeShapeType
|
|
11
|
+
|
|
12
|
+
serializable_attributes :noGrp, :noSelect, :noRot, :noChangeAspect,
|
|
13
|
+
:noMove, :noResize, :noEditPoints, :noAdjustHandles,
|
|
14
|
+
:noChangeArrowheads, :noChangeShapeType
|
|
15
|
+
|
|
16
|
+
# Creates a new PictureLocking object
|
|
17
|
+
# @option options [Boolean] noGrp
|
|
18
|
+
# @option options [Boolean] noSelect
|
|
19
|
+
# @option options [Boolean] noRot
|
|
20
|
+
# @option options [Boolean] noChangeAspect
|
|
21
|
+
# @option options [Boolean] noMove
|
|
22
|
+
# @option options [Boolean] noResize
|
|
23
|
+
# @option options [Boolean] noEditPoints
|
|
24
|
+
# @option options [Boolean] noAdjustHandles
|
|
25
|
+
# @option options [Boolean] noChangeArrowheads
|
|
26
|
+
# @option options [Boolean] noChangeShapeType
|
|
27
|
+
def initialize(options = {})
|
|
28
|
+
@noChangeAspect = true
|
|
29
|
+
parse_options options
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Serializes the object
|
|
33
|
+
# @param [String] str
|
|
34
|
+
# @return [String]
|
|
35
|
+
def to_xml_string(str = '')
|
|
36
|
+
serialized_tag('a:picLocks', str)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,47 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
#
|
|
12
|
-
# @
|
|
13
|
-
# @option options [
|
|
14
|
-
# @option options [
|
|
15
|
-
# @option options [
|
|
16
|
-
# @option options [String]
|
|
17
|
-
# @option options [
|
|
18
|
-
# @option options [
|
|
19
|
-
# @
|
|
20
|
-
# @
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
@
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
str << '
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
end
|
|
47
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
|
|
3
|
+
# @see Worksheet#add_chart
|
|
4
|
+
# @see Chart#add_series
|
|
5
|
+
# @see README for an example
|
|
6
|
+
class Pie3DChart < Chart
|
|
7
|
+
# Creates a new pie chart object
|
|
8
|
+
# @param [GraphicFrame] frame The workbook that owns this chart.
|
|
9
|
+
# @option options [Cell, String] title
|
|
10
|
+
# @option options [Boolean] show_legend
|
|
11
|
+
# @option options [Symbol] grouping
|
|
12
|
+
# @option options [String] gap_depth
|
|
13
|
+
# @option options [Integer] rot_x
|
|
14
|
+
# @option options [String] h_percent
|
|
15
|
+
# @option options [Integer] rot_y
|
|
16
|
+
# @option options [String] depth_percent
|
|
17
|
+
# @option options [Boolean] r_ang_ax
|
|
18
|
+
# @option options [Integer] perspective
|
|
19
|
+
# @see Chart
|
|
20
|
+
# @see View3D
|
|
21
|
+
def initialize(frame, options = {})
|
|
22
|
+
@vary_colors = true
|
|
23
|
+
super(frame, options)
|
|
24
|
+
@series_type = PieSeries
|
|
25
|
+
@view_3D = View3D.new({ :rot_x => 30, :perspective => 30 }.merge(options))
|
|
26
|
+
@d_lbls = nil
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Serializes the object
|
|
30
|
+
# @param [String] str
|
|
31
|
+
# @return [String]
|
|
32
|
+
def to_xml_string(str = '')
|
|
33
|
+
super(str) do
|
|
34
|
+
str << '<c:pie3DChart>'
|
|
35
|
+
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
|
36
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
|
37
|
+
d_lbls.to_xml_string(str) if @d_lbls
|
|
38
|
+
str << '</c:pie3DChart>'
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|