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.
Files changed (207) hide show
  1. data/README.md +21 -3
  2. data/doc/Axlsx.html +150 -6
  3. data/doc/Axlsx/App.html +1 -1
  4. data/doc/Axlsx/Axis.html +1 -1
  5. data/doc/Axlsx/Bar3DChart.html +1 -1
  6. data/doc/Axlsx/BarSeries.html +1 -1
  7. data/doc/Axlsx/Border.html +1 -1
  8. data/doc/Axlsx/BorderPr.html +1 -1
  9. data/doc/Axlsx/CatAxis.html +1 -1
  10. data/doc/Axlsx/CatAxisData.html +7 -5
  11. data/doc/Axlsx/Cell.html +1 -1
  12. data/doc/Axlsx/CellAlignment.html +1 -1
  13. data/doc/Axlsx/CellProtection.html +1 -1
  14. data/doc/Axlsx/CellStyle.html +1 -1
  15. data/doc/Axlsx/Chart.html +16 -16
  16. data/doc/Axlsx/Color.html +1 -1
  17. data/doc/Axlsx/ContentType.html +1 -1
  18. data/doc/Axlsx/Core.html +1 -1
  19. data/doc/Axlsx/DataTypeValidator.html +1 -1
  20. data/doc/Axlsx/Default.html +1 -1
  21. data/doc/Axlsx/Drawing.html +243 -65
  22. data/doc/Axlsx/Fill.html +1 -1
  23. data/doc/Axlsx/Font.html +1 -1
  24. data/doc/Axlsx/GradientFill.html +1 -1
  25. data/doc/Axlsx/GradientStop.html +1 -1
  26. data/doc/Axlsx/GraphicFrame.html +21 -21
  27. data/doc/Axlsx/Line3DChart.html +1 -1
  28. data/doc/Axlsx/LineSeries.html +6 -8
  29. data/doc/Axlsx/Marker.html +1 -1
  30. data/doc/Axlsx/NumFmt.html +1 -1
  31. data/doc/Axlsx/OneCellAnchor.html +988 -0
  32. data/doc/Axlsx/Override.html +1 -1
  33. data/doc/Axlsx/Package.html +127 -75
  34. data/doc/Axlsx/PatternFill.html +1 -1
  35. data/doc/Axlsx/Pic.html +1532 -0
  36. data/doc/Axlsx/Pie3DChart.html +5 -7
  37. data/doc/Axlsx/PieSeries.html +1 -1
  38. data/doc/Axlsx/RegexValidator.html +1 -1
  39. data/doc/Axlsx/Relationship.html +6 -6
  40. data/doc/Axlsx/Relationships.html +1 -1
  41. data/doc/Axlsx/RestrictionValidator.html +1 -1
  42. data/doc/Axlsx/Row.html +1 -1
  43. data/doc/Axlsx/Scaling.html +1 -1
  44. data/doc/Axlsx/SerAxis.html +1 -1
  45. data/doc/Axlsx/Series.html +1 -1
  46. data/doc/Axlsx/SeriesTitle.html +1 -1
  47. data/doc/Axlsx/SimpleTypedList.html +1 -1
  48. data/doc/Axlsx/Styles.html +1 -1
  49. data/doc/Axlsx/TableStyle.html +1 -1
  50. data/doc/Axlsx/TableStyleElement.html +1 -1
  51. data/doc/Axlsx/TableStyles.html +1 -1
  52. data/doc/Axlsx/Title.html +1 -1
  53. data/doc/Axlsx/TwoCellAnchor.html +165 -61
  54. data/doc/Axlsx/ValAxis.html +1 -1
  55. data/doc/Axlsx/ValAxisData.html +1 -1
  56. data/doc/Axlsx/View3D.html +1 -1
  57. data/doc/Axlsx/Workbook.html +151 -47
  58. data/doc/Axlsx/Worksheet.html +172 -35
  59. data/doc/Axlsx/Xf.html +1 -1
  60. data/doc/_index.html +15 -1
  61. data/doc/class_list.html +1 -1
  62. data/doc/file.README.html +29 -4
  63. data/doc/index.html +29 -4
  64. data/doc/method_list.html +571 -363
  65. data/doc/top-level-namespace.html +1 -1
  66. data/examples/example.rb +13 -0
  67. data/examples/image1.gif +0 -0
  68. data/examples/image1.jpeg +0 -0
  69. data/examples/image1.jpg +0 -0
  70. data/examples/image1.png +0 -0
  71. data/lib/axlsx/drawing/bar_series.rb +0 -1
  72. data/lib/axlsx/drawing/cat_axis_data.rb +1 -0
  73. data/lib/axlsx/drawing/chart.rb +0 -1
  74. data/lib/axlsx/drawing/drawing.rb +31 -7
  75. data/lib/axlsx/drawing/graphic_frame.rb +0 -2
  76. data/lib/axlsx/drawing/line_series.rb +0 -1
  77. data/lib/axlsx/drawing/one_cell_anchor.rb +89 -0
  78. data/lib/axlsx/drawing/pic.rb +158 -0
  79. data/lib/axlsx/drawing/pie_3D_chart.rb +0 -1
  80. data/lib/axlsx/drawing/two_cell_anchor.rb +17 -4
  81. data/lib/axlsx/package.rb +31 -5
  82. data/lib/axlsx/rels/relationship.rb +1 -2
  83. data/lib/axlsx/util/constants.rb +24 -0
  84. data/lib/axlsx/util/validators.rb +2 -2
  85. data/lib/axlsx/version.rb +1 -1
  86. data/lib/axlsx/workbook/workbook.rb +8 -0
  87. data/lib/axlsx/workbook/worksheet/worksheet.rb +10 -1
  88. data/test/drawing/tc_drawing.rb +10 -1
  89. data/test/drawing/tc_one_cell_anchor.rb +67 -0
  90. data/test/drawing/tc_pic.rb +71 -0
  91. data/test/tc_package.rb +0 -2
  92. metadata +13 -118
  93. data/examples/#example.rb# +0 -87
  94. data/examples/example.rb~ +0 -79
  95. data/examples/multi_chart.xlsx +0 -0
  96. data/lib/axlsx.rb~ +0 -67
  97. data/lib/axlsx/content_type/content_type.rb~ +0 -20
  98. data/lib/axlsx/content_type/default.rb~ +0 -32
  99. data/lib/axlsx/content_type/override.rb~ +0 -30
  100. data/lib/axlsx/doc_props/app.rb~ +0 -127
  101. data/lib/axlsx/doc_props/core.rb~ +0 -25
  102. data/lib/axlsx/drawing/#bar_series.rb# +0 -62
  103. data/lib/axlsx/drawing/axis.rb~ +0 -0
  104. data/lib/axlsx/drawing/bar_3D_chart.rb~ +0 -64
  105. data/lib/axlsx/drawing/bar_series.rb~ +0 -92
  106. data/lib/axlsx/drawing/cat_axis.rb~ +0 -32
  107. data/lib/axlsx/drawing/cat_axis_data.rb~ +0 -28
  108. data/lib/axlsx/drawing/chart.rb~ +0 -0
  109. data/lib/axlsx/drawing/drawing.rb~ +0 -102
  110. data/lib/axlsx/drawing/graphic_frame.rb~ +0 -40
  111. data/lib/axlsx/drawing/line_3D_chart.rb~ +0 -138
  112. data/lib/axlsx/drawing/line_series.rb~ +0 -91
  113. data/lib/axlsx/drawing/marker.rb~ +0 -50
  114. data/lib/axlsx/drawing/pie_3D_chart.rb~ +0 -132
  115. data/lib/axlsx/drawing/pie_series.rb~ +0 -0
  116. data/lib/axlsx/drawing/scaling.rb~ +0 -0
  117. data/lib/axlsx/drawing/ser_axis.rb~ +0 -48
  118. data/lib/axlsx/drawing/series.rb~ +0 -114
  119. data/lib/axlsx/drawing/series_title.rb~ +0 -18
  120. data/lib/axlsx/drawing/title.rb~ +0 -69
  121. data/lib/axlsx/drawing/two_cell_anchor.rb~ +0 -70
  122. data/lib/axlsx/drawing/val_axis.rb~ +0 -34
  123. data/lib/axlsx/drawing/val_axis_data.rb~ +0 -29
  124. data/lib/axlsx/drawing/view_3D.rb~ +0 -21
  125. data/lib/axlsx/package.rb~ +0 -181
  126. data/lib/axlsx/rels/relationship.rb~ +0 -18
  127. data/lib/axlsx/rels/relationships.rb~ +0 -23
  128. data/lib/axlsx/stylesheet/border.rb~ +0 -24
  129. data/lib/axlsx/stylesheet/border_pr.rb~ +0 -64
  130. data/lib/axlsx/stylesheet/cell_alignment.rb~ +0 -93
  131. data/lib/axlsx/stylesheet/cell_protection.rb~ +0 -16
  132. data/lib/axlsx/stylesheet/cell_style.rb~ +0 -61
  133. data/lib/axlsx/stylesheet/color.rb~ +0 -56
  134. data/lib/axlsx/stylesheet/fill.rb~ +0 -31
  135. data/lib/axlsx/stylesheet/font.rb~ +0 -33
  136. data/lib/axlsx/stylesheet/gradient_fill.rb~ +0 -70
  137. data/lib/axlsx/stylesheet/gradient_stop.rb~ +0 -15
  138. data/lib/axlsx/stylesheet/num_fmt.rb~ +0 -60
  139. data/lib/axlsx/stylesheet/pattern_fill.rb~ +0 -63
  140. data/lib/axlsx/stylesheet/styles.rb~ +0 -279
  141. data/lib/axlsx/stylesheet/table_style.rb~ +0 -43
  142. data/lib/axlsx/stylesheet/table_style_element.rb~ +0 -66
  143. data/lib/axlsx/stylesheet/table_styles.rb~ +0 -36
  144. data/lib/axlsx/stylesheet/xf.rb~ +0 -37
  145. data/lib/axlsx/util/constants.rb~ +0 -187
  146. data/lib/axlsx/util/monkey_patches_for_true_zip_stream.rb~ +0 -61
  147. data/lib/axlsx/util/simple_typed_list.rb~ +0 -79
  148. data/lib/axlsx/util/validators.rb~ +0 -132
  149. data/lib/axlsx/util/xml_escape.rb~ +0 -6
  150. data/lib/axlsx/workbook/workbook.rb~ +0 -130
  151. data/lib/axlsx/workbook/worksheet/cell.rb~ +0 -185
  152. data/lib/axlsx/workbook/worksheet/row.rb~ +0 -92
  153. data/lib/axlsx/workbook/worksheet/worksheet.rb~ +0 -194
  154. data/test/content_type/tc_content_type.rb~ +0 -81
  155. data/test/content_type/tc_default.rb~ +0 -40
  156. data/test/content_type/tc_override.rb~ +0 -40
  157. data/test/doc_props/tc_app.rb~ +0 -19
  158. data/test/drawing/tc_axis.rb~ +0 -0
  159. data/test/drawing/tc_bar_3D_chart.rb~ +0 -66
  160. data/test/drawing/tc_bar_series.rb~ +0 -31
  161. data/test/drawing/tc_cat_axis.rb~ +0 -39
  162. data/test/drawing/tc_cat_axis_data.rb~ +0 -32
  163. data/test/drawing/tc_chart.rb~ +0 -59
  164. data/test/drawing/tc_graphic_frame.rb~ +0 -21
  165. data/test/drawing/tc_line_3d_chart.rb~ +0 -48
  166. data/test/drawing/tc_line_series.rb~ +0 -34
  167. data/test/drawing/tc_marker.rb~ +0 -26
  168. data/test/drawing/tc_pie_3D_chart.rb~ +0 -33
  169. data/test/drawing/tc_pie_series.rb~ +0 -26
  170. data/test/drawing/tc_scaling.rb~ +0 -45
  171. data/test/drawing/tc_ser_axis.rb~ +0 -20
  172. data/test/drawing/tc_series.rb~ +0 -31
  173. data/test/drawing/tc_series_title.rb~ +0 -34
  174. data/test/drawing/tc_title.rb~ +0 -34
  175. data/test/drawing/tc_two_cell_anchor.rb~ +0 -37
  176. data/test/drawing/tc_val_axis.rb~ +0 -32
  177. data/test/drawing/tc_val_axis_data.rb~ +0 -18
  178. data/test/drawing/tc_view_3D.rb~ +0 -37
  179. data/test/rels/tc_relationship.rb~ +0 -39
  180. data/test/rels/tc_relationships.rb~ +0 -37
  181. data/test/stylesheet/tc_border.rb~ +0 -31
  182. data/test/stylesheet/tc_border_pr.rb~ +0 -31
  183. data/test/stylesheet/tc_cell_alignment.rb~ +0 -38
  184. data/test/stylesheet/tc_cell_protection.rb~ +0 -77
  185. data/test/stylesheet/tc_cell_style.rb~ +0 -30
  186. data/test/stylesheet/tc_color.rb~ +0 -38
  187. data/test/stylesheet/tc_fill.rb~ +0 -19
  188. data/test/stylesheet/tc_font.rb~ +0 -19
  189. data/test/stylesheet/tc_gradient_fill.rb~ +0 -114
  190. data/test/stylesheet/tc_gradient_stop.rb~ +0 -65
  191. data/test/stylesheet/tc_num_fmt.rb~ +0 -32
  192. data/test/stylesheet/tc_pattern_fill.rb~ +0 -31
  193. data/test/stylesheet/tc_table_style.rb~ +0 -38
  194. data/test/stylesheet/tc_table_style_element.rb~ +0 -37
  195. data/test/stylesheet/tc_table_styles.rb~ +0 -37
  196. data/test/stylesheet/tc_xf.rb~ +0 -30
  197. data/test/tc_app.rb~ +0 -19
  198. data/test/tc_border_pr.rb~ +0 -21
  199. data/test/tc_package.rb~ +0 -64
  200. data/test/tc_pie_3D_chart.rb~ +0 -66
  201. data/test/tc_relationships.rb~ +0 -37
  202. data/test/tc_series.rb~ +0 -31
  203. data/test/tc_styles.rb~ +0 -64
  204. data/test/tc_validators.rb~ +0 -77
  205. data/test/tc_worksheet.rb~ +0 -85
  206. data/test/workbook/worksheet/tc_row.rb~ +0 -30
  207. 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
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
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