axlsx 1.0.7 → 1.0.8
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/README.md +21 -3
- data/doc/Axlsx.html +150 -6
- data/doc/Axlsx/App.html +1 -1
- data/doc/Axlsx/Axis.html +1 -1
- data/doc/Axlsx/Bar3DChart.html +1 -1
- data/doc/Axlsx/BarSeries.html +1 -1
- data/doc/Axlsx/Border.html +1 -1
- data/doc/Axlsx/BorderPr.html +1 -1
- data/doc/Axlsx/CatAxis.html +1 -1
- data/doc/Axlsx/CatAxisData.html +7 -5
- data/doc/Axlsx/Cell.html +1 -1
- data/doc/Axlsx/CellAlignment.html +1 -1
- data/doc/Axlsx/CellProtection.html +1 -1
- data/doc/Axlsx/CellStyle.html +1 -1
- data/doc/Axlsx/Chart.html +16 -16
- data/doc/Axlsx/Color.html +1 -1
- data/doc/Axlsx/ContentType.html +1 -1
- data/doc/Axlsx/Core.html +1 -1
- data/doc/Axlsx/DataTypeValidator.html +1 -1
- data/doc/Axlsx/Default.html +1 -1
- data/doc/Axlsx/Drawing.html +243 -65
- data/doc/Axlsx/Fill.html +1 -1
- data/doc/Axlsx/Font.html +1 -1
- data/doc/Axlsx/GradientFill.html +1 -1
- data/doc/Axlsx/GradientStop.html +1 -1
- data/doc/Axlsx/GraphicFrame.html +21 -21
- data/doc/Axlsx/Line3DChart.html +1 -1
- data/doc/Axlsx/LineSeries.html +6 -8
- data/doc/Axlsx/Marker.html +1 -1
- data/doc/Axlsx/NumFmt.html +1 -1
- data/doc/Axlsx/OneCellAnchor.html +988 -0
- data/doc/Axlsx/Override.html +1 -1
- data/doc/Axlsx/Package.html +127 -75
- data/doc/Axlsx/PatternFill.html +1 -1
- data/doc/Axlsx/Pic.html +1532 -0
- data/doc/Axlsx/Pie3DChart.html +5 -7
- data/doc/Axlsx/PieSeries.html +1 -1
- data/doc/Axlsx/RegexValidator.html +1 -1
- data/doc/Axlsx/Relationship.html +6 -6
- data/doc/Axlsx/Relationships.html +1 -1
- data/doc/Axlsx/RestrictionValidator.html +1 -1
- data/doc/Axlsx/Row.html +1 -1
- data/doc/Axlsx/Scaling.html +1 -1
- data/doc/Axlsx/SerAxis.html +1 -1
- data/doc/Axlsx/Series.html +1 -1
- data/doc/Axlsx/SeriesTitle.html +1 -1
- data/doc/Axlsx/SimpleTypedList.html +1 -1
- data/doc/Axlsx/Styles.html +1 -1
- data/doc/Axlsx/TableStyle.html +1 -1
- data/doc/Axlsx/TableStyleElement.html +1 -1
- data/doc/Axlsx/TableStyles.html +1 -1
- data/doc/Axlsx/Title.html +1 -1
- data/doc/Axlsx/TwoCellAnchor.html +165 -61
- data/doc/Axlsx/ValAxis.html +1 -1
- data/doc/Axlsx/ValAxisData.html +1 -1
- data/doc/Axlsx/View3D.html +1 -1
- data/doc/Axlsx/Workbook.html +151 -47
- data/doc/Axlsx/Worksheet.html +172 -35
- data/doc/Axlsx/Xf.html +1 -1
- data/doc/_index.html +15 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +29 -4
- data/doc/index.html +29 -4
- data/doc/method_list.html +571 -363
- data/doc/top-level-namespace.html +1 -1
- data/examples/example.rb +13 -0
- data/examples/image1.gif +0 -0
- data/examples/image1.jpeg +0 -0
- data/examples/image1.jpg +0 -0
- data/examples/image1.png +0 -0
- data/lib/axlsx/drawing/bar_series.rb +0 -1
- data/lib/axlsx/drawing/cat_axis_data.rb +1 -0
- data/lib/axlsx/drawing/chart.rb +0 -1
- data/lib/axlsx/drawing/drawing.rb +31 -7
- data/lib/axlsx/drawing/graphic_frame.rb +0 -2
- data/lib/axlsx/drawing/line_series.rb +0 -1
- data/lib/axlsx/drawing/one_cell_anchor.rb +89 -0
- data/lib/axlsx/drawing/pic.rb +158 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +0 -1
- data/lib/axlsx/drawing/two_cell_anchor.rb +17 -4
- data/lib/axlsx/package.rb +31 -5
- data/lib/axlsx/rels/relationship.rb +1 -2
- data/lib/axlsx/util/constants.rb +24 -0
- data/lib/axlsx/util/validators.rb +2 -2
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/workbook.rb +8 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +10 -1
- data/test/drawing/tc_drawing.rb +10 -1
- data/test/drawing/tc_one_cell_anchor.rb +67 -0
- data/test/drawing/tc_pic.rb +71 -0
- data/test/tc_package.rb +0 -2
- metadata +13 -118
- data/examples/#example.rb# +0 -87
- data/examples/example.rb~ +0 -79
- data/examples/multi_chart.xlsx +0 -0
- data/lib/axlsx.rb~ +0 -67
- data/lib/axlsx/content_type/content_type.rb~ +0 -20
- data/lib/axlsx/content_type/default.rb~ +0 -32
- data/lib/axlsx/content_type/override.rb~ +0 -30
- data/lib/axlsx/doc_props/app.rb~ +0 -127
- data/lib/axlsx/doc_props/core.rb~ +0 -25
- data/lib/axlsx/drawing/#bar_series.rb# +0 -62
- data/lib/axlsx/drawing/axis.rb~ +0 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb~ +0 -64
- data/lib/axlsx/drawing/bar_series.rb~ +0 -92
- data/lib/axlsx/drawing/cat_axis.rb~ +0 -32
- data/lib/axlsx/drawing/cat_axis_data.rb~ +0 -28
- data/lib/axlsx/drawing/chart.rb~ +0 -0
- data/lib/axlsx/drawing/drawing.rb~ +0 -102
- data/lib/axlsx/drawing/graphic_frame.rb~ +0 -40
- data/lib/axlsx/drawing/line_3D_chart.rb~ +0 -138
- data/lib/axlsx/drawing/line_series.rb~ +0 -91
- data/lib/axlsx/drawing/marker.rb~ +0 -50
- data/lib/axlsx/drawing/pie_3D_chart.rb~ +0 -132
- data/lib/axlsx/drawing/pie_series.rb~ +0 -0
- data/lib/axlsx/drawing/scaling.rb~ +0 -0
- data/lib/axlsx/drawing/ser_axis.rb~ +0 -48
- data/lib/axlsx/drawing/series.rb~ +0 -114
- data/lib/axlsx/drawing/series_title.rb~ +0 -18
- data/lib/axlsx/drawing/title.rb~ +0 -69
- data/lib/axlsx/drawing/two_cell_anchor.rb~ +0 -70
- data/lib/axlsx/drawing/val_axis.rb~ +0 -34
- data/lib/axlsx/drawing/val_axis_data.rb~ +0 -29
- data/lib/axlsx/drawing/view_3D.rb~ +0 -21
- data/lib/axlsx/package.rb~ +0 -181
- data/lib/axlsx/rels/relationship.rb~ +0 -18
- data/lib/axlsx/rels/relationships.rb~ +0 -23
- data/lib/axlsx/stylesheet/border.rb~ +0 -24
- data/lib/axlsx/stylesheet/border_pr.rb~ +0 -64
- data/lib/axlsx/stylesheet/cell_alignment.rb~ +0 -93
- data/lib/axlsx/stylesheet/cell_protection.rb~ +0 -16
- data/lib/axlsx/stylesheet/cell_style.rb~ +0 -61
- data/lib/axlsx/stylesheet/color.rb~ +0 -56
- data/lib/axlsx/stylesheet/fill.rb~ +0 -31
- data/lib/axlsx/stylesheet/font.rb~ +0 -33
- data/lib/axlsx/stylesheet/gradient_fill.rb~ +0 -70
- data/lib/axlsx/stylesheet/gradient_stop.rb~ +0 -15
- data/lib/axlsx/stylesheet/num_fmt.rb~ +0 -60
- data/lib/axlsx/stylesheet/pattern_fill.rb~ +0 -63
- data/lib/axlsx/stylesheet/styles.rb~ +0 -279
- data/lib/axlsx/stylesheet/table_style.rb~ +0 -43
- data/lib/axlsx/stylesheet/table_style_element.rb~ +0 -66
- data/lib/axlsx/stylesheet/table_styles.rb~ +0 -36
- data/lib/axlsx/stylesheet/xf.rb~ +0 -37
- data/lib/axlsx/util/constants.rb~ +0 -187
- data/lib/axlsx/util/monkey_patches_for_true_zip_stream.rb~ +0 -61
- data/lib/axlsx/util/simple_typed_list.rb~ +0 -79
- data/lib/axlsx/util/validators.rb~ +0 -132
- data/lib/axlsx/util/xml_escape.rb~ +0 -6
- data/lib/axlsx/workbook/workbook.rb~ +0 -130
- data/lib/axlsx/workbook/worksheet/cell.rb~ +0 -185
- data/lib/axlsx/workbook/worksheet/row.rb~ +0 -92
- data/lib/axlsx/workbook/worksheet/worksheet.rb~ +0 -194
- data/test/content_type/tc_content_type.rb~ +0 -81
- data/test/content_type/tc_default.rb~ +0 -40
- data/test/content_type/tc_override.rb~ +0 -40
- data/test/doc_props/tc_app.rb~ +0 -19
- data/test/drawing/tc_axis.rb~ +0 -0
- data/test/drawing/tc_bar_3D_chart.rb~ +0 -66
- data/test/drawing/tc_bar_series.rb~ +0 -31
- data/test/drawing/tc_cat_axis.rb~ +0 -39
- data/test/drawing/tc_cat_axis_data.rb~ +0 -32
- data/test/drawing/tc_chart.rb~ +0 -59
- data/test/drawing/tc_graphic_frame.rb~ +0 -21
- data/test/drawing/tc_line_3d_chart.rb~ +0 -48
- data/test/drawing/tc_line_series.rb~ +0 -34
- data/test/drawing/tc_marker.rb~ +0 -26
- data/test/drawing/tc_pie_3D_chart.rb~ +0 -33
- data/test/drawing/tc_pie_series.rb~ +0 -26
- data/test/drawing/tc_scaling.rb~ +0 -45
- data/test/drawing/tc_ser_axis.rb~ +0 -20
- data/test/drawing/tc_series.rb~ +0 -31
- data/test/drawing/tc_series_title.rb~ +0 -34
- data/test/drawing/tc_title.rb~ +0 -34
- data/test/drawing/tc_two_cell_anchor.rb~ +0 -37
- data/test/drawing/tc_val_axis.rb~ +0 -32
- data/test/drawing/tc_val_axis_data.rb~ +0 -18
- data/test/drawing/tc_view_3D.rb~ +0 -37
- data/test/rels/tc_relationship.rb~ +0 -39
- data/test/rels/tc_relationships.rb~ +0 -37
- data/test/stylesheet/tc_border.rb~ +0 -31
- data/test/stylesheet/tc_border_pr.rb~ +0 -31
- data/test/stylesheet/tc_cell_alignment.rb~ +0 -38
- data/test/stylesheet/tc_cell_protection.rb~ +0 -77
- data/test/stylesheet/tc_cell_style.rb~ +0 -30
- data/test/stylesheet/tc_color.rb~ +0 -38
- data/test/stylesheet/tc_fill.rb~ +0 -19
- data/test/stylesheet/tc_font.rb~ +0 -19
- data/test/stylesheet/tc_gradient_fill.rb~ +0 -114
- data/test/stylesheet/tc_gradient_stop.rb~ +0 -65
- data/test/stylesheet/tc_num_fmt.rb~ +0 -32
- data/test/stylesheet/tc_pattern_fill.rb~ +0 -31
- data/test/stylesheet/tc_table_style.rb~ +0 -38
- data/test/stylesheet/tc_table_style_element.rb~ +0 -37
- data/test/stylesheet/tc_table_styles.rb~ +0 -37
- data/test/stylesheet/tc_xf.rb~ +0 -30
- data/test/tc_app.rb~ +0 -19
- data/test/tc_border_pr.rb~ +0 -21
- data/test/tc_package.rb~ +0 -64
- data/test/tc_pie_3D_chart.rb~ +0 -66
- data/test/tc_relationships.rb~ +0 -37
- data/test/tc_series.rb~ +0 -31
- data/test/tc_styles.rb~ +0 -64
- data/test/tc_validators.rb~ +0 -77
- data/test/tc_worksheet.rb~ +0 -85
- data/test/workbook/worksheet/tc_row.rb~ +0 -30
- data/test/workbook/worksheet/tc_worksheet.rb~ +0 -85
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
class Core
|
|
4
|
-
attr_accessor :creator
|
|
5
|
-
def initialize(options={})
|
|
6
|
-
@creator = options[:creator] || 'axlsx'
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
def to_xml()
|
|
10
|
-
builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
|
|
11
|
-
xml.send('cp:coreProperties',
|
|
12
|
-
:"xmlns:cp" => CORE_NS,
|
|
13
|
-
:'xmlns:dc' => CORE_NS_DC,
|
|
14
|
-
:'xmlns:dcmitype'=>CORE_NS_DCMIT,
|
|
15
|
-
:'xmlns:dcterms'=>CORE_NS_DCT,
|
|
16
|
-
:'xmlns:xsi'=>CORE_NS_XSI) {
|
|
17
|
-
xml['dc'].creator self.creator
|
|
18
|
-
xml['dcterms'].created Time.now.strftime('%Y-%m-%dT%H:%M:%S'), :'xsi:type'=>"dcterms:W3CDTF"
|
|
19
|
-
xml['cp'].revision 0
|
|
20
|
-
}
|
|
21
|
-
end
|
|
22
|
-
builder.to_xml
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# A BarSeries defines the title, data and labels for bar charts
|
|
3
|
-
# @note The recommended way to manage series is to use Chart#add_series
|
|
4
|
-
# @see Worksheet#add_chart
|
|
5
|
-
# @see Chart#add_series
|
|
6
|
-
class BarSeries < Series
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# The data for this series.
|
|
10
|
-
# @return [Array, SimpleTypedList]
|
|
11
|
-
attr_reader :data
|
|
12
|
-
|
|
13
|
-
# The labels for this series.
|
|
14
|
-
# @return [Array, SimpleTypedList]
|
|
15
|
-
attr_reader :labels
|
|
16
|
-
|
|
17
|
-
# The shabe of the bars or columns
|
|
18
|
-
# must be one of [:percentStacked, :clustered, :standard, :stacked]
|
|
19
|
-
# @return [Symbol]
|
|
20
|
-
attr_accessor :shape
|
|
21
|
-
|
|
22
|
-
# Creates a new series
|
|
23
|
-
# @option options [Array, SimpleTypedList] data
|
|
24
|
-
# @option options [Array, SimpleTypedList] labels
|
|
25
|
-
# @option options [String] title
|
|
26
|
-
# @option options [String] shape
|
|
27
|
-
# @param [Chart] chart
|
|
28
|
-
def initialize(chart, options={})
|
|
29
|
-
@shape = :box
|
|
30
|
-
super(chart, options)
|
|
31
|
-
self.labels = CatAxisData.new(options[:labels]) unless options[:labels].nil?
|
|
32
|
-
self.data = ValAxisData.new(options[:data]) unless options[:data].nil?
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def shape=(v)
|
|
36
|
-
RestrictionValidator.validate "BarSeries.shape", [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax], v
|
|
37
|
-
@shape = v
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Serializes the series
|
|
41
|
-
# @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
|
|
42
|
-
# @return [String]
|
|
43
|
-
def to_xml(xml)
|
|
44
|
-
super(xml) do |xml|
|
|
45
|
-
@labels.to_xml(xml) unless @labels.nil?
|
|
46
|
-
@data.to_xml(xml) unless @data.nil?
|
|
47
|
-
xml.send('c:shape', :val=>@shape)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
private
|
|
53
|
-
|
|
54
|
-
# assigns the data for this series
|
|
55
|
-
def data=(v) DataTypeValidator.validate "Series.data", [SimpleTypedList], v; @data = v; end
|
|
56
|
-
|
|
57
|
-
# assigns the labels for this series
|
|
58
|
-
def labels=(v) DataTypeValidator.validate "Series.labels", [SimpleTypedList], v; @labels = v; end
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
end
|
data/lib/axlsx/drawing/axis.rb~
DELETED
|
File without changes
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
|
|
3
|
-
# @example Creating a chart
|
|
4
|
-
# # This example creates two charts in a single sheet.
|
|
5
|
-
# # The first uses data directly fed to the sheet, while the second references cells withing the worksheet for data.
|
|
6
|
-
#
|
|
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 :values => ["This is a chart with no data in the sheet"]
|
|
13
|
-
#
|
|
14
|
-
# chart = ws.add_chart(Axlsx::Pie3DChart, :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
|
-
# ws.add_row :values => ["This chart uses the data below"]
|
|
18
|
-
# title_row = ws.add_row :values => ["Least Popular Pets"]
|
|
19
|
-
# label_row = ws.add_row :values => ["", "Dry Skinned Reptiles", "Bald Cats", "Violent Parrots"]
|
|
20
|
-
# data_row = ws.add_row :values => ["Votes", 6, 4, 1]
|
|
21
|
-
#
|
|
22
|
-
# chart = ws.add_chart(Axlsx::Pie3DChart, :start_at => [0,11], :end_at =>[0,16], :title => title_row.cells.last)
|
|
23
|
-
# chart.add_series :data => data_row.cells[(1..-1)], :labels => label_row.cells
|
|
24
|
-
#
|
|
25
|
-
# f = File.open('example_pie_3d_chart.xlsx', 'w')
|
|
26
|
-
# p.serialize(f)
|
|
27
|
-
#
|
|
28
|
-
# @see Worksheet#add_chart
|
|
29
|
-
# @see Worksheet#add_row
|
|
30
|
-
# @see Chart#add_series
|
|
31
|
-
# @see Series
|
|
32
|
-
# @see Package#serialize
|
|
33
|
-
class Pie3DChart < Chart
|
|
34
|
-
|
|
35
|
-
# Serializes the pie chart
|
|
36
|
-
# @return [String]
|
|
37
|
-
def to_xml
|
|
38
|
-
builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
|
|
39
|
-
xml.send('c:chartSpace',:'xmlns:c' => XML_NS_C,
|
|
40
|
-
:'xmlns:a' => XML_NS_A) {
|
|
41
|
-
xml.send('c:chart') {
|
|
42
|
-
@title.to_xml(xml)
|
|
43
|
-
xml.send('c:view3D') {
|
|
44
|
-
xml.send('c:rotX', :val=>30)
|
|
45
|
-
xml.send('c:perspective', :val=>30)
|
|
46
|
-
}
|
|
47
|
-
xml.send('c:plotArea') {
|
|
48
|
-
xml.send('c:layout')
|
|
49
|
-
xml.send('c:pie3DChart') {
|
|
50
|
-
xml.send('c:varyColors', :val=>1)
|
|
51
|
-
@series.each { |ser| ser.to_xml(xml) }
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
xml.send('c:legend') {
|
|
55
|
-
xml.send('c:legendPos', :val => "r")
|
|
56
|
-
xml.send('c:layout')
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
end
|
|
61
|
-
builder.to_xml
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# A BarSeries defines the title, data and labels for bar charts
|
|
3
|
-
# @note The recommended way to manage series is to use Chart#add_series
|
|
4
|
-
# @see Worksheet#add_chart
|
|
5
|
-
# @see Chart#add_series
|
|
6
|
-
class BarSeries < Series
|
|
7
|
-
|
|
8
|
-
# The series title.
|
|
9
|
-
# @return [String]
|
|
10
|
-
attr_accessor :title
|
|
11
|
-
|
|
12
|
-
# The data for this series.
|
|
13
|
-
# @return [Array, SimpleTypedList]
|
|
14
|
-
attr_reader :data
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# The labels for this series.
|
|
18
|
-
# @return [Array, SimpleTypedList]
|
|
19
|
-
attr_reader :labels
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# Creates a new series
|
|
23
|
-
# @option options [Array, SimpleTypedList] data
|
|
24
|
-
# @option options [Array, SimpleTypedList] labels
|
|
25
|
-
# @option options [String] title
|
|
26
|
-
# @param [Chart] chart
|
|
27
|
-
def initialize(chart, options={})
|
|
28
|
-
super(chart, options)
|
|
29
|
-
self.data = options[:data] || []
|
|
30
|
-
self.labels = options[:labels] || []
|
|
31
|
-
@title = options[:title] || ''
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Serializes the series
|
|
35
|
-
# @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
|
|
36
|
-
# @return [String]
|
|
37
|
-
def to_xml(xml)
|
|
38
|
-
xml.send('c:ser') {
|
|
39
|
-
xml.send('c:idx', :val=>index)
|
|
40
|
-
xml.send('c:order', :val=>index)
|
|
41
|
-
xml.send('c:tx') {
|
|
42
|
-
xml.send('c:v', self.title)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if !labels.empty?
|
|
46
|
-
xml.send('c:cat') {
|
|
47
|
-
xml.send('c:strRef') {
|
|
48
|
-
xml.send('c:f', range(labels))
|
|
49
|
-
xml.send('c:strCache') {
|
|
50
|
-
xml.send('c:ptCount', :val=>labels.size)
|
|
51
|
-
labels.each_with_index do |cell, index|
|
|
52
|
-
v = cell.is_a?(Cell) ? cell.value : cell
|
|
53
|
-
xml.send('c:pt', :idx=>index) {
|
|
54
|
-
xml.send('c:v', v)
|
|
55
|
-
}
|
|
56
|
-
end
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
end
|
|
61
|
-
xml.send('c:val') {
|
|
62
|
-
xml.send('c:numRef') {
|
|
63
|
-
xml.send('c:f', range(data))
|
|
64
|
-
xml.send('c:numCache') {
|
|
65
|
-
xml.send('c:formatCode', 'General')
|
|
66
|
-
xml.send('c:ptCount', :val=>data.size)
|
|
67
|
-
data.each_with_index do |cell, index|
|
|
68
|
-
v = cell.is_a?(Cell) ? cell.value : cell
|
|
69
|
-
xml.send('c:pt', :idx=>index) {
|
|
70
|
-
xml.send('c:v', v)
|
|
71
|
-
}
|
|
72
|
-
end
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
private
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
# assigns the data for this series
|
|
85
|
-
def data=(v) DataTypeValidator.validate "Series.data", [Array, SimpleTypedList], v; @data = v; end
|
|
86
|
-
|
|
87
|
-
# assigns the labels for this series
|
|
88
|
-
def labels=(v) DataTypeValidator.validate "Series.labels", [Array, SimpleTypedList], v; @labels = v; end
|
|
89
|
-
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
#A CatAxis object defines a chart category axis
|
|
4
|
-
class CatAxis
|
|
5
|
-
# <c:catAx>
|
|
6
|
-
# <c:axId val="545184360"/>
|
|
7
|
-
# <c:scaling>
|
|
8
|
-
# <c:orientation val="minMax"/>
|
|
9
|
-
# </c:scaling>
|
|
10
|
-
# <c:axPos val="l"/>
|
|
11
|
-
# <c:tickLblPos val="nextTo"/>
|
|
12
|
-
# <c:crossAx val="545218840"/>
|
|
13
|
-
# <c:crosses val="autoZero"/>
|
|
14
|
-
# <c:auto val="1"/>
|
|
15
|
-
# <c:lblAlgn val="ctr"/>
|
|
16
|
-
# <c:lblOffset val="100"/>
|
|
17
|
-
# </c:catAx>
|
|
18
|
-
|
|
19
|
-
attr_reader :axId
|
|
20
|
-
|
|
21
|
-
att_reader :scaling
|
|
22
|
-
|
|
23
|
-
# The position of the axis
|
|
24
|
-
# must be one of [:l, :r, :t, :b]
|
|
25
|
-
# @return [String]
|
|
26
|
-
attr_accessor :axPos
|
|
27
|
-
|
|
28
|
-
def axPos=(v) RestrictionValidator.validate "CatAxis.axPos", [:l, :r, :b, :t], v; @axPos = v; end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
class CatAxisData < SimpleTypedList
|
|
4
|
-
def initialize(data=[])
|
|
5
|
-
super Object
|
|
6
|
-
@list.concat data if data.is_a?(Array)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def to_xml(xml)
|
|
10
|
-
xml.send('c:cat') {
|
|
11
|
-
xml.send('c:strRef') {
|
|
12
|
-
xml.send('c:f', Axlsx::cell_range(@list))
|
|
13
|
-
xml.send('c:strCache') {
|
|
14
|
-
xml.send('c:ptCount', :val=>size)
|
|
15
|
-
each_with_index do |item, index|
|
|
16
|
-
v = item.is_a?(Cell) ? item.value : item
|
|
17
|
-
xml.send('c:pt', :idx=>index) {
|
|
18
|
-
xml.send('c:v', v)
|
|
19
|
-
}
|
|
20
|
-
end
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
data/lib/axlsx/drawing/chart.rb~
DELETED
|
File without changes
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# A Drawing is a canvas for charts. Each worksheet has a single drawing that can specify multiple anchors which reference charts.
|
|
3
|
-
# @note The recommended way to manage drawings is to use the Worksheet.add_chart method, specifying the chart class, start and end marker locations.
|
|
4
|
-
# @see Worksheet#add_chart
|
|
5
|
-
# @see TwoCellAnchor
|
|
6
|
-
# @see Chart
|
|
7
|
-
class Drawing
|
|
8
|
-
|
|
9
|
-
# The workbook that owns the drawing
|
|
10
|
-
# @return [Workbook]
|
|
11
|
-
attr_reader :workbook
|
|
12
|
-
|
|
13
|
-
# A collection of anchors for this drawing
|
|
14
|
-
# @return [SimpleTypedList]
|
|
15
|
-
attr_reader :anchors
|
|
16
|
-
|
|
17
|
-
# An array of charts that are associated with this drawing's anchors
|
|
18
|
-
# @return [Array]
|
|
19
|
-
attr_reader :charts
|
|
20
|
-
|
|
21
|
-
# The index of this drawing in the owning workbooks's drawings collection.
|
|
22
|
-
# @return [Integer]
|
|
23
|
-
attr_reader :index
|
|
24
|
-
|
|
25
|
-
# The relation reference id for this drawing
|
|
26
|
-
# @return [String]
|
|
27
|
-
attr_reader :rId
|
|
28
|
-
|
|
29
|
-
# The part name for this drawing
|
|
30
|
-
# @return [String]
|
|
31
|
-
attr_reader :pn
|
|
32
|
-
|
|
33
|
-
# The relational part name for this drawing
|
|
34
|
-
# @return [String]
|
|
35
|
-
attr_reader :rels_pn
|
|
36
|
-
|
|
37
|
-
# The drawing's relationships.
|
|
38
|
-
# @return [Relationships]
|
|
39
|
-
attr_reader :relationships
|
|
40
|
-
|
|
41
|
-
# Creates a new Drawing object
|
|
42
|
-
# @param [Workbook] workbook The workbook that owns the drawing.
|
|
43
|
-
def initialize(workbook)
|
|
44
|
-
DataTypeValidator.validate "Drawing.workbook", Workbook, workbook
|
|
45
|
-
@workbook=workbook
|
|
46
|
-
@workbook.drawings << self
|
|
47
|
-
@anchors = SimpleTypedList.new TwoCellAnchor
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
# Adds a chart to the drawing.
|
|
52
|
-
# @note The recommended way to manage charts is to use Worksheet.add_chart.
|
|
53
|
-
# @param [Chart] chart_type The class of the chart to be added to the drawing
|
|
54
|
-
# @param [Hash] options
|
|
55
|
-
def add_chart(chart_type, options={})
|
|
56
|
-
DataTypeValidator.validate "Drawing.chart_type", [Chart, Pie3DChart], chart_type
|
|
57
|
-
chart = chart_type.new(@workbook, options)
|
|
58
|
-
TwoCellAnchor.new(self, chart, options)
|
|
59
|
-
@anchors.last.graphic_frame.chart
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def charts
|
|
63
|
-
@anchors.map { |a| a.graphic_frame.chart }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def index
|
|
67
|
-
@workbook.drawings.index(self)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def rId
|
|
71
|
-
"rId#{index+1}"
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def pn
|
|
75
|
-
"#{DRAWING_PN % (index+1)}"
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def rels_pn
|
|
79
|
-
"#{DRAWING_RELS_PN % (index+1)}"
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def relationships
|
|
83
|
-
r = Relationships.new
|
|
84
|
-
@anchors.each do |anchor|
|
|
85
|
-
chart = anchor.graphic_frame.chart
|
|
86
|
-
r << Relationship.new(CHART_R, "../#{chart.pn}")
|
|
87
|
-
end
|
|
88
|
-
r
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Serializes the pie chart
|
|
92
|
-
# @return [String]
|
|
93
|
-
def to_xml
|
|
94
|
-
builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
|
|
95
|
-
xml.send('xdr:wsDr', :'xmlns:xdr'=>XML_NS_XDR, :'xmlns:a'=>XML_NS_A) {
|
|
96
|
-
anchors.each {|anchor| anchor.to_xml(xml) }
|
|
97
|
-
}
|
|
98
|
-
end
|
|
99
|
-
builder.to_xml
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# A graphic frame defines a container for a chart object
|
|
3
|
-
# @note The recommended way to manage charts is Worksheet#add_chart
|
|
4
|
-
# @see Worksheet#add_chart
|
|
5
|
-
class GraphicFrame
|
|
6
|
-
#TODO add in support for other graphical objects, primarily images.
|
|
7
|
-
|
|
8
|
-
# A reference to the chart object associated with this frame
|
|
9
|
-
# @return [Chart]
|
|
10
|
-
attr_reader :chart
|
|
11
|
-
|
|
12
|
-
# Creates a new GraphicFrame object
|
|
13
|
-
# @param [Chart] chart
|
|
14
|
-
def initialize(chart)
|
|
15
|
-
@chart = chart
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# Serializes the gradientStop
|
|
19
|
-
# @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
|
|
20
|
-
# @return [String]
|
|
21
|
-
def to_xml(xml)
|
|
22
|
-
xml.send('xdr:graphicFrame') {
|
|
23
|
-
xml.send('xdr:nvGraphicFramePr') {
|
|
24
|
-
xml.send('xdr:cNvPr', :id=>2, :name=>chart.title)
|
|
25
|
-
xml.send('xdr:cNvGraphicFramePr')
|
|
26
|
-
}
|
|
27
|
-
xml.send('xdr:xfrm') {
|
|
28
|
-
xml.send('a:off', :x=>0, :y=>0)
|
|
29
|
-
xml.send('a:ext', :cx=>0, :cy=>0)
|
|
30
|
-
}
|
|
31
|
-
xml.send('a:graphic') {
|
|
32
|
-
xml.send('a:graphicData', :uri=>XML_NS_C) {
|
|
33
|
-
xml.send('c:chart', :'xmlns:c'=>XML_NS_C, :'xmlns:r'=>XML_NS_R, :'r:id'=>chart.rId)
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|