axlsx 1.0.4 → 1.0.5
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 +95 -72
- data/examples/example.rb +83 -0
- data/examples/example.rb~ +79 -0
- data/examples/multi_chart.xlsx +0 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +2 -2
- data/lib/axlsx/drawing/bar_series.rb +1 -0
- data/lib/axlsx/drawing/chart.rb +11 -0
- data/lib/axlsx/drawing/drawing.rb +5 -1
- data/lib/axlsx/drawing/line_3D_chart.rb +93 -0
- data/lib/axlsx/drawing/line_3D_chart.rb~ +138 -0
- data/lib/axlsx/drawing/line_series.rb +76 -0
- data/lib/axlsx/drawing/line_series.rb~ +91 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +1 -1
- data/lib/axlsx/drawing/ser_axis.rb +42 -0
- data/lib/axlsx/drawing/ser_axis.rb~ +48 -0
- data/lib/axlsx/drawing/series.rb +9 -7
- data/lib/axlsx/drawing/series_title.rb +22 -0
- data/lib/axlsx/drawing/series_title.rb~ +18 -0
- data/lib/axlsx/drawing/title.rb +1 -2
- data/lib/axlsx/util/constants.rb +1 -1
- data/test/drawing/tc_bar_series.rb +1 -1
- data/test/drawing/tc_chart.rb +7 -5
- data/test/drawing/tc_line_3d_chart.rb +48 -0
- data/test/drawing/tc_line_3d_chart.rb~ +48 -0
- data/test/drawing/tc_line_series.tc +34 -0
- data/test/drawing/tc_line_series.tc~ +34 -0
- data/test/drawing/tc_pie_series.rb +1 -1
- data/test/drawing/tc_ser_axis.rb +23 -0
- data/test/drawing/tc_ser_axis.rb~ +20 -0
- data/test/drawing/tc_series.rb +1 -1
- data/test/drawing/tc_series_title.rb +34 -0
- data/test/drawing/tc_series_title.rb~ +34 -0
- data/test/tc_package.rb +15 -13
- metadata +24 -5
data/README.md
CHANGED
@@ -6,8 +6,9 @@ Axlsx: Office Open XML Spreadsheet Generation
|
|
6
6
|
**Author**: Randy Morgan
|
7
7
|
**Copyright**: 2011
|
8
8
|
**License**: MIT License
|
9
|
-
**Latest Version**: 1.0.
|
10
|
-
**
|
9
|
+
**Latest Version**: 1.0.5
|
10
|
+
**Ruby Version**: 1.8.7
|
11
|
+
**Release Date**: November 22nd 2011
|
11
12
|
|
12
13
|
Synopsis
|
13
14
|
--------
|
@@ -40,88 +41,94 @@ To install Axlsx, use the following command:
|
|
40
41
|
|
41
42
|
Usage
|
42
43
|
-----
|
43
|
-
Simple Workbook
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
sheet.add_row ["First", "Second", "Third"]
|
48
|
-
sheet.add_row [1, 2, 3]
|
49
|
-
end
|
50
|
-
package.serialize("example1.xlsx")
|
51
|
-
end
|
52
|
-
|
53
|
-
Generating A Bar Chart
|
54
|
-
|
55
|
-
p = Axlsx::Package.new do |package|
|
56
|
-
package.workbook.add_worksheet do |sheet|
|
57
|
-
sheet.add_row ["First", "Second", "Third"]
|
58
|
-
sheet.add_row [1, 2, 3]
|
59
|
-
sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 1: Chart") do |chart|
|
60
|
-
chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
|
61
|
-
end
|
62
|
-
end
|
63
|
-
package.serialize("example1.xlsx")
|
64
|
-
end
|
45
|
+
require 'rubygems'
|
46
|
+
require 'axlsx'
|
65
47
|
|
66
|
-
|
48
|
+
##A Simple Workbook
|
67
49
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
end
|
75
|
-
end
|
76
|
-
package.serialize("example3.xlsx")
|
77
|
-
end
|
50
|
+
p = Axlsx::Package.new
|
51
|
+
p.workbook.add_worksheet do |sheet|
|
52
|
+
sheet.add_row ["First", "Second", "Third"]
|
53
|
+
sheet.add_row [1, 2, 3]
|
54
|
+
end
|
55
|
+
p.serialize("example1.xlsx")
|
78
56
|
|
79
|
-
|
57
|
+
##Generating A Bar Chart
|
80
58
|
|
81
|
-
p = Axlsx::Package.new
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
sheet.
|
59
|
+
p = Axlsx::Package.new
|
60
|
+
p.workbook.add_worksheet do |sheet|
|
61
|
+
sheet.add_row ["First", "Second", "Third"]
|
62
|
+
sheet.add_row [1, 2, 3]
|
63
|
+
sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 2: Chart") do |chart|
|
64
|
+
chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
|
87
65
|
end
|
88
|
-
package.serialize("example3.xlsx")
|
89
66
|
end
|
67
|
+
p.serialize("example2.xlsx")
|
90
68
|
|
91
|
-
|
92
|
-
|
93
|
-
p = Axlsx::Package.new do |package|
|
69
|
+
##Generating A Pie Chart
|
94
70
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
# date1904 support. uncomment the line below if you are working on a mac.
|
102
|
-
# package.workbook.date1904 = true
|
103
|
-
|
104
|
-
package.workbook.add_worksheet do |sheet|
|
105
|
-
sheet.add_row ["Text Autowidth", "Second", "Third"], :style => [black_cell, blue_cell, black_cell]
|
106
|
-
sheet.add_row [1, 2, 3], :style => Axlsx::STYLE_THIN_BORDER
|
71
|
+
p = Axlsx::Package.new
|
72
|
+
p.workbook.add_worksheet do |sheet|
|
73
|
+
sheet.add_row ["First", "Second", "Third"]
|
74
|
+
sheet.add_row [1, 2, 3]
|
75
|
+
sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 3: Pie Chart") do |chart|
|
76
|
+
chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
|
107
77
|
end
|
108
|
-
package.serialize("example3.xlsx")
|
109
78
|
end
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
79
|
+
p.serialize("example3.xlsx")
|
80
|
+
|
81
|
+
##Using Custom Styles
|
82
|
+
|
83
|
+
p = Axlsx::Package.new
|
84
|
+
wb = p.workbook
|
85
|
+
black_cell = wb.styles.add_style :bg_color => "FF000000", :fg_color => "FFFFFFFF", :sz=>14, :alignment => { :horizontal=> :center }
|
86
|
+
blue_cell = wb.styles.add_style :bg_color => "FF0000FF", :fg_color => "FFFFFFFF", :sz=>14, :alignment => { :horizontal=> :center }
|
87
|
+
wb.add_worksheet do |sheet|
|
88
|
+
sheet.add_row ["Text Autowidth", "Second", "Third"], :style => [black_cell, blue_cell, black_cell]
|
89
|
+
sheet.add_row [1, 2, 3], :style => Axlsx::STYLE_THIN_BORDER
|
90
|
+
end
|
91
|
+
p.serialize("example4.xlsx")
|
92
|
+
|
93
|
+
##Using Custom Formatting and date1904
|
94
|
+
|
95
|
+
p = Axlsx::Package.new
|
96
|
+
wb = p.workbook
|
97
|
+
date = wb.styles.add_style :format_code=>"yyyy-mm-dd", :border => Axlsx::STYLE_THIN_BORDER
|
98
|
+
padded = wb.styles.add_style :format_code=>"00#", :border => Axlsx::STYLE_THIN_BORDER
|
99
|
+
percent = wb.styles.add_style :format_code=>"0%", :border => Axlsx::STYLE_THIN_BORDER
|
100
|
+
wb.date1904 = true # required for generation on mac
|
101
|
+
wb.add_worksheet do |sheet|
|
102
|
+
sheet.add_row ["Custom Formatted Date", "Percent Formatted Float", "Padded Numbers"], :style => Axlsx::STYLE_THIN_BORDER
|
103
|
+
sheet.add_row [Time.now, 0.2, 32], :style => [date, percent, padded]
|
104
|
+
end
|
105
|
+
p.serialize("example5.xlsx")
|
106
|
+
|
107
|
+
##Validation
|
108
|
+
|
109
|
+
p = Axlsx::Package.new
|
110
|
+
p.workbook.add_worksheet do |sheet|
|
111
|
+
sheet.add_row ["First", "Second", "Third"]
|
112
|
+
sheet.add_row [1, 2, 3]
|
113
|
+
end
|
114
|
+
|
115
|
+
p.validate.each do |error|
|
116
|
+
puts error.inspect
|
117
|
+
end
|
118
|
+
|
119
|
+
#Generating A Line Chart
|
120
|
+
|
121
|
+
p = Axlsx::Package.new
|
122
|
+
p.workbook.add_worksheet do |sheet|
|
123
|
+
sheet.add_row ["First", 1, 5, 7, 9]
|
124
|
+
sheet.add_row ["Second", 5, 2, 14, 9]
|
125
|
+
sheet.add_chart(Axlsx::Line3DChart, :start_at => [0,2], :end_at => [10, 15], :title=>"example 6: Line Chart") do |chart|
|
126
|
+
chart.add_series :data=>sheet.rows.first.cells[(1..-1)], :title=> sheet.rows.first.cells.first
|
127
|
+
chart.add_series :data=>sheet.rows.last.cells[(1..-1)], :title=> sheet.rows.last.cells.first
|
122
128
|
end
|
123
|
-
package.serialize("example5.xlsx")
|
124
129
|
end
|
130
|
+
p.serialize("example6.xlsx")
|
131
|
+
|
125
132
|
|
126
133
|
### Documentation
|
127
134
|
This gem is 100% documented with YARD, an exceptional documentation library. To see documentation for this, and all the gems installed on your system use:
|
@@ -130,7 +137,7 @@ This gem is 100% documented with YARD, an exceptional documentation library. To
|
|
130
137
|
|
131
138
|
|
132
139
|
### Specs
|
133
|
-
This gem has 100% test coverage. To execute tests for this gem, simply run rake in the gem directory.
|
140
|
+
This gem has 100% test coverage using test/unit. To execute tests for this gem, simply run rake in the gem directory.
|
134
141
|
|
135
142
|
Changelog
|
136
143
|
---------
|
@@ -138,8 +145,24 @@ Changelog
|
|
138
145
|
- **October.20.11**: 0.1.0 release
|
139
146
|
- **October.21.11**: 1.0.3 release
|
140
147
|
- Updated documentation
|
148
|
+
- **October.21.11**: 1.0.4
|
141
149
|
- altered package to accept a filename string for serialization instead of a File object.
|
142
150
|
- Updated specs to conform
|
151
|
+
- More examples for readme
|
152
|
+
- **October.22.11**: 1.05
|
153
|
+
- Added support for line charts
|
154
|
+
- Updated examples and readme
|
155
|
+
- Updated series title to be a real title ** NOTE ** If you are accessing titles directly you will need to update text assignation to title.text = v
|
156
|
+
- BugFix: shape attribute for bar chart is now properly serialized
|
157
|
+
- BugFix: date1904 property now properly set for charts
|
158
|
+
- Added style property to charts
|
159
|
+
- Removed serialization write test as it most commonly fails when run from the gem's intalled directory
|
160
|
+
|
161
|
+
On Deck
|
162
|
+
-------
|
163
|
+
|
164
|
+
- Verification with ruby 1.9.3
|
165
|
+
- Active Record support via package::serialize_ar so you can dump an AR result into a worksheet in one go.
|
143
166
|
|
144
167
|
Copyright
|
145
168
|
---------
|
data/examples/example.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'axlsx'
|
3
|
+
|
4
|
+
#A Simple Workbook
|
5
|
+
p = Axlsx::Package.new
|
6
|
+
p.workbook.add_worksheet do |sheet|
|
7
|
+
sheet.add_row ["First", "Second", "Third"]
|
8
|
+
sheet.add_row [1, 2, 3]
|
9
|
+
end
|
10
|
+
p.serialize("example1.xlsx")
|
11
|
+
|
12
|
+
#Generating A Bar Chart
|
13
|
+
p = Axlsx::Package.new
|
14
|
+
p.workbook.add_worksheet do |sheet|
|
15
|
+
sheet.add_row ["First", "Second", "Third"]
|
16
|
+
sheet.add_row [1, 2, 3]
|
17
|
+
sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 2: Chart") do |chart|
|
18
|
+
chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
|
19
|
+
end
|
20
|
+
end
|
21
|
+
p.serialize("example2.xlsx")
|
22
|
+
|
23
|
+
#Generating A Pie Chart
|
24
|
+
p = Axlsx::Package.new
|
25
|
+
p.workbook.add_worksheet do |sheet|
|
26
|
+
sheet.add_row ["First", "Second", "Third"]
|
27
|
+
sheet.add_row [1, 2, 3]
|
28
|
+
sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 3: Pie Chart") do |chart|
|
29
|
+
chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
|
30
|
+
end
|
31
|
+
end
|
32
|
+
p.serialize("example3.xlsx")
|
33
|
+
|
34
|
+
|
35
|
+
#Using Custom Styles
|
36
|
+
|
37
|
+
p = Axlsx::Package.new
|
38
|
+
wb = p.workbook
|
39
|
+
black_cell = wb.styles.add_style :bg_color => "FF000000", :fg_color => "FFFFFFFF", :sz=>14, :alignment => { :horizontal=> :center }
|
40
|
+
blue_cell = wb.styles.add_style :bg_color => "FF0000FF", :fg_color => "FFFFFFFF", :sz=>14, :alignment => { :horizontal=> :center }
|
41
|
+
wb.add_worksheet do |sheet|
|
42
|
+
sheet.add_row ["Text Autowidth", "Second", "Third"], :style => [black_cell, blue_cell, black_cell]
|
43
|
+
sheet.add_row [1, 2, 3], :style => Axlsx::STYLE_THIN_BORDER
|
44
|
+
end
|
45
|
+
p.serialize("example4.xlsx")
|
46
|
+
|
47
|
+
#Using Custom Formatting and date1904
|
48
|
+
|
49
|
+
p = Axlsx::Package.new
|
50
|
+
wb = p.workbook
|
51
|
+
date = wb.styles.add_style :format_code=>"yyyy-mm-dd", :border => Axlsx::STYLE_THIN_BORDER
|
52
|
+
padded = wb.styles.add_style :format_code=>"00#", :border => Axlsx::STYLE_THIN_BORDER
|
53
|
+
percent = wb.styles.add_style :format_code=>"0%", :border => Axlsx::STYLE_THIN_BORDER
|
54
|
+
wb.date1904 = true # required for generation on mac
|
55
|
+
wb.add_worksheet do |sheet|
|
56
|
+
sheet.add_row ["Custom Formatted Date", "Percent Formatted Float", "Padded Numbers"], :style => Axlsx::STYLE_THIN_BORDER
|
57
|
+
sheet.add_row [Time.now, 0.2, 32], :style => [date, percent, padded]
|
58
|
+
end
|
59
|
+
p.serialize("example5.xlsx")
|
60
|
+
|
61
|
+
#Validation
|
62
|
+
p = Axlsx::Package.new
|
63
|
+
p.workbook.add_worksheet do |sheet|
|
64
|
+
sheet.add_row ["First", "Second", "Third"]
|
65
|
+
sheet.add_row [1, 2, 3]
|
66
|
+
end
|
67
|
+
|
68
|
+
p.validate.each do |error|
|
69
|
+
puts error.inspect
|
70
|
+
end
|
71
|
+
|
72
|
+
#Generating A Line Chart
|
73
|
+
|
74
|
+
p = Axlsx::Package.new
|
75
|
+
p.workbook.add_worksheet do |sheet|
|
76
|
+
sheet.add_row ["First", 1, 5, 7, 9]
|
77
|
+
sheet.add_row ["Second", 5, 2, 14, 9]
|
78
|
+
sheet.add_chart(Axlsx::Line3DChart, :start_at => [0,2], :end_at => [10, 15], :title=>"example 6: Line Chart") do |chart|
|
79
|
+
chart.add_series :data=>sheet.rows.first.cells[(1..-1)], :title=> sheet.rows.first.cells.first
|
80
|
+
chart.add_series :data=>sheet.rows.last.cells[(1..-1)], :title=> sheet.rows.last.cells.first
|
81
|
+
end
|
82
|
+
end
|
83
|
+
p.serialize("example6.xlsx")
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'axlsx'
|
3
|
+
|
4
|
+
wb =Axlsx::Workbook.new(:date1904=>true)
|
5
|
+
p = Axlsx::Package.new(:workbook=>wb)
|
6
|
+
|
7
|
+
styles = wb.styles
|
8
|
+
|
9
|
+
header_style = styles.add_style(:bg_color=>"FF000000", :fg_color=>"FFFFFFFF", :sz=>14, :alignment=>{:horizontal=>:center})
|
10
|
+
table_title = styles.add_style :sz=>22
|
11
|
+
date_time = styles.add_style(:num_fmt=>Axlsx::NUM_FMT_YYYYMMDDHHMMSS)
|
12
|
+
date = styles.add_style :num_fmt=>Axlsx::NUM_FMT_YYYYMMDD
|
13
|
+
bordered = styles.add_style :border=>Axlsx::STYLE_THIN_BORDER
|
14
|
+
|
15
|
+
wb.add_worksheet do |sheet|
|
16
|
+
sheet.name = "Example 1"
|
17
|
+
# add cells as a row
|
18
|
+
sheet.add_row :values=>['Example 1 Styling and Bar Chart'], :style=>table_title
|
19
|
+
sheet.add_row :values=>["Formatted Time Stamp", Time.now],:style=>[nil, date_time]
|
20
|
+
# adding cells one at a time
|
21
|
+
sheet.add_row do |row|
|
22
|
+
row.add_cell "Formatted Date"
|
23
|
+
row.add_cell Time.now, :style => date, :type=>:time
|
24
|
+
end
|
25
|
+
|
26
|
+
# Bar 3D Chart
|
27
|
+
sheet.add_row
|
28
|
+
label_row = sheet.add_row :values=>["0 ~ 10", "11 ~ 20", "21 ~ 60"], :style=>header_style
|
29
|
+
data_row = sheet.add_row :values=>[12, 60, 25], :style=>bordered
|
30
|
+
sheet.add_chart(Axlsx::Bar3DChart, :show_legend=>false) do |chart|
|
31
|
+
chart.title = Axlsx::Title.new(sheet.rows.first.cells.first)
|
32
|
+
chart.add_series :data => data_row.cells, :labels => label_row.cells
|
33
|
+
chart.start_at.coord(0, 7)
|
34
|
+
chart.end_at.coord(3, 17)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
# Blocks are not required
|
40
|
+
percent = styles.add_style :num_fmt=>Axlsx::NUM_FMT_PERCENT, :border=>Axlsx::STYLE_THIN_BORDER
|
41
|
+
wb.add_worksheet(:name=>"Example 2") do |sheet|
|
42
|
+
sheet.add_row :values=>["Example 2 - Styling and Pie Chart"], :style=>table_title
|
43
|
+
label_row = sheet.add_row(:values=>["Summer", "Fall", "Winter", "Spring"], :style=>header_style)
|
44
|
+
data_row = sheet.add_row :values=>[0.5, 0.2, 0.2, 0.1], :style=>percent
|
45
|
+
chart = sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,4], :end_at => [4,14], :title => "Pie Consumption per Season") do |chart|
|
46
|
+
chart.add_series :data => data_row.cells, :labels=>label_row.cells
|
47
|
+
end
|
48
|
+
end
|
49
|
+
# Charts can be build with out data in the sheet
|
50
|
+
wb.add_worksheet(:name=>"Example 3") do |ws|
|
51
|
+
ws.add_row :values=>["Charts can be build without any data in the worksheet"]
|
52
|
+
ws.add_chart(Axlsx::Pie3DChart, :title=>"free chart 1") do |chart|
|
53
|
+
chart.start_at.coord(0,2)
|
54
|
+
chart.end_at.coord(3,12)
|
55
|
+
chart.add_series :data => [13,54,1], :labels=>["nothing","in","the sheet"]
|
56
|
+
end
|
57
|
+
ws.add_chart(Axlsx::Pie3DChart) do |chart|
|
58
|
+
chart.start_at.coord(0,13)
|
59
|
+
chart.end_at.coord(3,23)
|
60
|
+
chart.add_series :data => [1,4,5], :labels=>["nothing","in","the sheet"], :title=>"free chart 2"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# wb.add_worksheet(:name=>"Example 4") do |sheet|
|
65
|
+
# sheet.add_row :values=>["lots of data!"]
|
66
|
+
# (1..100).each do |i|
|
67
|
+
# cells = (1..50).map { |i| rand(5 ** 10) }
|
68
|
+
# sheet.add_row :values=>cells
|
69
|
+
# end
|
70
|
+
# end
|
71
|
+
|
72
|
+
errors = p.validate
|
73
|
+
if errors.empty?
|
74
|
+
f = File.open('test.xlsx', 'w')
|
75
|
+
p.serialize(f)
|
76
|
+
else
|
77
|
+
puts errors.to_s
|
78
|
+
end
|
79
|
+
|
Binary file
|
@@ -77,8 +77,6 @@ module Axlsx
|
|
77
77
|
# @option options [String] gapDepth
|
78
78
|
# @option options [Symbol] shape
|
79
79
|
def initialize(frame, options={})
|
80
|
-
super(frame, options)
|
81
|
-
@series_type = BarSeries
|
82
80
|
@barDir = :bar
|
83
81
|
@grouping = :clustered
|
84
82
|
@catAxId = rand(8 ** 8)
|
@@ -86,6 +84,8 @@ module Axlsx
|
|
86
84
|
@catAxis = CatAxis.new(@catAxId, @valAxId)
|
87
85
|
@valAxis = ValAxis.new(@valAxId, @catAxId)
|
88
86
|
@view3D = View3D.new(:rAngAx=>1)
|
87
|
+
super(frame, options)
|
88
|
+
@series_type = BarSeries
|
89
89
|
end
|
90
90
|
|
91
91
|
def barDir=(v)
|
data/lib/axlsx/drawing/chart.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
module Axlsx
|
2
3
|
# A Chart is the superclass for specific charts
|
3
4
|
# @note Worksheet#add_chart is the recommended way to create charts for your worksheets.
|
@@ -7,6 +8,11 @@ module Axlsx
|
|
7
8
|
# @return [Title]
|
8
9
|
attr_accessor :title
|
9
10
|
|
11
|
+
# The style for the chart.
|
12
|
+
# see ECMA Part 1 §21.2.2.196
|
13
|
+
# @return [Integer]
|
14
|
+
attr_accessor :style
|
15
|
+
|
10
16
|
# The 3D view properties for the chart
|
11
17
|
attr_accessor :view3D
|
12
18
|
|
@@ -50,6 +56,7 @@ module Axlsx
|
|
50
56
|
# @option options [Cell, String] title
|
51
57
|
# @option options [Boolean] show_legend
|
52
58
|
def initialize(frame, options={})
|
59
|
+
@style = 2
|
53
60
|
@graphic_frame=frame
|
54
61
|
@graphic_frame.anchor.drawing.worksheet.workbook.charts << self
|
55
62
|
@series = SimpleTypedList.new Series
|
@@ -79,6 +86,8 @@ module Axlsx
|
|
79
86
|
|
80
87
|
def show_legend=(v) Axlsx::validate_boolean(v); @show_legend = v; end
|
81
88
|
|
89
|
+
def style=(v) DataTypeValidator.validate "Chart.style", Integer, v, lambda { |v| v >= 1 && v <= 48 }; @style = v; end
|
90
|
+
|
82
91
|
# Adds a new series to the chart's series collection.
|
83
92
|
# @return [Series]
|
84
93
|
# @see Series
|
@@ -92,6 +101,8 @@ module Axlsx
|
|
92
101
|
def to_xml
|
93
102
|
builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
|
94
103
|
xml.send('c:chartSpace',:'xmlns:c' => XML_NS_C, :'xmlns:a' => XML_NS_A) {
|
104
|
+
xml.send('c:date1904', :val=>Axlsx::Workbook.date1904)
|
105
|
+
xml.send('c:style', :val=>style)
|
95
106
|
xml.send('c:chart') {
|
96
107
|
@title.to_xml(xml) unless @title.nil?
|
97
108
|
@view3D.to_xml(xml) unless @view3D.nil?
|
@@ -1,14 +1,17 @@
|
|
1
1
|
module Axlsx
|
2
|
+
require 'axlsx/drawing/title.rb'
|
3
|
+
require 'axlsx/drawing/series_title.rb'
|
2
4
|
require 'axlsx/drawing/series.rb'
|
3
5
|
require 'axlsx/drawing/pie_series.rb'
|
4
6
|
require 'axlsx/drawing/bar_series.rb'
|
7
|
+
require 'axlsx/drawing/line_series.rb'
|
5
8
|
|
6
9
|
require 'axlsx/drawing/axis.rb'
|
10
|
+
require 'axlsx/drawing/ser_axis.rb'
|
7
11
|
require 'axlsx/drawing/cat_axis.rb'
|
8
12
|
require 'axlsx/drawing/val_axis.rb'
|
9
13
|
require 'axlsx/drawing/view_3D.rb'
|
10
14
|
require 'axlsx/drawing/scaling.rb'
|
11
|
-
require 'axlsx/drawing/title.rb'
|
12
15
|
|
13
16
|
require 'axlsx/drawing/graphic_frame.rb'
|
14
17
|
require 'axlsx/drawing/marker.rb'
|
@@ -17,6 +20,7 @@ module Axlsx
|
|
17
20
|
require 'axlsx/drawing/chart.rb'
|
18
21
|
require 'axlsx/drawing/pie_3D_chart.rb'
|
19
22
|
require 'axlsx/drawing/bar_3D_chart.rb'
|
23
|
+
require 'axlsx/drawing/line_3D_chart.rb'
|
20
24
|
|
21
25
|
# A Drawing is a canvas for charts. Each worksheet has a single drawing that can specify multiple anchors which reference charts.
|
22
26
|
# @note The recommended way to manage drawings is to use the Worksheet.add_chart method, specifying the chart class, start and end marker locations.
|