axlsx 1.0.18 → 1.1.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.
- data/CHANGELOG.md +11 -3
- data/README.md +93 -18
- data/examples/example.csv +1000 -0
- data/examples/example.rb +97 -5
- data/examples/example.xlsx +0 -0
- data/examples/example_streamed.xlsx +0 -0
- data/examples/no-use_autowidth.xlsx +0 -0
- data/examples/shared_strings_example.xlsx +0 -0
- data/lib/axlsx.rb +30 -9
- data/lib/axlsx/content_type/content_type.rb +9 -9
- data/lib/axlsx/content_type/default.rb +9 -6
- data/lib/axlsx/content_type/override.rb +12 -8
- data/lib/axlsx/doc_props/app.rb +37 -40
- data/lib/axlsx/doc_props/core.rb +12 -17
- data/lib/axlsx/drawing/axis.rb +38 -19
- data/lib/axlsx/drawing/bar_3D_chart.rb +33 -32
- data/lib/axlsx/drawing/bar_series.rb +13 -14
- data/lib/axlsx/drawing/cat_axis.rb +15 -14
- data/lib/axlsx/drawing/cat_axis_data.rb +16 -18
- data/lib/axlsx/drawing/chart.rb +37 -38
- data/lib/axlsx/drawing/drawing.rb +15 -12
- data/lib/axlsx/drawing/graphic_frame.rb +21 -21
- data/lib/axlsx/drawing/hyperlink.rb +12 -11
- data/lib/axlsx/drawing/line_3D_chart.rb +30 -28
- data/lib/axlsx/drawing/line_series.rb +11 -11
- data/lib/axlsx/drawing/marker.rb +10 -8
- data/lib/axlsx/drawing/named_axis_data.rb +36 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +17 -16
- data/lib/axlsx/drawing/pic.rb +24 -37
- data/lib/axlsx/drawing/picture_locking.rb +21 -18
- data/lib/axlsx/drawing/pie_3D_chart.rb +10 -8
- data/lib/axlsx/drawing/pie_series.rb +15 -12
- data/lib/axlsx/drawing/scaling.rb +10 -10
- data/lib/axlsx/drawing/scatter_chart.rb +69 -0
- data/lib/axlsx/drawing/scatter_series.rb +39 -0
- data/lib/axlsx/drawing/ser_axis.rb +10 -10
- data/lib/axlsx/drawing/series.rb +15 -15
- data/lib/axlsx/drawing/series_title.rb +14 -14
- data/lib/axlsx/drawing/title.rb +26 -26
- data/lib/axlsx/drawing/two_cell_anchor.rb +18 -20
- data/lib/axlsx/drawing/val_axis.rb +8 -7
- data/lib/axlsx/drawing/val_axis_data.rb +17 -17
- data/lib/axlsx/drawing/view_3D.rb +22 -20
- data/lib/axlsx/package.rb +32 -15
- data/lib/axlsx/rels/relationship.rb +9 -6
- data/lib/axlsx/rels/relationships.rb +7 -1
- data/lib/axlsx/stylesheet/#num_fmt.rb# +69 -0
- data/lib/axlsx/stylesheet/border.rb +27 -23
- data/lib/axlsx/stylesheet/border_pr.rb +16 -15
- data/lib/axlsx/stylesheet/cell_alignment.rb +23 -21
- data/lib/axlsx/stylesheet/cell_protection.rb +10 -7
- data/lib/axlsx/stylesheet/cell_style.rb +8 -5
- data/lib/axlsx/stylesheet/color.rb +20 -14
- data/lib/axlsx/stylesheet/fill.rb +7 -5
- data/lib/axlsx/stylesheet/font.rb +14 -14
- data/lib/axlsx/stylesheet/gradient_fill.rb +19 -16
- data/lib/axlsx/stylesheet/gradient_stop.rb +9 -5
- data/lib/axlsx/stylesheet/num_fmt.rb +12 -6
- data/lib/axlsx/stylesheet/pattern_fill.rb +25 -10
- data/lib/axlsx/stylesheet/styles.rb +41 -32
- data/lib/axlsx/stylesheet/table_style.rb +9 -4
- data/lib/axlsx/stylesheet/table_style_element.rb +10 -7
- data/lib/axlsx/stylesheet/table_styles.rb +11 -8
- data/lib/axlsx/stylesheet/xf.rb +29 -25
- data/lib/axlsx/util/constants.rb +4 -0
- data/lib/axlsx/util/simple_typed_list.rb +18 -9
- data/lib/axlsx/util/validators.rb +13 -6
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/shared_strings_table.rb +19 -21
- data/lib/axlsx/workbook/workbook.rb +43 -19
- data/lib/axlsx/workbook/worksheet/cell.rb +93 -91
- data/lib/axlsx/workbook/worksheet/col.rb +114 -0
- data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +16 -13
- data/lib/axlsx/workbook/worksheet/row.rb +13 -13
- data/lib/axlsx/workbook/worksheet/table.rb +96 -0
- data/lib/axlsx/workbook/worksheet/table.rb~ +97 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +152 -118
- data/lib/schema/dc.xsd +5 -5
- data/lib/schema/dcmitype.xsd +5 -3
- data/lib/schema/dcterms.xsd +15 -15
- data/lib/schema/opc-coreProperties.xsd +6 -2
- data/lib/schema/xml.xsd +7 -8
- data/test/#benchmark.txt# +7 -0
- data/test/#tc_helper.rb# +3 -0
- data/test/benchmark.rb +81 -0
- data/test/benchmark.rb~ +0 -0
- data/test/benchmark.txt +6 -0
- data/test/benchmark.txt~ +6 -0
- data/test/content_type/tc_content_type.rb +30 -32
- data/test/content_type/tc_default.rb +8 -23
- data/test/content_type/tc_override.rb +7 -21
- data/test/doc_props/tc_app.rb +2 -8
- data/test/doc_props/tc_core.rb +6 -7
- data/test/drawing/tc_axis.rb +7 -3
- data/test/drawing/tc_bar_3D_chart.rb +6 -7
- data/test/drawing/tc_bar_series.rb +4 -5
- data/test/drawing/tc_cat_axis.rb +2 -3
- data/test/drawing/tc_cat_axis_data.rb +2 -3
- data/test/drawing/tc_chart.rb +11 -12
- data/test/drawing/tc_drawing.rb +7 -8
- data/test/drawing/tc_graphic_frame.rb +3 -4
- data/test/drawing/tc_hyperlink.rb +2 -3
- data/test/drawing/tc_line_3d_chart.rb +5 -6
- data/test/drawing/tc_line_series.rb +3 -4
- data/test/drawing/tc_marker.rb +3 -4
- data/test/drawing/tc_one_cell_anchor.rb +6 -7
- data/test/drawing/tc_pic.rb +8 -9
- data/test/drawing/tc_picture_locking.rb +2 -3
- data/test/drawing/tc_pie_3D_chart.rb +5 -6
- data/test/drawing/tc_pie_series.rb +4 -5
- data/test/drawing/tc_scaling.rb +3 -4
- data/test/drawing/tc_scatter_chart.rb +43 -0
- data/test/drawing/tc_scatter_series.rb +20 -0
- data/test/drawing/tc_ser_axis.rb +2 -3
- data/test/drawing/tc_series.rb +4 -5
- data/test/drawing/tc_series_title.rb +4 -5
- data/test/drawing/tc_title.rb +4 -5
- data/test/drawing/tc_two_cell_anchor.rb +4 -5
- data/test/drawing/tc_val_axis.rb +2 -3
- data/test/drawing/tc_val_axis_data.rb +2 -3
- data/test/drawing/tc_view_3D.rb +6 -7
- data/test/example.csv +1000 -0
- data/test/example.xlsx +0 -0
- data/test/example_streamed.xlsx +0 -0
- data/test/profile.rb +33 -0
- data/test/rels/tc_relationship.rb +5 -6
- data/test/rels/tc_relationships.rb +4 -5
- data/test/stylesheet/tc_border.rb +3 -4
- data/test/stylesheet/tc_border_pr.rb +3 -4
- data/test/stylesheet/tc_cell_alignment.rb +4 -5
- data/test/stylesheet/tc_cell_protection.rb +2 -3
- data/test/stylesheet/tc_cell_style.rb +2 -3
- data/test/stylesheet/tc_color.rb +2 -3
- data/test/stylesheet/tc_fill.rb +1 -2
- data/test/stylesheet/tc_font.rb +5 -6
- data/test/stylesheet/tc_gradient_fill.rb +1 -2
- data/test/stylesheet/tc_gradient_stop.rb +1 -2
- data/test/stylesheet/tc_num_fmt.rb +1 -2
- data/test/stylesheet/tc_pattern_fill.rb +3 -4
- data/test/stylesheet/tc_styles.rb +15 -9
- data/test/stylesheet/tc_table_style.rb +2 -3
- data/test/stylesheet/tc_table_style_element.rb +2 -3
- data/test/stylesheet/tc_table_styles.rb +3 -4
- data/test/stylesheet/tc_xf.rb +16 -17
- data/test/tc_axlsx.rb +39 -0
- data/test/tc_axlsx.rb~ +0 -0
- data/test/tc_helper.rb +3 -0
- data/test/tc_helper.rb~ +3 -0
- data/test/tc_package.rb +13 -10
- data/test/util/tc_simple_typed_list.rb +8 -9
- data/test/util/tc_validators.rb +7 -8
- data/test/workbook/tc_shared_strings_table.rb +5 -6
- data/test/workbook/tc_workbook.rb +24 -6
- data/test/workbook/worksheet/table/tc_table.rb +71 -0
- data/test/workbook/worksheet/table/tc_table.rb~ +72 -0
- data/test/workbook/worksheet/tc_cell.rb +24 -10
- data/test/workbook/worksheet/tc_col.rb +59 -0
- data/test/workbook/worksheet/tc_col.rb~ +10 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +1 -2
- data/test/workbook/worksheet/tc_page_margins.rb +6 -9
- data/test/workbook/worksheet/tc_row.rb +26 -12
- data/test/workbook/worksheet/tc_worksheet.rb +134 -68
- metadata +150 -90
- data/test/drawing/tc_hyperlink.rb~ +0 -71
- data/test/workbook/tc_shared_strings_table.rb~ +0 -8
- data/test/workbook/worksheet/tc_date_time_converter.rb~ +0 -69
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
module Axlsx
|
|
3
|
-
# The picture locking class defines the locking properties for pictures in your workbook.
|
|
3
|
+
# The picture locking class defines the locking properties for pictures in your workbook.
|
|
4
4
|
class PictureLocking
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
|
|
6
|
+
|
|
7
7
|
attr_reader :noGrp
|
|
8
8
|
attr_reader :noSelect
|
|
9
9
|
attr_reader :noRot
|
|
@@ -31,43 +31,46 @@ module Axlsx
|
|
|
31
31
|
options.each do |o|
|
|
32
32
|
self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
33
33
|
end
|
|
34
|
-
end
|
|
34
|
+
end
|
|
35
35
|
|
|
36
36
|
# @see noGrp
|
|
37
|
-
def noGrp=(v) Axlsx::validate_boolean v; @noGrp = v end
|
|
37
|
+
def noGrp=(v) Axlsx::validate_boolean v; @noGrp = v end
|
|
38
38
|
|
|
39
39
|
# @see noSelect
|
|
40
|
-
def noSelect=(v) Axlsx::validate_boolean v; @noSelect = v end
|
|
40
|
+
def noSelect=(v) Axlsx::validate_boolean v; @noSelect = v end
|
|
41
41
|
|
|
42
42
|
# @see noRot
|
|
43
|
-
def noRot=(v) Axlsx::validate_boolean v; @noRot = v end
|
|
43
|
+
def noRot=(v) Axlsx::validate_boolean v; @noRot = v end
|
|
44
44
|
|
|
45
45
|
# @see noChangeAspect
|
|
46
|
-
def noChangeAspect=(v) Axlsx::validate_boolean v; @noChangeAspect = v end
|
|
46
|
+
def noChangeAspect=(v) Axlsx::validate_boolean v; @noChangeAspect = v end
|
|
47
47
|
|
|
48
48
|
# @see noMove
|
|
49
|
-
def noMove=(v) Axlsx::validate_boolean v; @noMove = v end
|
|
49
|
+
def noMove=(v) Axlsx::validate_boolean v; @noMove = v end
|
|
50
50
|
|
|
51
51
|
# @see noResize
|
|
52
|
-
def noResize=(v) Axlsx::validate_boolean v; @noResize = v end
|
|
52
|
+
def noResize=(v) Axlsx::validate_boolean v; @noResize = v end
|
|
53
53
|
|
|
54
54
|
# @see noEditPoints
|
|
55
|
-
def noEditPoints=(v) Axlsx::validate_boolean v; @noEditPoints = v end
|
|
55
|
+
def noEditPoints=(v) Axlsx::validate_boolean v; @noEditPoints = v end
|
|
56
56
|
|
|
57
57
|
# @see noAdjustHandles
|
|
58
|
-
def noAdjustHandles=(v) Axlsx::validate_boolean v; @noAdjustHandles = v end
|
|
58
|
+
def noAdjustHandles=(v) Axlsx::validate_boolean v; @noAdjustHandles = v end
|
|
59
59
|
|
|
60
60
|
# @see noChangeArrowheads
|
|
61
|
-
def noChangeArrowheads=(v) Axlsx::validate_boolean v; @noChangeArrowheads = v end
|
|
61
|
+
def noChangeArrowheads=(v) Axlsx::validate_boolean v; @noChangeArrowheads = v end
|
|
62
62
|
|
|
63
63
|
# @see noChangeShapeType
|
|
64
|
-
def noChangeShapeType=(v) Axlsx::validate_boolean v; @noChangeShapeType = v end
|
|
64
|
+
def noChangeShapeType=(v) Axlsx::validate_boolean v; @noChangeShapeType = v end
|
|
65
65
|
|
|
66
|
-
# Serializes the
|
|
67
|
-
# @param [
|
|
66
|
+
# Serializes the object
|
|
67
|
+
# @param [String] str
|
|
68
68
|
# @return [String]
|
|
69
|
-
def
|
|
70
|
-
|
|
69
|
+
def to_xml_string(str = '')
|
|
70
|
+
str << '<a:picLocks '
|
|
71
|
+
str << instance_values.map { |key, value| '' << key.to_s << '="' << value.to_s << '"' }.join(' ')
|
|
72
|
+
str << '/>'
|
|
71
73
|
end
|
|
74
|
+
|
|
72
75
|
end
|
|
73
76
|
end
|
|
@@ -11,7 +11,7 @@ module Axlsx
|
|
|
11
11
|
# Creates a new pie chart object
|
|
12
12
|
# @param [GraphicFrame] frame The workbook that owns this chart.
|
|
13
13
|
# @option options [Cell, String] title
|
|
14
|
-
# @option options [Boolean] show_legend
|
|
14
|
+
# @option options [Boolean] show_legend
|
|
15
15
|
# @option options [Symbol] grouping
|
|
16
16
|
# @option options [String] gapDepth
|
|
17
17
|
# @option options [Integer] rotX
|
|
@@ -28,15 +28,17 @@ module Axlsx
|
|
|
28
28
|
@view3D = View3D.new({:rotX=>30, :perspective=>30}.merge(options))
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
# Serializes the
|
|
31
|
+
# Serializes the object
|
|
32
|
+
# @param [String] str
|
|
32
33
|
# @return [String]
|
|
33
|
-
def
|
|
34
|
-
super() do |
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
def to_xml_string(str = '')
|
|
35
|
+
super(str) do |str_inner|
|
|
36
|
+
str_inner << '<c:pie3DChart>'
|
|
37
|
+
str_inner << '<c:varyColors val="1"/>'
|
|
38
|
+
@series.each { |ser| ser.to_xml_string(str_inner) }
|
|
39
|
+
str_inner << '</c:pie3DChart>'
|
|
39
40
|
end
|
|
40
41
|
end
|
|
42
|
+
|
|
41
43
|
end
|
|
42
44
|
end
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
module Axlsx
|
|
3
|
+
|
|
3
4
|
# A PieSeries defines the data and labels and explosion for pie charts series.
|
|
4
5
|
# @note The recommended way to manage series is to use Chart#add_series
|
|
5
6
|
# @see Worksheet#add_chart
|
|
6
7
|
# @see Chart#add_series
|
|
7
8
|
class PieSeries < Series
|
|
8
9
|
|
|
9
|
-
# The data for this series.
|
|
10
|
+
# The data for this series.
|
|
10
11
|
# @return [SimpleTypedList]
|
|
11
12
|
attr_reader :data
|
|
12
13
|
|
|
@@ -29,22 +30,24 @@ module Axlsx
|
|
|
29
30
|
super(chart, options)
|
|
30
31
|
self.labels = CatAxisData.new(options[:labels]) unless options[:labels].nil?
|
|
31
32
|
self.data = ValAxisData.new(options[:data]) unless options[:data].nil?
|
|
32
|
-
end
|
|
33
|
-
|
|
33
|
+
end
|
|
34
|
+
|
|
34
35
|
# @see explosion
|
|
35
36
|
def explosion=(v) Axlsx::validate_unsigned_int(v); @explosion = v; end
|
|
36
37
|
|
|
37
|
-
# Serializes the
|
|
38
|
-
# @param [
|
|
38
|
+
# Serializes the object
|
|
39
|
+
# @param [String] str
|
|
39
40
|
# @return [String]
|
|
40
|
-
def
|
|
41
|
-
super(
|
|
42
|
-
|
|
43
|
-
@labels.
|
|
44
|
-
@data.
|
|
45
|
-
end
|
|
41
|
+
def to_xml_string(str = '')
|
|
42
|
+
super(str) do |str_inner|
|
|
43
|
+
str_inner << '<c:explosion val="' << @explosion << '"/>' unless @explosion.nil?
|
|
44
|
+
@labels.to_xml_string str_inner unless @labels.nil?
|
|
45
|
+
@data.to_xml_string str_inner unless @data.nil?
|
|
46
|
+
end
|
|
47
|
+
str
|
|
46
48
|
end
|
|
47
|
-
|
|
49
|
+
|
|
50
|
+
private
|
|
48
51
|
|
|
49
52
|
# assigns the data for this series
|
|
50
53
|
def data=(v) DataTypeValidator.validate "Series.data", [SimpleTypedList], v; @data = v; end
|
|
@@ -33,7 +33,7 @@ module Axlsx
|
|
|
33
33
|
self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
# @see logBase
|
|
38
38
|
def logBase=(v) DataTypeValidator.validate "Scaling.logBase", [Integer, Fixnum], v, lambda { |arg| arg >= 2 && arg <= 1000}; @logBase = v; end
|
|
39
39
|
# @see orientation
|
|
@@ -44,16 +44,16 @@ module Axlsx
|
|
|
44
44
|
# @see min
|
|
45
45
|
def min=(v) DataTypeValidator.validate "Scaling.min", Float, v; @min = v; end
|
|
46
46
|
|
|
47
|
-
# Serializes the
|
|
48
|
-
# @param [
|
|
47
|
+
# Serializes the object
|
|
48
|
+
# @param [String] str
|
|
49
49
|
# @return [String]
|
|
50
|
-
def
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
57
|
end
|
|
58
58
|
|
|
59
59
|
end
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
# The Style for the scatter chart
|
|
11
|
+
# must be one of :none | :line | :lineMarker | :marker | :smooth | :smoothMarker
|
|
12
|
+
# return [Symbol]
|
|
13
|
+
attr_reader :scatterStyle
|
|
14
|
+
|
|
15
|
+
# the x value axis
|
|
16
|
+
# @return [ValAxis]
|
|
17
|
+
attr_reader :xValAxis
|
|
18
|
+
|
|
19
|
+
# the y value axis
|
|
20
|
+
# @return [ValAxis]
|
|
21
|
+
attr_reader :yValAxis
|
|
22
|
+
|
|
23
|
+
# Creates a new scatter chart
|
|
24
|
+
def initialize(frame, options={})
|
|
25
|
+
@scatterStyle = :lineMarker
|
|
26
|
+
@xValAxId = rand(8 ** 8)
|
|
27
|
+
@yValAxId = rand(8 ** 8)
|
|
28
|
+
@xValAxis = ValAxis.new(@xValAxId, @yValAxId)
|
|
29
|
+
@yValAxis = ValAxis.new(@yValAxId, @xValAxId)
|
|
30
|
+
super(frame, options)
|
|
31
|
+
@series_type = ScatterSeries
|
|
32
|
+
options.each do |o|
|
|
33
|
+
self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# see #scatterStyle
|
|
38
|
+
def scatterStyle=(v)
|
|
39
|
+
Axlsx.validate_scatter_style(v)
|
|
40
|
+
@scatterStyle = v
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Serializes the object
|
|
44
|
+
# @param [String] str
|
|
45
|
+
# @return [String]
|
|
46
|
+
def to_xml_string(str = '')
|
|
47
|
+
super do |str|
|
|
48
|
+
str << '<c:scatterChart>'
|
|
49
|
+
str << '<c:scatterStyle val="' << scatterStyle.to_s << '"/>'
|
|
50
|
+
str << '<c:varyColors val="1"/>'
|
|
51
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
|
52
|
+
str << '<c:dLbls>'
|
|
53
|
+
str << '<c:showLegendKey val="0"/>'
|
|
54
|
+
str << '<c:showVal val="0"/>'
|
|
55
|
+
str << '<c:showCatName val="0"/>'
|
|
56
|
+
str << '<c:showSerName val="0"/>'
|
|
57
|
+
str << '<c:showPercent val="0"/>'
|
|
58
|
+
str << '<c:showBubbleSize val="0"/>'
|
|
59
|
+
str << '</c:dLbls>'
|
|
60
|
+
str << '<c:axId val="' << @xValAxId.to_s << '"/>'
|
|
61
|
+
str << '<c:axId val="' << @yValAxId.to_s << '"/>'
|
|
62
|
+
str << '</c:scatterChart>'
|
|
63
|
+
@xValAxis.to_xml_string str
|
|
64
|
+
@yValAxis.to_xml_string str
|
|
65
|
+
end
|
|
66
|
+
str
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# A ScatterSeries defines the x and y position of data in the chart
|
|
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
|
+
# @see examples/example.rb
|
|
9
|
+
class ScatterSeries < Series
|
|
10
|
+
|
|
11
|
+
# The x data for this series.
|
|
12
|
+
# @return [NamedAxisData]
|
|
13
|
+
attr_reader :xData
|
|
14
|
+
|
|
15
|
+
# The y data for this series.
|
|
16
|
+
# @return [NamedAxisData]
|
|
17
|
+
attr_reader :yData
|
|
18
|
+
|
|
19
|
+
# Creates a new ScatterSeries
|
|
20
|
+
def initialize(chart, options={})
|
|
21
|
+
@xData, @yData = nil
|
|
22
|
+
super(chart, options)
|
|
23
|
+
|
|
24
|
+
@xData = NamedAxisData.new("xVal", options[:xData]) unless options[:xData].nil?
|
|
25
|
+
@yData = NamedAxisData.new("yVal", options[:yData]) unless options[:yData].nil?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Serializes the object
|
|
29
|
+
# @param [String] str
|
|
30
|
+
# @return [String]
|
|
31
|
+
def to_xml_string(str = '')
|
|
32
|
+
super(str) do |inner_str|
|
|
33
|
+
@xData.to_xml_string(inner_str) unless @xData.nil?
|
|
34
|
+
@yData.to_xml_string(inner_str) unless @yData.nil?
|
|
35
|
+
end
|
|
36
|
+
str
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -22,7 +22,7 @@ module Axlsx
|
|
|
22
22
|
def initialize(axId, crossAx, options={})
|
|
23
23
|
@tickLblSkip, @tickMarkSkip = nil, nil
|
|
24
24
|
super(axId, crossAx, options)
|
|
25
|
-
end
|
|
25
|
+
end
|
|
26
26
|
|
|
27
27
|
# @see tickLblSkip
|
|
28
28
|
def tickLblSkip=(v) Axlsx::validate_unsigned_int(v); @tickLblSkip = v; end
|
|
@@ -30,17 +30,17 @@ module Axlsx
|
|
|
30
30
|
# @see tickMarkSkip
|
|
31
31
|
def tickMarkSkip=(v) Axlsx::validate_unsigned_int(v); @tickMarkSkip = v; end
|
|
32
32
|
|
|
33
|
-
# Serializes the
|
|
34
|
-
# @param [
|
|
33
|
+
# Serializes the object
|
|
34
|
+
# @param [String] str
|
|
35
35
|
# @return [String]
|
|
36
|
-
def
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
def to_xml_string(str = '')
|
|
37
|
+
str << '<c:serAx>'
|
|
38
|
+
super(str)
|
|
39
|
+
str << '<c:tickLblSkip val="' << @tickLblSkip.to_s << '"/>' unless @tickLblSkip.nil?
|
|
40
|
+
str << '<c:tickMarkSkip val="' << @tickMarkSkip.to_s << '"/>' unless @tickMarkSkip.nil?
|
|
41
|
+
str << '</c:serAx>'
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
|
|
46
46
|
end
|
data/lib/axlsx/drawing/series.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Axlsx
|
|
|
25
25
|
options.each do |o|
|
|
26
26
|
self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
27
27
|
end
|
|
28
|
-
end
|
|
28
|
+
end
|
|
29
29
|
|
|
30
30
|
# The index of this series in the chart's series.
|
|
31
31
|
# @return [Integer]
|
|
@@ -44,27 +44,27 @@ module Axlsx
|
|
|
44
44
|
def order=(v) Axlsx::validate_unsigned_int(v); @order = v; end
|
|
45
45
|
|
|
46
46
|
# @see title
|
|
47
|
-
def title=(v)
|
|
47
|
+
def title=(v)
|
|
48
48
|
v = SeriesTitle.new(v) if v.is_a?(String) || v.is_a?(Cell)
|
|
49
49
|
DataTypeValidator.validate "#{self.class}.title", SeriesTitle, v
|
|
50
50
|
@title = v
|
|
51
51
|
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
55
|
# assigns the chart for this series
|
|
56
|
-
def chart=(v) DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end
|
|
56
|
+
def chart=(v) DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end
|
|
57
57
|
|
|
58
|
-
# Serializes the
|
|
59
|
-
# @param [
|
|
58
|
+
# Serializes the object
|
|
59
|
+
# @param [String] str
|
|
60
60
|
# @return [String]
|
|
61
|
-
def
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
def to_xml_string(str = '')
|
|
62
|
+
str << '<c:ser>'
|
|
63
|
+
str << '<c:idx val="' << index.to_s << '"/>'
|
|
64
|
+
str << '<c:order val="' << (order || index).to_s << '"/>'
|
|
65
|
+
title.to_xml_string(str) unless title.nil?
|
|
66
|
+
yield str if block_given?
|
|
67
|
+
str << '</c:ser>'
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
end
|
|
@@ -3,21 +3,21 @@ module Axlsx
|
|
|
3
3
|
# A series title is a Title with a slightly different serialization than chart titles.
|
|
4
4
|
class SeriesTitle < Title
|
|
5
5
|
|
|
6
|
-
# Serializes the
|
|
7
|
-
# @param [
|
|
6
|
+
# Serializes the object
|
|
7
|
+
# @param [String] str
|
|
8
8
|
# @return [String]
|
|
9
|
-
def
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
def to_xml_string(str = '')
|
|
10
|
+
str << '<c:tx>'
|
|
11
|
+
str << '<c:strRef>'
|
|
12
|
+
str << '<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>'
|
|
13
|
+
str << '<c:strCache>'
|
|
14
|
+
str << '<c:ptCount val="1"/>'
|
|
15
|
+
str << '<c:pt idx="0">'
|
|
16
|
+
str << '<c:v>' << @text << '</c:v>'
|
|
17
|
+
str << '</c:pt>'
|
|
18
|
+
str << '</c:strCache>'
|
|
19
|
+
str << '</c:strRef>'
|
|
20
|
+
str << '</c:tx>'
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
end
|
data/lib/axlsx/drawing/title.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
module Axlsx
|
|
3
3
|
# A Title stores information about the title of a chart
|
|
4
4
|
class Title
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
# The text to be shown. Setting this property directly with a string will remove the cell reference.
|
|
7
7
|
# @return [String]
|
|
8
8
|
attr_reader :text
|
|
@@ -17,9 +17,9 @@ module Axlsx
|
|
|
17
17
|
self.cell = title if title.is_a?(Cell)
|
|
18
18
|
self.text = title.to_s unless title.is_a?(Cell)
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
# @see text
|
|
22
|
-
def text=(v)
|
|
22
|
+
def text=(v)
|
|
23
23
|
DataTypeValidator.validate 'Title.text', String, v
|
|
24
24
|
@text = v
|
|
25
25
|
@cell = nil
|
|
@@ -30,7 +30,7 @@ module Axlsx
|
|
|
30
30
|
def cell=(v)
|
|
31
31
|
DataTypeValidator.validate 'Title.text', Cell, v
|
|
32
32
|
@cell = v
|
|
33
|
-
@text = v.value.to_s
|
|
33
|
+
@text = v.value.to_s
|
|
34
34
|
v
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -38,29 +38,29 @@ module Axlsx
|
|
|
38
38
|
#def layout=(v) DataTypeValidator.validate 'Title.layout', Layout, v; @layout = v; end
|
|
39
39
|
#def overlay=(v) Axlsx::validate_boolean v; @overlay=v; end
|
|
40
40
|
#def spPr=(v) DataTypeValidator.validate 'Title.spPr', SpPr, v; @spPr = v; end
|
|
41
|
-
|
|
42
|
-
# Serializes the
|
|
43
|
-
# @param [
|
|
41
|
+
|
|
42
|
+
# Serializes the object
|
|
43
|
+
# @param [String] str
|
|
44
44
|
# @return [String]
|
|
45
|
-
def
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
45
|
+
def to_xml_string(str = '')
|
|
46
|
+
str << '<c:title>'
|
|
47
|
+
unless @text.empty?
|
|
48
|
+
str << '<c:tx>'
|
|
49
|
+
str << '<c:strRef>'
|
|
50
|
+
str << '<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>'
|
|
51
|
+
str << '<c:strCache>'
|
|
52
|
+
str << '<c:ptCount val="1"/>'
|
|
53
|
+
str << '<c:pt idx="0">'
|
|
54
|
+
str << '<c:v>' << @text << '</c:v>'
|
|
55
|
+
str << '</c:pt>'
|
|
56
|
+
str << '</c:strCache>'
|
|
57
|
+
str << '</c:strRef>'
|
|
58
|
+
str << '</c:tx>'
|
|
59
|
+
end
|
|
60
|
+
str << '<c:layout/>'
|
|
61
|
+
str << '<c:overlay val="0"/>'
|
|
62
|
+
str << '</c:title>'
|
|
63
63
|
end
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
end
|
|
66
66
|
end
|