caxlsx 3.1.1 → 3.2.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 +354 -343
- data/LICENSE +21 -21
- data/README.md +168 -172
- 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 +276 -276
- data/lib/axlsx/drawing/d_lbls.rb +90 -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 -98
- 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 +97 -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 +388 -388
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -71
- 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 +494 -420
- 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 +410 -401
- 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 +395 -370
- 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/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
- 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 +246 -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 +296 -294
- 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 +786 -768
- 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 +185 -171
- 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
- data/test/benchmark.rb +72 -72
- data/test/content_type/tc_content_type.rb +76 -76
- data/test/content_type/tc_default.rb +16 -16
- data/test/content_type/tc_override.rb +14 -14
- data/test/doc_props/tc_app.rb +43 -43
- data/test/doc_props/tc_core.rb +42 -42
- data/test/drawing/tc_area_chart.rb +39 -39
- data/test/drawing/tc_area_series.rb +71 -71
- data/test/drawing/tc_axes.rb +7 -7
- data/test/drawing/tc_axis.rb +112 -112
- data/test/drawing/tc_bar_3D_chart.rb +86 -86
- data/test/drawing/tc_bar_chart.rb +86 -86
- data/test/drawing/tc_bar_series.rb +46 -46
- data/test/drawing/tc_bubble_chart.rb +44 -44
- data/test/drawing/tc_bubble_series.rb +21 -21
- data/test/drawing/tc_cat_axis.rb +31 -31
- data/test/drawing/tc_cat_axis_data.rb +27 -27
- data/test/drawing/tc_chart.rb +123 -123
- data/test/drawing/tc_d_lbls.rb +57 -57
- data/test/drawing/tc_data_source.rb +23 -23
- data/test/drawing/tc_drawing.rb +80 -80
- data/test/drawing/tc_graphic_frame.rb +27 -27
- data/test/drawing/tc_hyperlink.rb +64 -64
- data/test/drawing/tc_line_3d_chart.rb +47 -47
- data/test/drawing/tc_line_chart.rb +39 -39
- data/test/drawing/tc_line_series.rb +71 -71
- data/test/drawing/tc_marker.rb +44 -44
- data/test/drawing/tc_named_axis_data.rb +27 -27
- data/test/drawing/tc_num_data.rb +31 -31
- data/test/drawing/tc_num_val.rb +29 -29
- data/test/drawing/tc_one_cell_anchor.rb +66 -66
- data/test/drawing/tc_pic.rb +103 -103
- data/test/drawing/tc_picture_locking.rb +72 -72
- data/test/drawing/tc_pie_3D_chart.rb +28 -28
- data/test/drawing/tc_pie_series.rb +33 -33
- data/test/drawing/tc_scaling.rb +36 -36
- data/test/drawing/tc_scatter_chart.rb +48 -48
- data/test/drawing/tc_scatter_series.rb +74 -56
- data/test/drawing/tc_ser_axis.rb +31 -31
- data/test/drawing/tc_series.rb +23 -23
- data/test/drawing/tc_series_title.rb +54 -54
- data/test/drawing/tc_str_data.rb +18 -18
- data/test/drawing/tc_str_val.rb +30 -30
- data/test/drawing/tc_title.rb +70 -70
- data/test/drawing/tc_two_cell_anchor.rb +36 -36
- data/test/drawing/tc_val_axis.rb +24 -24
- data/test/drawing/tc_view_3D.rb +54 -54
- data/test/drawing/tc_vml_drawing.rb +25 -25
- data/test/drawing/tc_vml_shape.rb +106 -106
- data/test/profile.rb +24 -24
- data/test/rels/tc_relationship.rb +52 -52
- data/test/rels/tc_relationships.rb +37 -37
- data/test/stylesheet/tc_border.rb +37 -37
- data/test/stylesheet/tc_border_pr.rb +32 -32
- data/test/stylesheet/tc_cell_alignment.rb +81 -81
- data/test/stylesheet/tc_cell_protection.rb +29 -29
- data/test/stylesheet/tc_cell_style.rb +57 -57
- data/test/stylesheet/tc_color.rb +43 -43
- data/test/stylesheet/tc_dxf.rb +81 -81
- data/test/stylesheet/tc_fill.rb +18 -18
- data/test/stylesheet/tc_font.rb +133 -133
- data/test/stylesheet/tc_gradient_fill.rb +72 -72
- data/test/stylesheet/tc_gradient_stop.rb +31 -31
- data/test/stylesheet/tc_num_fmt.rb +30 -30
- data/test/stylesheet/tc_pattern_fill.rb +43 -43
- data/test/stylesheet/tc_styles.rb +309 -261
- data/test/stylesheet/tc_table_style.rb +44 -44
- data/test/stylesheet/tc_table_style_element.rb +45 -45
- data/test/stylesheet/tc_table_styles.rb +29 -29
- data/test/stylesheet/tc_xf.rb +120 -120
- data/test/tc_axlsx.rb +109 -109
- data/test/tc_helper.rb +10 -10
- data/test/tc_package.rb +317 -314
- data/test/util/tc_mime_type_utils.rb +13 -13
- data/test/util/tc_serialized_attributes.rb +19 -19
- data/test/util/tc_simple_typed_list.rb +77 -77
- data/test/util/tc_validators.rb +210 -210
- data/test/workbook/tc_defined_name.rb +49 -49
- data/test/workbook/tc_shared_strings_table.rb +59 -59
- data/test/workbook/tc_workbook.rb +165 -160
- data/test/workbook/tc_workbook_view.rb +50 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
- data/test/workbook/worksheet/tc_break.rb +49 -49
- data/test/workbook/worksheet/tc_cell.rb +465 -453
- data/test/workbook/worksheet/tc_cfvo.rb +31 -31
- data/test/workbook/worksheet/tc_col.rb +93 -93
- data/test/workbook/worksheet/tc_color_scale.rb +58 -58
- data/test/workbook/worksheet/tc_comment.rb +72 -72
- data/test/workbook/worksheet/tc_comments.rb +57 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
- data/test/workbook/worksheet/tc_data_bar.rb +46 -46
- data/test/workbook/worksheet/tc_data_validation.rb +265 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
- data/test/workbook/worksheet/tc_header_footer.rb +151 -151
- data/test/workbook/worksheet/tc_icon_set.rb +45 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
- data/test/workbook/worksheet/tc_page_margins.rb +97 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
- data/test/workbook/worksheet/tc_page_setup.rb +143 -143
- data/test/workbook/worksheet/tc_pane.rb +54 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +180 -143
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -62
- data/test/workbook/worksheet/tc_print_options.rb +72 -72
- data/test/workbook/worksheet/tc_protected_range.rb +17 -17
- data/test/workbook/worksheet/tc_rich_text.rb +44 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
- data/test/workbook/worksheet/tc_row.rb +160 -160
- data/test/workbook/worksheet/tc_selection.rb +55 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
- data/test/workbook/worksheet/tc_table.rb +77 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
- data/test/workbook/worksheet/tc_worksheet.rb +632 -601
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
- metadata +101 -101
@@ -1,99 +1,99 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Axlsx
|
3
|
-
|
4
|
-
# The AreaChart is a two dimentional line chart (who would have guessed?) that you can add to your worksheet.
|
5
|
-
# @example Creating a chart
|
6
|
-
# # This example creates a line in a single sheet.
|
7
|
-
# require "rubygems" # if that is your preferred way to manage gems!
|
8
|
-
# require "axlsx"
|
9
|
-
#
|
10
|
-
# p = Axlsx::Package.new
|
11
|
-
# ws = p.workbook.add_worksheet
|
12
|
-
# ws.add_row ["This is a chart with no data in the sheet"]
|
13
|
-
#
|
14
|
-
# chart = ws.add_chart(Axlsx::AreaChart, :start_at=> [0,1], :end_at=>[0,6], :title=>"Most Popular Pets")
|
15
|
-
# chart.add_series :data => [1, 9, 10], :labels => ["Slimy Reptiles", "Fuzzy Bunnies", "Rottweiler"]
|
16
|
-
#
|
17
|
-
# @see Worksheet#add_chart
|
18
|
-
# @see Worksheet#add_row
|
19
|
-
# @see Chart#add_series
|
20
|
-
# @see Series
|
21
|
-
# @see Package#serialize
|
22
|
-
class AreaChart < Chart
|
23
|
-
|
24
|
-
# the category axis
|
25
|
-
# @return [CatAxis]
|
26
|
-
def cat_axis
|
27
|
-
axes[:cat_axis]
|
28
|
-
end
|
29
|
-
alias :catAxis :cat_axis
|
30
|
-
|
31
|
-
# the category axis
|
32
|
-
# @return [ValAxis]
|
33
|
-
def val_axis
|
34
|
-
axes[:val_axis]
|
35
|
-
end
|
36
|
-
alias :valAxis :val_axis
|
37
|
-
|
38
|
-
# must be one of [:percentStacked, :clustered, :standard, :stacked]
|
39
|
-
# @return [Symbol]
|
40
|
-
attr_reader :grouping
|
41
|
-
|
42
|
-
# Creates a new line chart object
|
43
|
-
# @param [GraphicFrame] frame The workbook that owns this chart.
|
44
|
-
# @option options [Cell, String] title
|
45
|
-
# @option options [Boolean] show_legend
|
46
|
-
# @option options [Symbol] grouping
|
47
|
-
# @see Chart
|
48
|
-
def initialize(frame, options={})
|
49
|
-
@vary_colors = false
|
50
|
-
@grouping = :standard
|
51
|
-
super(frame, options)
|
52
|
-
@series_type = AreaSeries
|
53
|
-
@d_lbls = nil
|
54
|
-
end
|
55
|
-
|
56
|
-
# @see grouping
|
57
|
-
def grouping=(v)
|
58
|
-
RestrictionValidator.validate "AreaChart.grouping", [:percentStacked, :standard, :stacked], v
|
59
|
-
@grouping = v
|
60
|
-
end
|
61
|
-
|
62
|
-
# The node name to use in serialization. As AreaChart is used as the
|
63
|
-
# base class for Liine3DChart we need to be sure to serialize the
|
64
|
-
# chart based on the actual class type and not a fixed node name.
|
65
|
-
# @return [String]
|
66
|
-
def node_name
|
67
|
-
path = self.class.to_s
|
68
|
-
if i = path.rindex('::')
|
69
|
-
path = path[(i+2)..-1]
|
70
|
-
end
|
71
|
-
path[0] = path[0].chr.downcase
|
72
|
-
path
|
73
|
-
end
|
74
|
-
|
75
|
-
# Serializes the object
|
76
|
-
# @param [String] str
|
77
|
-
# @return [String]
|
78
|
-
def to_xml_string(str = '')
|
79
|
-
super(str) do
|
80
|
-
str << ("<c:" << node_name << ">")
|
81
|
-
str << ('<c:grouping val="' << grouping.to_s << '"/>')
|
82
|
-
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
83
|
-
@series.each { |ser| ser.to_xml_string(str) }
|
84
|
-
@d_lbls.to_xml_string(str) if @d_lbls
|
85
|
-
yield if block_given?
|
86
|
-
axes.to_xml_string(str, :ids => true)
|
87
|
-
str << ("</c:" << node_name << ">")
|
88
|
-
axes.to_xml_string(str)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
# The axes for this chart. AreaCharts have a category and value
|
93
|
-
# axis.
|
94
|
-
# @return [Axes]
|
95
|
-
def axes
|
96
|
-
@axes ||= Axes.new(:cat_axis => CatAxis, :val_axis => ValAxis)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Axlsx
|
3
|
+
|
4
|
+
# The AreaChart is a two dimentional line chart (who would have guessed?) that you can add to your worksheet.
|
5
|
+
# @example Creating a chart
|
6
|
+
# # This example creates a line in a single sheet.
|
7
|
+
# require "rubygems" # if that is your preferred way to manage gems!
|
8
|
+
# require "axlsx"
|
9
|
+
#
|
10
|
+
# p = Axlsx::Package.new
|
11
|
+
# ws = p.workbook.add_worksheet
|
12
|
+
# ws.add_row ["This is a chart with no data in the sheet"]
|
13
|
+
#
|
14
|
+
# chart = ws.add_chart(Axlsx::AreaChart, :start_at=> [0,1], :end_at=>[0,6], :title=>"Most Popular Pets")
|
15
|
+
# chart.add_series :data => [1, 9, 10], :labels => ["Slimy Reptiles", "Fuzzy Bunnies", "Rottweiler"]
|
16
|
+
#
|
17
|
+
# @see Worksheet#add_chart
|
18
|
+
# @see Worksheet#add_row
|
19
|
+
# @see Chart#add_series
|
20
|
+
# @see Series
|
21
|
+
# @see Package#serialize
|
22
|
+
class AreaChart < Chart
|
23
|
+
|
24
|
+
# the category axis
|
25
|
+
# @return [CatAxis]
|
26
|
+
def cat_axis
|
27
|
+
axes[:cat_axis]
|
28
|
+
end
|
29
|
+
alias :catAxis :cat_axis
|
30
|
+
|
31
|
+
# the category axis
|
32
|
+
# @return [ValAxis]
|
33
|
+
def val_axis
|
34
|
+
axes[:val_axis]
|
35
|
+
end
|
36
|
+
alias :valAxis :val_axis
|
37
|
+
|
38
|
+
# must be one of [:percentStacked, :clustered, :standard, :stacked]
|
39
|
+
# @return [Symbol]
|
40
|
+
attr_reader :grouping
|
41
|
+
|
42
|
+
# Creates a new line chart object
|
43
|
+
# @param [GraphicFrame] frame The workbook that owns this chart.
|
44
|
+
# @option options [Cell, String] title
|
45
|
+
# @option options [Boolean] show_legend
|
46
|
+
# @option options [Symbol] grouping
|
47
|
+
# @see Chart
|
48
|
+
def initialize(frame, options={})
|
49
|
+
@vary_colors = false
|
50
|
+
@grouping = :standard
|
51
|
+
super(frame, options)
|
52
|
+
@series_type = AreaSeries
|
53
|
+
@d_lbls = nil
|
54
|
+
end
|
55
|
+
|
56
|
+
# @see grouping
|
57
|
+
def grouping=(v)
|
58
|
+
RestrictionValidator.validate "AreaChart.grouping", [:percentStacked, :standard, :stacked], v
|
59
|
+
@grouping = v
|
60
|
+
end
|
61
|
+
|
62
|
+
# The node name to use in serialization. As AreaChart is used as the
|
63
|
+
# base class for Liine3DChart we need to be sure to serialize the
|
64
|
+
# chart based on the actual class type and not a fixed node name.
|
65
|
+
# @return [String]
|
66
|
+
def node_name
|
67
|
+
path = self.class.to_s
|
68
|
+
if i = path.rindex('::')
|
69
|
+
path = path[(i+2)..-1]
|
70
|
+
end
|
71
|
+
path[0] = path[0].chr.downcase
|
72
|
+
path
|
73
|
+
end
|
74
|
+
|
75
|
+
# Serializes the object
|
76
|
+
# @param [String] str
|
77
|
+
# @return [String]
|
78
|
+
def to_xml_string(str = '')
|
79
|
+
super(str) do
|
80
|
+
str << ("<c:" << node_name << ">")
|
81
|
+
str << ('<c:grouping val="' << grouping.to_s << '"/>')
|
82
|
+
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
83
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
84
|
+
@d_lbls.to_xml_string(str) if @d_lbls
|
85
|
+
yield if block_given?
|
86
|
+
axes.to_xml_string(str, :ids => true)
|
87
|
+
str << ("</c:" << node_name << ">")
|
88
|
+
axes.to_xml_string(str)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# The axes for this chart. AreaCharts have a category and value
|
93
|
+
# axis.
|
94
|
+
# @return [Axes]
|
95
|
+
def axes
|
96
|
+
@axes ||= Axes.new(:cat_axis => CatAxis, :val_axis => ValAxis)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -1,110 +1,110 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
module Axlsx
|
3
|
-
# A AreaSeries defines the title, data and labels for line charts
|
4
|
-
# @note The recommended way to manage series is to use Chart#add_series
|
5
|
-
# @see Worksheet#add_chart
|
6
|
-
# @see Chart#add_series
|
7
|
-
class AreaSeries < Series
|
8
|
-
|
9
|
-
# The data for this series.
|
10
|
-
# @return [ValAxisData]
|
11
|
-
attr_reader :data
|
12
|
-
|
13
|
-
# The labels for this series.
|
14
|
-
# @return [CatAxisData]
|
15
|
-
attr_reader :labels
|
16
|
-
|
17
|
-
# The fill color for this series.
|
18
|
-
# Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used.
|
19
|
-
# @return [String]
|
20
|
-
attr_reader :color
|
21
|
-
|
22
|
-
# show markers on values
|
23
|
-
# @return [Boolean]
|
24
|
-
attr_reader :show_marker
|
25
|
-
|
26
|
-
# custom marker symbol
|
27
|
-
# @return [String]
|
28
|
-
attr_reader :marker_symbol
|
29
|
-
|
30
|
-
# line smoothing on values
|
31
|
-
# @return [Boolean]
|
32
|
-
attr_reader :smooth
|
33
|
-
|
34
|
-
# Creates a new series
|
35
|
-
# @option options [Array, SimpleTypedList] data
|
36
|
-
# @option options [Array, SimpleTypedList] labels
|
37
|
-
# @param [Chart] chart
|
38
|
-
def initialize(chart, options={})
|
39
|
-
@show_marker = false
|
40
|
-
@marker_symbol = options[:marker_symbol] ? options[:marker_symbol] : :default
|
41
|
-
@smooth = false
|
42
|
-
@labels, @data = nil, nil
|
43
|
-
super(chart, options)
|
44
|
-
@labels = AxDataSource.new(:data => options[:labels]) unless options[:labels].nil?
|
45
|
-
@data = NumDataSource.new(options) unless options[:data].nil?
|
46
|
-
end
|
47
|
-
|
48
|
-
# @see color
|
49
|
-
def color=(v)
|
50
|
-
@color = v
|
51
|
-
end
|
52
|
-
|
53
|
-
# @see show_marker
|
54
|
-
def show_marker=(v)
|
55
|
-
Axlsx::validate_boolean(v)
|
56
|
-
@show_marker = v
|
57
|
-
end
|
58
|
-
|
59
|
-
# @see marker_symbol
|
60
|
-
def marker_symbol=(v)
|
61
|
-
Axlsx::validate_marker_symbol(v)
|
62
|
-
@marker_symbol = v
|
63
|
-
end
|
64
|
-
|
65
|
-
# @see smooth
|
66
|
-
def smooth=(v)
|
67
|
-
Axlsx::validate_boolean(v)
|
68
|
-
@smooth = v
|
69
|
-
end
|
70
|
-
|
71
|
-
# Serializes the object
|
72
|
-
# @param [String] str
|
73
|
-
# @return [String]
|
74
|
-
def to_xml_string(str = '')
|
75
|
-
super(str) do
|
76
|
-
if color
|
77
|
-
str << '<c:spPr><a:solidFill>'
|
78
|
-
str << ('<a:srgbClr val="' << color << '"/>')
|
79
|
-
str << '</a:solidFill>'
|
80
|
-
str << '<a:ln w="28800">'
|
81
|
-
str << '<a:solidFill>'
|
82
|
-
str << ('<a:srgbClr val="' << color << '"/>')
|
83
|
-
str << '</a:solidFill>'
|
84
|
-
str << '</a:ln>'
|
85
|
-
str << '<a:round/>'
|
86
|
-
str << '</c:spPr>'
|
87
|
-
end
|
88
|
-
|
89
|
-
if !@show_marker
|
90
|
-
str << '<c:marker><c:symbol val="none"/></c:marker>'
|
91
|
-
elsif @marker_symbol != :default
|
92
|
-
str << '<c:marker><c:symbol val="' + @marker_symbol.to_s + '"/></c:marker>'
|
93
|
-
end
|
94
|
-
|
95
|
-
@labels.to_xml_string(str) unless @labels.nil?
|
96
|
-
@data.to_xml_string(str) unless @data.nil?
|
97
|
-
str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
private
|
102
|
-
|
103
|
-
# assigns the data for this series
|
104
|
-
def data=(v) DataTypeValidator.validate "Series.data", [NumDataSource], v; @data = v; end
|
105
|
-
|
106
|
-
# assigns the labels for this series
|
107
|
-
def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end
|
108
|
-
|
109
|
-
end
|
110
|
-
end
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Axlsx
|
3
|
+
# A AreaSeries defines the title, data and labels for line charts
|
4
|
+
# @note The recommended way to manage series is to use Chart#add_series
|
5
|
+
# @see Worksheet#add_chart
|
6
|
+
# @see Chart#add_series
|
7
|
+
class AreaSeries < Series
|
8
|
+
|
9
|
+
# The data for this series.
|
10
|
+
# @return [ValAxisData]
|
11
|
+
attr_reader :data
|
12
|
+
|
13
|
+
# The labels for this series.
|
14
|
+
# @return [CatAxisData]
|
15
|
+
attr_reader :labels
|
16
|
+
|
17
|
+
# The fill color for this series.
|
18
|
+
# Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used.
|
19
|
+
# @return [String]
|
20
|
+
attr_reader :color
|
21
|
+
|
22
|
+
# show markers on values
|
23
|
+
# @return [Boolean]
|
24
|
+
attr_reader :show_marker
|
25
|
+
|
26
|
+
# custom marker symbol
|
27
|
+
# @return [String]
|
28
|
+
attr_reader :marker_symbol
|
29
|
+
|
30
|
+
# line smoothing on values
|
31
|
+
# @return [Boolean]
|
32
|
+
attr_reader :smooth
|
33
|
+
|
34
|
+
# Creates a new series
|
35
|
+
# @option options [Array, SimpleTypedList] data
|
36
|
+
# @option options [Array, SimpleTypedList] labels
|
37
|
+
# @param [Chart] chart
|
38
|
+
def initialize(chart, options={})
|
39
|
+
@show_marker = false
|
40
|
+
@marker_symbol = options[:marker_symbol] ? options[:marker_symbol] : :default
|
41
|
+
@smooth = false
|
42
|
+
@labels, @data = nil, nil
|
43
|
+
super(chart, options)
|
44
|
+
@labels = AxDataSource.new(:data => options[:labels]) unless options[:labels].nil?
|
45
|
+
@data = NumDataSource.new(options) unless options[:data].nil?
|
46
|
+
end
|
47
|
+
|
48
|
+
# @see color
|
49
|
+
def color=(v)
|
50
|
+
@color = v
|
51
|
+
end
|
52
|
+
|
53
|
+
# @see show_marker
|
54
|
+
def show_marker=(v)
|
55
|
+
Axlsx::validate_boolean(v)
|
56
|
+
@show_marker = v
|
57
|
+
end
|
58
|
+
|
59
|
+
# @see marker_symbol
|
60
|
+
def marker_symbol=(v)
|
61
|
+
Axlsx::validate_marker_symbol(v)
|
62
|
+
@marker_symbol = v
|
63
|
+
end
|
64
|
+
|
65
|
+
# @see smooth
|
66
|
+
def smooth=(v)
|
67
|
+
Axlsx::validate_boolean(v)
|
68
|
+
@smooth = v
|
69
|
+
end
|
70
|
+
|
71
|
+
# Serializes the object
|
72
|
+
# @param [String] str
|
73
|
+
# @return [String]
|
74
|
+
def to_xml_string(str = '')
|
75
|
+
super(str) do
|
76
|
+
if color
|
77
|
+
str << '<c:spPr><a:solidFill>'
|
78
|
+
str << ('<a:srgbClr val="' << color << '"/>')
|
79
|
+
str << '</a:solidFill>'
|
80
|
+
str << '<a:ln w="28800">'
|
81
|
+
str << '<a:solidFill>'
|
82
|
+
str << ('<a:srgbClr val="' << color << '"/>')
|
83
|
+
str << '</a:solidFill>'
|
84
|
+
str << '</a:ln>'
|
85
|
+
str << '<a:round/>'
|
86
|
+
str << '</c:spPr>'
|
87
|
+
end
|
88
|
+
|
89
|
+
if !@show_marker
|
90
|
+
str << '<c:marker><c:symbol val="none"/></c:marker>'
|
91
|
+
elsif @marker_symbol != :default
|
92
|
+
str << '<c:marker><c:symbol val="' + @marker_symbol.to_s + '"/></c:marker>'
|
93
|
+
end
|
94
|
+
|
95
|
+
@labels.to_xml_string(str) unless @labels.nil?
|
96
|
+
@data.to_xml_string(str) unless @data.nil?
|
97
|
+
str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
# assigns the data for this series
|
104
|
+
def data=(v) DataTypeValidator.validate "Series.data", [NumDataSource], v; @data = v; end
|
105
|
+
|
106
|
+
# assigns the labels for this series
|
107
|
+
def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end
|
108
|
+
|
109
|
+
end
|
110
|
+
end
|
@@ -1,26 +1,26 @@
|
|
1
|
-
module Axlsx
|
2
|
-
|
3
|
-
# An axis data source that can contain referenced or literal strings or numbers
|
4
|
-
# @note only string data types are supported - mainly because we have not implemented a chart type that requires a numerical axis value
|
5
|
-
class AxDataSource < NumDataSource
|
6
|
-
|
7
|
-
# creates a new NumDataSource object
|
8
|
-
# @option options [Array] data An array of Cells or Numeric objects
|
9
|
-
# @option options [Symbol] tag_name see tag_name
|
10
|
-
def initialize(options={})
|
11
|
-
@tag_name = :cat
|
12
|
-
@data_type = StrData
|
13
|
-
@ref_tag_name = :strRef
|
14
|
-
super(options)
|
15
|
-
end
|
16
|
-
|
17
|
-
# allowed element tag names for serialization
|
18
|
-
# @return [Array]
|
19
|
-
def self.allowed_tag_names
|
20
|
-
[:xVal, :cat]
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# An axis data source that can contain referenced or literal strings or numbers
|
4
|
+
# @note only string data types are supported - mainly because we have not implemented a chart type that requires a numerical axis value
|
5
|
+
class AxDataSource < NumDataSource
|
6
|
+
|
7
|
+
# creates a new NumDataSource object
|
8
|
+
# @option options [Array] data An array of Cells or Numeric objects
|
9
|
+
# @option options [Symbol] tag_name see tag_name
|
10
|
+
def initialize(options={})
|
11
|
+
@tag_name = :cat
|
12
|
+
@data_type = StrData
|
13
|
+
@ref_tag_name = :strRef
|
14
|
+
super(options)
|
15
|
+
end
|
16
|
+
|
17
|
+
# allowed element tag names for serialization
|
18
|
+
# @return [Array]
|
19
|
+
def self.allowed_tag_names
|
20
|
+
[:xVal, :cat]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
data/lib/axlsx/drawing/axes.rb
CHANGED
@@ -1,61 +1,61 @@
|
|
1
|
-
module Axlsx
|
2
|
-
|
3
|
-
# The Axes class creates and manages axis information and
|
4
|
-
# serialization for charts.
|
5
|
-
class Axes
|
6
|
-
|
7
|
-
# @param [Hash] options options used to generate axis each key
|
8
|
-
# should be an axis name like :val_axis and its value should be the
|
9
|
-
# class of the axis type to construct. The :cat_axis, if there is one,
|
10
|
-
# must come first (we assume a Ruby 1.9+ Hash or an OrderedHash).
|
11
|
-
def initialize(options={})
|
12
|
-
raise(ArgumentError, "CatAxis must come first") if options.keys.include?(:cat_axis) && options.keys.first != :cat_axis
|
13
|
-
options.each do |name, axis_class|
|
14
|
-
add_axis(name, axis_class)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# [] provides assiciative access to a specic axis store in an axes
|
19
|
-
# instance.
|
20
|
-
# @return [Axis]
|
21
|
-
def [](name)
|
22
|
-
axes.assoc(name)[1]
|
23
|
-
end
|
24
|
-
|
25
|
-
# Serializes the object
|
26
|
-
# @param [String] str
|
27
|
-
# @param [Hash] options
|
28
|
-
# @option options ids
|
29
|
-
# If the ids option is specified only the axis identifier is
|
30
|
-
# serialized. Otherwise, each axis is serialized in full.
|
31
|
-
def to_xml_string(str = '', options = {})
|
32
|
-
if options[:ids]
|
33
|
-
# CatAxis must come first in the XML (for Microsoft Excel at least)
|
34
|
-
sorted = axes.sort_by { |name, axis| axis.kind_of?(CatAxis) ? 0 : 1 }
|
35
|
-
sorted.each { |axis| str << ('<c:axId val="' << axis[1].id.to_s << '"/>') }
|
36
|
-
else
|
37
|
-
axes.each { |axis| axis[1].to_xml_string(str) }
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
# Adds an axis to the collection
|
42
|
-
# @param [Symbol] name The name of the axis
|
43
|
-
# @param [Axis] axis_class The axis class to generate
|
44
|
-
def add_axis(name, axis_class)
|
45
|
-
axis = axis_class.new
|
46
|
-
set_cross_axis(axis)
|
47
|
-
axes << [name, axis]
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def axes
|
53
|
-
@axes ||= []
|
54
|
-
end
|
55
|
-
|
56
|
-
def set_cross_axis(axis)
|
57
|
-
axes.first[1].cross_axis = axis if axes.size == 1
|
58
|
-
axis.cross_axis = axes.first[1] unless axes.empty?
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# The Axes class creates and manages axis information and
|
4
|
+
# serialization for charts.
|
5
|
+
class Axes
|
6
|
+
|
7
|
+
# @param [Hash] options options used to generate axis each key
|
8
|
+
# should be an axis name like :val_axis and its value should be the
|
9
|
+
# class of the axis type to construct. The :cat_axis, if there is one,
|
10
|
+
# must come first (we assume a Ruby 1.9+ Hash or an OrderedHash).
|
11
|
+
def initialize(options={})
|
12
|
+
raise(ArgumentError, "CatAxis must come first") if options.keys.include?(:cat_axis) && options.keys.first != :cat_axis
|
13
|
+
options.each do |name, axis_class|
|
14
|
+
add_axis(name, axis_class)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# [] provides assiciative access to a specic axis store in an axes
|
19
|
+
# instance.
|
20
|
+
# @return [Axis]
|
21
|
+
def [](name)
|
22
|
+
axes.assoc(name)[1]
|
23
|
+
end
|
24
|
+
|
25
|
+
# Serializes the object
|
26
|
+
# @param [String] str
|
27
|
+
# @param [Hash] options
|
28
|
+
# @option options ids
|
29
|
+
# If the ids option is specified only the axis identifier is
|
30
|
+
# serialized. Otherwise, each axis is serialized in full.
|
31
|
+
def to_xml_string(str = '', options = {})
|
32
|
+
if options[:ids]
|
33
|
+
# CatAxis must come first in the XML (for Microsoft Excel at least)
|
34
|
+
sorted = axes.sort_by { |name, axis| axis.kind_of?(CatAxis) ? 0 : 1 }
|
35
|
+
sorted.each { |axis| str << ('<c:axId val="' << axis[1].id.to_s << '"/>') }
|
36
|
+
else
|
37
|
+
axes.each { |axis| axis[1].to_xml_string(str) }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Adds an axis to the collection
|
42
|
+
# @param [Symbol] name The name of the axis
|
43
|
+
# @param [Axis] axis_class The axis class to generate
|
44
|
+
def add_axis(name, axis_class)
|
45
|
+
axis = axis_class.new
|
46
|
+
set_cross_axis(axis)
|
47
|
+
axes << [name, axis]
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def axes
|
53
|
+
@axes ||= []
|
54
|
+
end
|
55
|
+
|
56
|
+
def set_cross_axis(axis)
|
57
|
+
axes.first[1].cross_axis = axis if axes.size == 1
|
58
|
+
axis.cross_axis = axes.first[1] unless axes.empty?
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|