axlsx-alt 3.0.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 +7 -0
- data/.yardopts +9 -0
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +244 -0
- data/LICENSE +22 -0
- data/README.md +180 -0
- data/Rakefile +29 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/auto_filter.rb +25 -0
- data/examples/basic_charts.rb +58 -0
- data/examples/chart_colors.rb +88 -0
- data/examples/colored_links.rb +59 -0
- data/examples/conditional_formatting/example_conditional_formatting.rb +89 -0
- data/examples/conditional_formatting/getting_barred.rb +37 -0
- data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
- data/examples/conditional_formatting/scaled_colors.rb +39 -0
- data/examples/conditional_formatting/stop_and_go.rb +37 -0
- data/examples/data_validation.rb +67 -0
- data/examples/example.rb +885 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/merge_cells.rb +17 -0
- data/examples/no_grid_with_borders.rb +18 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/pivot_test.rb +63 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/split.rb +16 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +171 -0
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
- data/lib/axlsx/content_type/content_type.rb +26 -0
- data/lib/axlsx/content_type/default.rb +25 -0
- data/lib/axlsx/content_type/override.rb +25 -0
- data/lib/axlsx/doc_props/app.rb +235 -0
- data/lib/axlsx/doc_props/core.rb +39 -0
- data/lib/axlsx/drawing/area_chart.rb +99 -0
- data/lib/axlsx/drawing/area_series.rb +110 -0
- data/lib/axlsx/drawing/ax_data_source.rb +26 -0
- data/lib/axlsx/drawing/axes.rb +61 -0
- data/lib/axlsx/drawing/axis.rb +190 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_chart.rb +143 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/bubble_chart.rb +59 -0
- data/lib/axlsx/drawing/bubble_series.rb +63 -0
- data/lib/axlsx/drawing/cat_axis.rb +85 -0
- data/lib/axlsx/drawing/chart.rb +276 -0
- data/lib/axlsx/drawing/d_lbls.rb +90 -0
- data/lib/axlsx/drawing/drawing.rb +167 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +100 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
- data/lib/axlsx/drawing/line_chart.rb +99 -0
- data/lib/axlsx/drawing/line_series.rb +110 -0
- data/lib/axlsx/drawing/marker.rb +84 -0
- data/lib/axlsx/drawing/num_data.rb +52 -0
- data/lib/axlsx/drawing/num_data_source.rb +62 -0
- data/lib/axlsx/drawing/num_val.rb +34 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -0
- data/lib/axlsx/drawing/pic.rb +211 -0
- data/lib/axlsx/drawing/picture_locking.rb +42 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
- data/lib/axlsx/drawing/pie_series.rb +74 -0
- data/lib/axlsx/drawing/scaling.rb +60 -0
- data/lib/axlsx/drawing/scatter_chart.rb +74 -0
- data/lib/axlsx/drawing/scatter_series.rb +98 -0
- data/lib/axlsx/drawing/ser_axis.rb +45 -0
- data/lib/axlsx/drawing/series.rb +69 -0
- data/lib/axlsx/drawing/series_title.rb +23 -0
- data/lib/axlsx/drawing/str_data.rb +42 -0
- data/lib/axlsx/drawing/str_val.rb +34 -0
- data/lib/axlsx/drawing/title.rb +96 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -0
- data/lib/axlsx/drawing/val_axis.rb +37 -0
- data/lib/axlsx/drawing/view_3D.rb +115 -0
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +66 -0
- data/lib/axlsx/package.rb +358 -0
- data/lib/axlsx/rels/relationship.rb +137 -0
- data/lib/axlsx/rels/relationships.rb +32 -0
- data/lib/axlsx/stylesheet/border.rb +71 -0
- data/lib/axlsx/stylesheet/border_pr.rb +71 -0
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
- data/lib/axlsx/stylesheet/cell_style.rb +72 -0
- data/lib/axlsx/stylesheet/color.rb +76 -0
- data/lib/axlsx/stylesheet/dxf.rb +79 -0
- data/lib/axlsx/stylesheet/fill.rb +35 -0
- data/lib/axlsx/stylesheet/font.rb +148 -0
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -0
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
- data/lib/axlsx/stylesheet/styles.rb +420 -0
- data/lib/axlsx/stylesheet/table_style.rb +54 -0
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
- data/lib/axlsx/stylesheet/table_styles.rb +46 -0
- data/lib/axlsx/stylesheet/xf.rb +147 -0
- data/lib/axlsx/util/accessors.rb +64 -0
- data/lib/axlsx/util/constants.rb +400 -0
- data/lib/axlsx/util/mime_type_utils.rb +11 -0
- data/lib/axlsx/util/options_parser.rb +16 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +89 -0
- data/lib/axlsx/util/simple_typed_list.rb +179 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/validators.rb +312 -0
- data/lib/axlsx/version.rb +3 -0
- data/lib/axlsx/workbook/defined_name.rb +128 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
- data/lib/axlsx/workbook/workbook.rb +379 -0
- data/lib/axlsx/workbook/workbook_view.rb +80 -0
- data/lib/axlsx/workbook/workbook_views.rb +22 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +478 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -0
- data/lib/axlsx/workbook/worksheet/col.rb +141 -0
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +97 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -0
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +289 -0
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -0
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -0
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -0
- data/lib/axlsx/workbook/worksheet/row.rb +161 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
- data/lib/axlsx/workbook/worksheet/table.rb +102 -0
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +756 -0
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
- data/lib/schema/dc.xsd +118 -0
- data/lib/schema/dcmitype.xsd +52 -0
- data/lib/schema/dcterms.xsd +331 -0
- data/lib/schema/dml-chart.xsd +1499 -0
- data/lib/schema/dml-chartDrawing.xsd +146 -0
- data/lib/schema/dml-compatibility.xsd +14 -0
- data/lib/schema/dml-diagram.xsd +1091 -0
- data/lib/schema/dml-lockedCanvas.xsd +11 -0
- data/lib/schema/dml-main.xsd +3048 -0
- data/lib/schema/dml-picture.xsd +23 -0
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
- data/lib/schema/opc-contentTypes.xsd +42 -0
- data/lib/schema/opc-coreProperties.xsd +54 -0
- data/lib/schema/opc-digSig.xsd +49 -0
- data/lib/schema/opc-relationships.xsd +33 -0
- data/lib/schema/pml.xsd +1676 -0
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
- data/lib/schema/shared-bibliography.xsd +144 -0
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
- data/lib/schema/shared-math.xsd +582 -0
- data/lib/schema/shared-relationshipReference.xsd +25 -0
- data/lib/schema/sml.xsd +4434 -0
- data/lib/schema/vml-main.xsd +569 -0
- data/lib/schema/vml-officeDrawing.xsd +509 -0
- data/lib/schema/vml-presentationDrawing.xsd +12 -0
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
- data/lib/schema/wml.xsd +3644 -0
- data/lib/schema/xml.xsd +116 -0
- data/test/benchmark.rb +72 -0
- data/test/content_type/tc_content_type.rb +76 -0
- data/test/content_type/tc_default.rb +16 -0
- data/test/content_type/tc_override.rb +14 -0
- data/test/doc_props/tc_app.rb +43 -0
- data/test/doc_props/tc_core.rb +42 -0
- data/test/drawing/tc_area_chart.rb +39 -0
- data/test/drawing/tc_area_series.rb +71 -0
- data/test/drawing/tc_axes.rb +8 -0
- data/test/drawing/tc_axis.rb +112 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -0
- data/test/drawing/tc_bubble_chart.rb +44 -0
- data/test/drawing/tc_bubble_series.rb +21 -0
- data/test/drawing/tc_cat_axis.rb +31 -0
- data/test/drawing/tc_cat_axis_data.rb +27 -0
- data/test/drawing/tc_chart.rb +123 -0
- data/test/drawing/tc_d_lbls.rb +57 -0
- data/test/drawing/tc_data_source.rb +23 -0
- data/test/drawing/tc_drawing.rb +80 -0
- data/test/drawing/tc_graphic_frame.rb +27 -0
- data/test/drawing/tc_hyperlink.rb +64 -0
- data/test/drawing/tc_line_3d_chart.rb +47 -0
- data/test/drawing/tc_line_chart.rb +39 -0
- data/test/drawing/tc_line_series.rb +71 -0
- data/test/drawing/tc_marker.rb +44 -0
- data/test/drawing/tc_named_axis_data.rb +27 -0
- data/test/drawing/tc_num_data.rb +31 -0
- data/test/drawing/tc_num_val.rb +29 -0
- data/test/drawing/tc_one_cell_anchor.rb +66 -0
- data/test/drawing/tc_pic.rb +103 -0
- data/test/drawing/tc_picture_locking.rb +72 -0
- data/test/drawing/tc_pie_3D_chart.rb +28 -0
- data/test/drawing/tc_pie_series.rb +32 -0
- data/test/drawing/tc_scaling.rb +36 -0
- data/test/drawing/tc_scatter_chart.rb +48 -0
- data/test/drawing/tc_scatter_series.rb +56 -0
- data/test/drawing/tc_ser_axis.rb +31 -0
- data/test/drawing/tc_series.rb +23 -0
- data/test/drawing/tc_series_title.rb +33 -0
- data/test/drawing/tc_str_data.rb +18 -0
- data/test/drawing/tc_str_val.rb +30 -0
- data/test/drawing/tc_title.rb +54 -0
- data/test/drawing/tc_two_cell_anchor.rb +36 -0
- data/test/drawing/tc_val_axis.rb +24 -0
- data/test/drawing/tc_view_3D.rb +54 -0
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +106 -0
- data/test/profile.rb +24 -0
- data/test/rels/tc_relationship.rb +44 -0
- data/test/rels/tc_relationships.rb +37 -0
- data/test/stylesheet/tc_border.rb +37 -0
- data/test/stylesheet/tc_border_pr.rb +32 -0
- data/test/stylesheet/tc_cell_alignment.rb +81 -0
- data/test/stylesheet/tc_cell_protection.rb +29 -0
- data/test/stylesheet/tc_cell_style.rb +57 -0
- data/test/stylesheet/tc_color.rb +43 -0
- data/test/stylesheet/tc_dxf.rb +81 -0
- data/test/stylesheet/tc_fill.rb +18 -0
- data/test/stylesheet/tc_font.rb +121 -0
- data/test/stylesheet/tc_gradient_fill.rb +72 -0
- data/test/stylesheet/tc_gradient_stop.rb +31 -0
- data/test/stylesheet/tc_num_fmt.rb +30 -0
- data/test/stylesheet/tc_pattern_fill.rb +43 -0
- data/test/stylesheet/tc_styles.rb +235 -0
- data/test/stylesheet/tc_table_style.rb +44 -0
- data/test/stylesheet/tc_table_style_element.rb +45 -0
- data/test/stylesheet/tc_table_styles.rb +29 -0
- data/test/stylesheet/tc_xf.rb +120 -0
- data/test/tc_axlsx.rb +103 -0
- data/test/tc_helper.rb +12 -0
- data/test/tc_package.rb +245 -0
- data/test/util/tc_mime_type_utils.rb +13 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +77 -0
- data/test/util/tc_validators.rb +210 -0
- data/test/workbook/tc_defined_name.rb +49 -0
- data/test/workbook/tc_shared_strings_table.rb +59 -0
- data/test/workbook/tc_workbook.rb +160 -0
- data/test/workbook/tc_workbook_view.rb +50 -0
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
- data/test/workbook/worksheet/tc_break.rb +49 -0
- data/test/workbook/worksheet/tc_cell.rb +387 -0
- data/test/workbook/worksheet/tc_cfvo.rb +31 -0
- data/test/workbook/worksheet/tc_col.rb +78 -0
- data/test/workbook/worksheet/tc_color_scale.rb +58 -0
- data/test/workbook/worksheet/tc_comment.rb +72 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
- data/test/workbook/worksheet/tc_data_bar.rb +46 -0
- data/test/workbook/worksheet/tc_data_validation.rb +265 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
- data/test/workbook/worksheet/tc_header_footer.rb +151 -0
- data/test/workbook/worksheet/tc_icon_set.rb +45 -0
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
- data/test/workbook/worksheet/tc_page_setup.rb +143 -0
- data/test/workbook/worksheet/tc_pane.rb +54 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +135 -0
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
- data/test/workbook/worksheet/tc_print_options.rb +72 -0
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_rich_text.rb +44 -0
- data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
- data/test/workbook/worksheet/tc_row.rb +122 -0
- data/test/workbook/worksheet/tc_selection.rb +55 -0
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -0
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
- data/test/workbook/worksheet/tc_table.rb +67 -0
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +597 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +601 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# a Pic object represents an image in your worksheet
|
|
4
|
+
# Worksheet#add_image is the recommended way to manage images in your sheets
|
|
5
|
+
# @see Worksheet#add_image
|
|
6
|
+
class Pic
|
|
7
|
+
|
|
8
|
+
include Axlsx::OptionsParser
|
|
9
|
+
|
|
10
|
+
# Creates a new Pic(ture) object
|
|
11
|
+
# @param [Anchor] anchor the anchor that holds this image
|
|
12
|
+
# @option options [String] :name
|
|
13
|
+
# @option options [String] :descr
|
|
14
|
+
# @option options [String] :image_src
|
|
15
|
+
# @option options [Array] :start_at
|
|
16
|
+
# @option options [Integer] :width
|
|
17
|
+
# @option options [Integer] :height
|
|
18
|
+
# @option options [Float] :opacity - set the picture opacity, accepts a value between 0.0 and 1.0
|
|
19
|
+
def initialize(anchor, options={})
|
|
20
|
+
@anchor = anchor
|
|
21
|
+
@hyperlink = nil
|
|
22
|
+
@anchor.drawing.worksheet.workbook.images << self
|
|
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
|
+
# sets or updates a hyperlink for this image.
|
|
60
|
+
# @param [String] v The href value for the hyper link
|
|
61
|
+
# @option options @see Hyperlink#initialize All options available to the Hyperlink class apply - however href will be overridden with the v parameter value.
|
|
62
|
+
def hyperlink=(v, options={})
|
|
63
|
+
options[:href] = v
|
|
64
|
+
if hyperlink.is_a?(Hyperlink)
|
|
65
|
+
options.each do |o|
|
|
66
|
+
hyperlink.send("#{o[0]}=", o[1]) if hyperlink.respond_to? "#{o[0]}="
|
|
67
|
+
end
|
|
68
|
+
else
|
|
69
|
+
@hyperlink = Hyperlink.new(self, options)
|
|
70
|
+
end
|
|
71
|
+
hyperlink
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def image_src=(v)
|
|
75
|
+
Axlsx::validate_string(v)
|
|
76
|
+
RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type(v)
|
|
77
|
+
raise ArgumentError, "File does not exist" unless File.exist?(v)
|
|
78
|
+
@image_src = v
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# @see name
|
|
82
|
+
def name=(v) Axlsx::validate_string(v); @name = v; end
|
|
83
|
+
|
|
84
|
+
# @see descr
|
|
85
|
+
def descr=(v) Axlsx::validate_string(v); @descr = v; end
|
|
86
|
+
|
|
87
|
+
# The file name of image_src without any path information
|
|
88
|
+
# @return [String]
|
|
89
|
+
def file_name
|
|
90
|
+
File.basename(image_src) unless image_src.nil?
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# returns the extension of image_src without the preceeding '.'
|
|
94
|
+
# @return [String]
|
|
95
|
+
def extname
|
|
96
|
+
File.extname(image_src).delete('.') unless image_src.nil?
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# The index of this image in the workbooks images collections
|
|
100
|
+
# @return [Index]
|
|
101
|
+
def index
|
|
102
|
+
@anchor.drawing.worksheet.workbook.images.index(self)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# The part name for this image used in serialization and relationship building
|
|
106
|
+
# @return [String]
|
|
107
|
+
def pn
|
|
108
|
+
"#{IMAGE_PN % [(index+1), extname]}"
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# The relationship object for this pic.
|
|
112
|
+
# @return [Relationship]
|
|
113
|
+
def relationship
|
|
114
|
+
Relationship.new(self, IMAGE_R, "../#{pn}")
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# providing access to the anchor's width attribute
|
|
118
|
+
# @see OneCellAnchor.width
|
|
119
|
+
def width
|
|
120
|
+
return unless @anchor.is_a?(OneCellAnchor)
|
|
121
|
+
@anchor.width
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# @see width
|
|
125
|
+
def width=(v)
|
|
126
|
+
use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
|
|
127
|
+
@anchor.width = v
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# providing access to update the anchor's height attribute
|
|
131
|
+
# @see OneCellAnchor.width
|
|
132
|
+
# @note this is a noop if you are using a TwoCellAnchor
|
|
133
|
+
def height
|
|
134
|
+
@anchor.height
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# @see height
|
|
138
|
+
# @note This is a noop if you are using a TwoCellAnchor
|
|
139
|
+
def height=(v)
|
|
140
|
+
use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
|
|
141
|
+
@anchor.height = v
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# This is a short cut method to set the start anchor position
|
|
145
|
+
# If you need finer granularity in positioning use
|
|
146
|
+
# graphic_frame.anchor.from.colOff / rowOff
|
|
147
|
+
# @param [Integer] x The column
|
|
148
|
+
# @param [Integer] y The row
|
|
149
|
+
# @return [Marker]
|
|
150
|
+
def start_at(x, y=nil)
|
|
151
|
+
@anchor.start_at x, y
|
|
152
|
+
@anchor.from
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# noop if not using a two cell anchor
|
|
156
|
+
# @param [Integer] x The column
|
|
157
|
+
# @param [Integer] y The row
|
|
158
|
+
# @return [Marker]
|
|
159
|
+
def end_at(x, y=nil)
|
|
160
|
+
use_two_cell_anchor unless @anchor.is_a?(TwoCellAnchor)
|
|
161
|
+
@anchor.end_at x, y
|
|
162
|
+
@anchor.to
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Serializes the object
|
|
166
|
+
# @param [String] str
|
|
167
|
+
# @return [String]
|
|
168
|
+
def to_xml_string(str = '')
|
|
169
|
+
str << '<xdr:pic>'
|
|
170
|
+
str << '<xdr:nvPicPr>'
|
|
171
|
+
str << ('<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">')
|
|
172
|
+
hyperlink.to_xml_string(str) if hyperlink.is_a?(Hyperlink)
|
|
173
|
+
str << '</xdr:cNvPr><xdr:cNvPicPr>'
|
|
174
|
+
picture_locking.to_xml_string(str)
|
|
175
|
+
str << '</xdr:cNvPicPr></xdr:nvPicPr>'
|
|
176
|
+
str << '<xdr:blipFill>'
|
|
177
|
+
str << ('<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
|
|
178
|
+
if opacity
|
|
179
|
+
str << "<a:alphaModFix amt=\"#{opacity}\"/>"
|
|
180
|
+
end
|
|
181
|
+
str << '</a:blip>'
|
|
182
|
+
str << '<a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr>'
|
|
183
|
+
str << '<a:xfrm><a:off x="0" y="0"/><a:ext cx="2336800" cy="2161540"/></a:xfrm>'
|
|
184
|
+
str << '<a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic>'
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
private
|
|
188
|
+
|
|
189
|
+
# Changes the anchor to a one cell anchor.
|
|
190
|
+
def use_one_cell_anchor
|
|
191
|
+
return if @anchor.is_a?(OneCellAnchor)
|
|
192
|
+
new_anchor = OneCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
|
|
193
|
+
swap_anchor(new_anchor)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
#changes the anchor type to a two cell anchor
|
|
197
|
+
def use_two_cell_anchor
|
|
198
|
+
return if @anchor.is_a?(TwoCellAnchor)
|
|
199
|
+
new_anchor = TwoCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
|
|
200
|
+
swap_anchor(new_anchor)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# refactoring of swapping code, law of demeter be damned!
|
|
204
|
+
def swap_anchor(new_anchor)
|
|
205
|
+
new_anchor.drawing.anchors.delete(new_anchor)
|
|
206
|
+
@anchor.drawing.anchors[@anchor.drawing.anchors.index(@anchor)] = new_anchor
|
|
207
|
+
new_anchor.instance_variable_set "@object", @anchor.object
|
|
208
|
+
@anchor = new_anchor
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# The picture locking class defines the locking properties for pictures in your workbook.
|
|
4
|
+
class PictureLocking
|
|
5
|
+
|
|
6
|
+
include Axlsx::OptionsParser
|
|
7
|
+
include Axlsx::SerializedAttributes
|
|
8
|
+
include Axlsx::Accessors
|
|
9
|
+
|
|
10
|
+
boolean_attr_accessor :noGrp, :noSelect, :noRot, :noChangeAspect,
|
|
11
|
+
:noMove, :noResize, :noEditPoints, :noAdjustHandles,
|
|
12
|
+
:noChangeArrowheads, :noChangeShapeType
|
|
13
|
+
|
|
14
|
+
serializable_attributes :noGrp, :noSelect, :noRot, :noChangeAspect,
|
|
15
|
+
:noMove, :noResize, :noEditPoints, :noAdjustHandles,
|
|
16
|
+
:noChangeArrowheads, :noChangeShapeType
|
|
17
|
+
|
|
18
|
+
# Creates a new PictureLocking object
|
|
19
|
+
# @option options [Boolean] noGrp
|
|
20
|
+
# @option options [Boolean] noSelect
|
|
21
|
+
# @option options [Boolean] noRot
|
|
22
|
+
# @option options [Boolean] noChangeAspect
|
|
23
|
+
# @option options [Boolean] noMove
|
|
24
|
+
# @option options [Boolean] noResize
|
|
25
|
+
# @option options [Boolean] noEditPoints
|
|
26
|
+
# @option options [Boolean] noAdjustHandles
|
|
27
|
+
# @option options [Boolean] noChangeArrowheads
|
|
28
|
+
# @option options [Boolean] noChangeShapeType
|
|
29
|
+
def initialize(options={})
|
|
30
|
+
@noChangeAspect = true
|
|
31
|
+
parse_options options
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Serializes the object
|
|
35
|
+
# @param [String] str
|
|
36
|
+
# @return [String]
|
|
37
|
+
def to_xml_string(str = '')
|
|
38
|
+
serialized_tag('a:picLocks', str)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
|
|
6
|
+
# @see Worksheet#add_chart
|
|
7
|
+
# @see Chart#add_series
|
|
8
|
+
# @see README for an example
|
|
9
|
+
class Pie3DChart < Chart
|
|
10
|
+
|
|
11
|
+
# Creates a new pie chart object
|
|
12
|
+
# @param [GraphicFrame] frame The workbook that owns this chart.
|
|
13
|
+
# @option options [Cell, String] title
|
|
14
|
+
# @option options [Boolean] show_legend
|
|
15
|
+
# @option options [Symbol] grouping
|
|
16
|
+
# @option options [String] gap_depth
|
|
17
|
+
# @option options [Integer] rot_x
|
|
18
|
+
# @option options [String] h_percent
|
|
19
|
+
# @option options [Integer] rot_y
|
|
20
|
+
# @option options [String] depth_percent
|
|
21
|
+
# @option options [Boolean] r_ang_ax
|
|
22
|
+
# @option options [Integer] perspective
|
|
23
|
+
# @see Chart
|
|
24
|
+
# @see View3D
|
|
25
|
+
def initialize(frame, options={})
|
|
26
|
+
@vary_colors = true
|
|
27
|
+
super(frame, options)
|
|
28
|
+
@series_type = PieSeries
|
|
29
|
+
@view_3D = View3D.new({:rot_x =>30, :perspective=>30}.merge(options))
|
|
30
|
+
@d_lbls = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Serializes the object
|
|
34
|
+
# @param [String] str
|
|
35
|
+
# @return [String]
|
|
36
|
+
def to_xml_string(str = '')
|
|
37
|
+
super(str) do
|
|
38
|
+
str << '<c:pie3DChart>'
|
|
39
|
+
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
|
40
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
|
41
|
+
d_lbls.to_xml_string(str) if @d_lbls
|
|
42
|
+
str << '</c:pie3DChart>'
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# A PieSeries defines the data and labels and explosion for pie charts series.
|
|
5
|
+
# @note The recommended way to manage series is to use Chart#add_series
|
|
6
|
+
# @see Worksheet#add_chart
|
|
7
|
+
# @see Chart#add_series
|
|
8
|
+
class PieSeries < Series
|
|
9
|
+
|
|
10
|
+
# The data for this series.
|
|
11
|
+
# @return [SimpleTypedList]
|
|
12
|
+
attr_reader :data
|
|
13
|
+
|
|
14
|
+
# The labels for this series.
|
|
15
|
+
# @return [SimpleTypedList]
|
|
16
|
+
attr_reader :labels
|
|
17
|
+
|
|
18
|
+
# The explosion for this series
|
|
19
|
+
# @return [Integert]
|
|
20
|
+
attr_reader :explosion
|
|
21
|
+
|
|
22
|
+
# An array of rgb colors to apply to your bar chart.
|
|
23
|
+
attr_reader :colors
|
|
24
|
+
|
|
25
|
+
# Creates a new series
|
|
26
|
+
# @option options [Array, SimpleTypedList] data
|
|
27
|
+
# @option options [Array, SimpleTypedList] labels
|
|
28
|
+
# @option options [String] title
|
|
29
|
+
# @option options [Integer] explosion
|
|
30
|
+
# @param [Chart] chart
|
|
31
|
+
def initialize(chart, options={})
|
|
32
|
+
@explosion = nil
|
|
33
|
+
@colors = []
|
|
34
|
+
super(chart, options)
|
|
35
|
+
self.labels = AxDataSource.new(:data => options[:labels]) unless options[:labels].nil?
|
|
36
|
+
self.data = NumDataSource.new(options) unless options[:data].nil?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @see colors
|
|
40
|
+
def colors=(v) DataTypeValidator.validate "BarSeries.colors", [Array], v; @colors = v end
|
|
41
|
+
|
|
42
|
+
# @see explosion
|
|
43
|
+
def explosion=(v) Axlsx::validate_unsigned_int(v); @explosion = v; end
|
|
44
|
+
|
|
45
|
+
# Serializes the object
|
|
46
|
+
# @param [String] str
|
|
47
|
+
# @return [String]
|
|
48
|
+
def to_xml_string(str = '')
|
|
49
|
+
super(str) do
|
|
50
|
+
str << '<c:explosion val="' + @explosion + '"/>' unless @explosion.nil?
|
|
51
|
+
colors.each_with_index do |c, index|
|
|
52
|
+
str << '<c:dPt>'
|
|
53
|
+
str << ('<c:idx val="' << index.to_s << '"/>')
|
|
54
|
+
str << '<c:spPr><a:solidFill>'
|
|
55
|
+
str << ('<a:srgbClr val="' << c << '"/>')
|
|
56
|
+
str << '</a:solidFill></c:spPr></c:dPt>'
|
|
57
|
+
end
|
|
58
|
+
@labels.to_xml_string str unless @labels.nil?
|
|
59
|
+
@data.to_xml_string str unless @data.nil?
|
|
60
|
+
end
|
|
61
|
+
str
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
# assigns the data for this series
|
|
67
|
+
def data=(v) DataTypeValidator.validate "Series.data", [NumDataSource], v; @data = v; end
|
|
68
|
+
|
|
69
|
+
# assigns the labels for this series
|
|
70
|
+
def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# The Scaling class defines axis scaling
|
|
4
|
+
class Scaling
|
|
5
|
+
|
|
6
|
+
include Axlsx::OptionsParser
|
|
7
|
+
|
|
8
|
+
# creates a new Scaling object
|
|
9
|
+
# @option options [Integer] logBase
|
|
10
|
+
# @option options [Symbol] orientation
|
|
11
|
+
# @option options [Float] max
|
|
12
|
+
# @option options [Float] min
|
|
13
|
+
def initialize(options={})
|
|
14
|
+
@orientation = :minMax
|
|
15
|
+
@logBase, @min, @max = nil, nil, nil
|
|
16
|
+
parse_options options
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# logarithmic base for a logarithmic axis.
|
|
20
|
+
# must be between 2 and 1000
|
|
21
|
+
# @return [Integer]
|
|
22
|
+
attr_reader :logBase
|
|
23
|
+
|
|
24
|
+
# the orientation of the axis
|
|
25
|
+
# must be one of [:minMax, :maxMin]
|
|
26
|
+
# @return [Symbol]
|
|
27
|
+
attr_reader :orientation
|
|
28
|
+
|
|
29
|
+
# the maximum scaling
|
|
30
|
+
# @return [Float]
|
|
31
|
+
attr_reader :max
|
|
32
|
+
|
|
33
|
+
# the minimu scaling
|
|
34
|
+
# @return [Float]
|
|
35
|
+
attr_reader :min
|
|
36
|
+
|
|
37
|
+
# @see logBase
|
|
38
|
+
def logBase=(v) DataTypeValidator.validate "Scaling.logBase", [Integer], v, lambda { |arg| arg >= 2 && arg <= 1000}; @logBase = v; end
|
|
39
|
+
# @see orientation
|
|
40
|
+
def orientation=(v) RestrictionValidator.validate "Scaling.orientation", [:minMax, :maxMin], v; @orientation = v; end
|
|
41
|
+
# @see max
|
|
42
|
+
def max=(v) DataTypeValidator.validate "Scaling.max", Float, v; @max = v; end
|
|
43
|
+
|
|
44
|
+
# @see min
|
|
45
|
+
def min=(v) DataTypeValidator.validate "Scaling.min", Float, v; @min = v; end
|
|
46
|
+
|
|
47
|
+
# Serializes the object
|
|
48
|
+
# @param [String] str
|
|
49
|
+
# @return [String]
|
|
50
|
+
def to_xml_string(str = '')
|
|
51
|
+
str << '<c:scaling>'
|
|
52
|
+
str << ('<c:logBase val="' << @logBase.to_s << '"/>') unless @logBase.nil?
|
|
53
|
+
str << ('<c:orientation val="' << @orientation.to_s << '"/>') unless @orientation.nil?
|
|
54
|
+
str << ('<c:min val="' << @min.to_s << '"/>') unless @min.nil?
|
|
55
|
+
str << ('<c:max val="' << @max.to_s << '"/>') unless @max.nil?
|
|
56
|
+
str << '</c:scaling>'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# The ScatterChart allows you to insert a scatter chart into your worksheet
|
|
5
|
+
# @see Worksheet#add_chart
|
|
6
|
+
# @see Chart#add_series
|
|
7
|
+
# @see README for an example
|
|
8
|
+
class ScatterChart < Chart
|
|
9
|
+
|
|
10
|
+
include Axlsx::OptionsParser
|
|
11
|
+
|
|
12
|
+
# The Style for the scatter chart
|
|
13
|
+
# must be one of :none | :line | :lineMarker | :marker | :smooth | :smoothMarker
|
|
14
|
+
# return [Symbol]
|
|
15
|
+
attr_reader :scatter_style
|
|
16
|
+
alias :scatterStyle :scatter_style
|
|
17
|
+
|
|
18
|
+
# the x value axis
|
|
19
|
+
# @return [ValAxis]
|
|
20
|
+
def x_val_axis
|
|
21
|
+
axes[:x_val_axis]
|
|
22
|
+
end
|
|
23
|
+
alias :xValAxis :x_val_axis
|
|
24
|
+
|
|
25
|
+
# the y value axis
|
|
26
|
+
# @return [ValAxis]
|
|
27
|
+
def y_val_axis
|
|
28
|
+
axes[:y_val_axis]
|
|
29
|
+
end
|
|
30
|
+
alias :yValAxis :y_val_axis
|
|
31
|
+
|
|
32
|
+
# Creates a new scatter chart
|
|
33
|
+
def initialize(frame, options={})
|
|
34
|
+
@vary_colors = 0
|
|
35
|
+
@scatter_style = :lineMarker
|
|
36
|
+
|
|
37
|
+
super(frame, options)
|
|
38
|
+
@series_type = ScatterSeries
|
|
39
|
+
@d_lbls = nil
|
|
40
|
+
parse_options options
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# see #scatterStyle
|
|
44
|
+
def scatter_style=(v)
|
|
45
|
+
Axlsx.validate_scatter_style(v)
|
|
46
|
+
@scatter_style = v
|
|
47
|
+
end
|
|
48
|
+
alias :scatterStyle= :scatter_style=
|
|
49
|
+
|
|
50
|
+
# Serializes the object
|
|
51
|
+
# @param [String] str
|
|
52
|
+
# @return [String]
|
|
53
|
+
def to_xml_string(str = '')
|
|
54
|
+
super(str) do
|
|
55
|
+
str << '<c:scatterChart>'
|
|
56
|
+
str << ('<c:scatterStyle val="' << scatter_style.to_s << '"/>')
|
|
57
|
+
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
|
58
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
|
59
|
+
d_lbls.to_xml_string(str) if @d_lbls
|
|
60
|
+
axes.to_xml_string(str, :ids => true)
|
|
61
|
+
str << '</c:scatterChart>'
|
|
62
|
+
axes.to_xml_string(str)
|
|
63
|
+
end
|
|
64
|
+
str
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# The axes for the scatter chart. ScatterChart has an x_val_axis and
|
|
68
|
+
# a y_val_axis
|
|
69
|
+
# @return [Axes]
|
|
70
|
+
def axes
|
|
71
|
+
@axes ||= Axes.new(:x_val_axis => ValAxis, :y_val_axis => ValAxis)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|