caxlsx 3.2.0 → 3.3.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.
Files changed (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +107 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +398 -388
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +535 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +416 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +425 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,90 +1,91 @@
1
- module Axlsx
2
- # There are more elements in the dLbls spec that allow for
3
- # customizations and formatting. For now, I am just implementing the
4
- # basics.
5
- #The DLbls class manages serialization of data labels
6
- # showLeaderLines and leaderLines are not currently implemented
7
- class DLbls
8
-
9
- include Axlsx::Accessors
10
- include Axlsx::OptionsParser
11
- # creates a new DLbls object
12
- def initialize(chart_type, options={})
13
- raise ArgumentError, 'chart_type must inherit from Chart' unless [Chart, LineChart].include?(chart_type.superclass)
14
- @chart_type = chart_type
15
- initialize_defaults
16
- parse_options options
17
- end
18
-
19
- # These attributes are all boolean so I'm doing a bit of a hand
20
- # waving magic show to set up the attriubte accessors
21
- # @note
22
- # not all charts support all methods!
23
- # Bar3DChart and Line3DChart and ScatterChart do not support d_lbl_pos or show_leader_lines
24
- #
25
- boolean_attr_accessor :show_legend_key,
26
- :show_val,
27
- :show_cat_name,
28
- :show_ser_name,
29
- :show_percent,
30
- :show_bubble_size,
31
- :show_leader_lines
32
-
33
- # Initialize all the values to false as Excel requires them to
34
- # explicitly be disabled or all will show.
35
- def initialize_defaults
36
- [:show_legend_key, :show_val, :show_cat_name,
37
- :show_ser_name, :show_percent, :show_bubble_size,
38
- :show_leader_lines].each do |attr|
39
- self.send("#{attr}=", false)
40
- end
41
- end
42
-
43
- # The chart type that is using this data lables instance.
44
- # This affects the xml output as not all chart types support the
45
- # same data label attributes.
46
- attr_reader :chart_type
47
-
48
- # The position of the data labels in the chart
49
- # @see d_lbl_pos= for a list of allowed values
50
- # @return [Symbol]
51
- def d_lbl_pos
52
- return unless [Pie3DChart, LineChart].include? @chart_type
53
- @d_lbl_pos ||= :bestFit
54
- end
55
-
56
- # @see DLbls#d_lbl_pos
57
- # Assigns the label postion for this data labels on this chart.
58
- # Allowed positions are :bestFit, :b, :ctr, :inBase, :inEnd, :l,
59
- # :outEnd, :r and :t
60
- # The default is :bestFit
61
- # @param [Symbol] label_position the postion you want to use.
62
- def d_lbl_pos=(label_position)
63
- return unless [Pie3DChart, LineChart].include? @chart_type
64
- Axlsx::RestrictionValidator.validate 'DLbls#d_lbl_pos', [:bestFit, :b, :ctr, :inBase, :inEnd, :l, :outEnd, :r, :t], label_position
65
- @d_lbl_pos = label_position
66
- end
67
-
68
-
69
- # serializes the data labels
70
- # @return [String]
71
- def to_xml_string(str = '')
72
- validate_attributes_for_chart_type
73
- str << '<c:dLbls>'
74
- %w(d_lbl_pos show_legend_key show_val show_cat_name show_ser_name show_percent show_bubble_size show_leader_lines).each do |key|
75
- next unless instance_values.keys.include?(key) && instance_values[key] != nil
76
- str << "<c:#{Axlsx::camel(key, false)} val='#{instance_values[key]}' />"
77
- end
78
- str << '</c:dLbls>'
79
- end
80
-
81
- # nills out d_lbl_pos and show_leader_lines as these attributes, while valid in the spec actually chrash excel for any chart type other than pie charts.
82
- def validate_attributes_for_chart_type
83
- return if [Pie3DChart, LineChart].include? @chart_type
84
- @d_lbl_pos = nil
85
- @show_leader_lines = nil
86
- end
87
-
88
-
89
- end
90
- end
1
+ module Axlsx
2
+ # There are more elements in the dLbls spec that allow for
3
+ # customizations and formatting. For now, I am just implementing the
4
+ # basics.
5
+ #The DLbls class manages serialization of data labels
6
+ # showLeaderLines and leaderLines are not currently implemented
7
+ class DLbls
8
+
9
+ include Axlsx::Accessors
10
+ include Axlsx::OptionsParser
11
+ # creates a new DLbls object
12
+ def initialize(chart_type, options={})
13
+ raise ArgumentError, 'chart_type must inherit from Chart' unless [Chart, LineChart].include?(chart_type.superclass)
14
+ @chart_type = chart_type
15
+ initialize_defaults
16
+ parse_options options
17
+ end
18
+
19
+ # These attributes are all boolean so I'm doing a bit of a hand
20
+ # waving magic show to set up the attriubte accessors
21
+ # @note
22
+ # not all charts support all methods!
23
+ # Bar3DChart and Line3DChart and ScatterChart do not support d_lbl_pos or show_leader_lines
24
+ #
25
+ boolean_attr_accessor :show_legend_key,
26
+ :show_val,
27
+ :show_cat_name,
28
+ :show_ser_name,
29
+ :show_percent,
30
+ :show_bubble_size,
31
+ :show_leader_lines
32
+
33
+ # Initialize all the values to false as Excel requires them to
34
+ # explicitly be disabled or all will show.
35
+ def initialize_defaults
36
+ [:show_legend_key, :show_val, :show_cat_name,
37
+ :show_ser_name, :show_percent, :show_bubble_size,
38
+ :show_leader_lines].each do |attr|
39
+ self.send("#{attr}=", false)
40
+ end
41
+ end
42
+
43
+ # The chart type that is using this data lables instance.
44
+ # This affects the xml output as not all chart types support the
45
+ # same data label attributes.
46
+ attr_reader :chart_type
47
+
48
+ # The position of the data labels in the chart
49
+ # @see d_lbl_pos= for a list of allowed values
50
+ # @return [Symbol]
51
+ def d_lbl_pos
52
+ return unless [Pie3DChart, LineChart].include? @chart_type
53
+ @d_lbl_pos ||= :bestFit
54
+ end
55
+
56
+ # @see DLbls#d_lbl_pos
57
+ # Assigns the label postion for this data labels on this chart.
58
+ # Allowed positions are :bestFit, :b, :ctr, :inBase, :inEnd, :l,
59
+ # :outEnd, :r and :t
60
+ # The default is :bestFit
61
+ # @param [Symbol] label_position the postion you want to use.
62
+ def d_lbl_pos=(label_position)
63
+ return unless [Pie3DChart, LineChart].include? @chart_type
64
+ Axlsx::RestrictionValidator.validate 'DLbls#d_lbl_pos', [:bestFit, :b, :ctr, :inBase, :inEnd, :l, :outEnd, :r, :t], label_position
65
+ @d_lbl_pos = label_position
66
+ end
67
+
68
+
69
+ # serializes the data labels
70
+ # @return [String]
71
+ def to_xml_string(str = '')
72
+ validate_attributes_for_chart_type
73
+ str << '<c:dLbls>'
74
+ instance_vals = Axlsx.instance_values_for(self)
75
+ %w(d_lbl_pos show_legend_key show_val show_cat_name show_ser_name show_percent show_bubble_size show_leader_lines).each do |key|
76
+ next unless instance_vals.keys.include?(key) && instance_vals[key] != nil
77
+ str << "<c:#{Axlsx::camel(key, false)} val='#{instance_vals[key]}' />"
78
+ end
79
+ str << '</c:dLbls>'
80
+ end
81
+
82
+ # nills out d_lbl_pos and show_leader_lines as these attributes, while valid in the spec actually chrash excel for any chart type other than pie charts.
83
+ def validate_attributes_for_chart_type
84
+ return if [Pie3DChart, LineChart].include? @chart_type
85
+ @d_lbl_pos = nil
86
+ @show_leader_lines = nil
87
+ end
88
+
89
+
90
+ end
91
+ end
@@ -1,167 +1,167 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- require 'axlsx/drawing/d_lbls.rb'
4
- require 'axlsx/drawing/title.rb'
5
- require 'axlsx/drawing/series_title.rb'
6
- require 'axlsx/drawing/series.rb'
7
- require 'axlsx/drawing/pie_series.rb'
8
- require 'axlsx/drawing/bar_series.rb'
9
- require 'axlsx/drawing/line_series.rb'
10
- require 'axlsx/drawing/scatter_series.rb'
11
- require 'axlsx/drawing/bubble_series.rb'
12
- require 'axlsx/drawing/area_series.rb'
13
-
14
- require 'axlsx/drawing/scaling.rb'
15
- require 'axlsx/drawing/axis.rb'
16
-
17
- require 'axlsx/drawing/str_val.rb'
18
- require 'axlsx/drawing/num_val.rb'
19
- require 'axlsx/drawing/str_data.rb'
20
- require 'axlsx/drawing/num_data.rb'
21
- require 'axlsx/drawing/num_data_source.rb'
22
- require 'axlsx/drawing/ax_data_source.rb'
23
-
24
- require 'axlsx/drawing/ser_axis.rb'
25
- require 'axlsx/drawing/cat_axis.rb'
26
- require 'axlsx/drawing/val_axis.rb'
27
- require 'axlsx/drawing/axes.rb'
28
-
29
- require 'axlsx/drawing/marker.rb'
30
-
31
- require 'axlsx/drawing/one_cell_anchor.rb'
32
- require 'axlsx/drawing/two_cell_anchor.rb'
33
- require 'axlsx/drawing/graphic_frame.rb'
34
-
35
- require 'axlsx/drawing/view_3D.rb'
36
- require 'axlsx/drawing/chart.rb'
37
- require 'axlsx/drawing/pie_3D_chart.rb'
38
- require 'axlsx/drawing/bar_3D_chart.rb'
39
- require 'axlsx/drawing/bar_chart.rb'
40
- require 'axlsx/drawing/line_chart.rb'
41
- require 'axlsx/drawing/line_3D_chart.rb'
42
- require 'axlsx/drawing/scatter_chart.rb'
43
- require 'axlsx/drawing/bubble_chart.rb'
44
- require 'axlsx/drawing/area_chart.rb'
45
-
46
- require 'axlsx/drawing/picture_locking.rb'
47
- require 'axlsx/drawing/pic.rb'
48
- require 'axlsx/drawing/hyperlink.rb'
49
-
50
- require 'axlsx/drawing/vml_drawing.rb'
51
- require 'axlsx/drawing/vml_shape.rb'
52
-
53
- # A Drawing is a canvas for charts and images. Each worksheet has a single drawing that manages anchors.
54
- # The anchors reference the charts or images via graphical frames. This is not a trivial relationship so please do follow the advice in the note.
55
- # @note The recommended way to manage drawings is to use the Worksheet.add_chart and Worksheet.add_image methods.
56
- # @see Worksheet#add_chart
57
- # @see Worksheet#add_image
58
- # @see Chart
59
- # see examples/example.rb for an example of how to create a chart.
60
- class Drawing
61
-
62
- # The worksheet that owns the drawing
63
- # @return [Worksheet]
64
- attr_reader :worksheet
65
-
66
- # A collection of anchors for this drawing
67
- # only TwoCellAnchors are supported in this version
68
- # @return [SimpleTypedList]
69
- attr_reader :anchors
70
-
71
- # Creates a new Drawing object
72
- # @param [Worksheet] worksheet The worksheet that owns this drawing
73
- def initialize(worksheet)
74
- DataTypeValidator.validate "Drawing.worksheet", Worksheet, worksheet
75
- @worksheet = worksheet
76
- @worksheet.workbook.drawings << self
77
- @anchors = SimpleTypedList.new [TwoCellAnchor, OneCellAnchor]
78
- end
79
-
80
-
81
- # Adds an image to the chart If th end_at option is specified we create a two cell anchor. By default we use a one cell anchor.
82
- # @note The recommended way to manage images is to use Worksheet.add_image. Please refer to that method for documentation.
83
- # @see Worksheet#add_image
84
- # @return [Pic]
85
- def add_image(options={})
86
- if options[:end_at]
87
- TwoCellAnchor.new(self, options).add_pic(options)
88
- else
89
- OneCellAnchor.new(self, options)
90
- end
91
- @anchors.last.object
92
- end
93
-
94
- # Adds a chart to the drawing.
95
- # @note The recommended way to manage charts is to use Worksheet.add_chart. Please refer to that method for documentation.
96
- # @see Worksheet#add_chart
97
- def add_chart(chart_type, options={})
98
- TwoCellAnchor.new(self, options)
99
- @anchors.last.add_chart(chart_type, options)
100
- end
101
-
102
- # An array of charts that are associated with this drawing's anchors
103
- # @return [Array]
104
- def charts
105
- charts = @anchors.select { |a| a.object.is_a?(GraphicFrame) }
106
- charts.map { |a| a.object.chart }
107
- end
108
-
109
- # An array of hyperlink objects associated with this drawings images
110
- # @return [Array]
111
- def hyperlinks
112
- links = self.images.select { |a| a.hyperlink.is_a?(Hyperlink) }
113
- links.map { |a| a.hyperlink }
114
- end
115
-
116
- # An array of image objects that are associated with this drawing's anchors
117
- # @return [Array]
118
- def images
119
- images = @anchors.select { |a| a.object.is_a?(Pic) }
120
- images.map { |a| a.object }
121
- end
122
-
123
- # The index of this drawing in the owning workbooks's drawings collection.
124
- # @return [Integer]
125
- def index
126
- @worksheet.workbook.drawings.index(self)
127
- end
128
-
129
- # The part name for this drawing
130
- # @return [String]
131
- def pn
132
- "#{DRAWING_PN % (index+1)}"
133
- end
134
-
135
- # The relational part name for this drawing
136
- # #NOTE This should be rewritten to return an Axlsx::Relationship object.
137
- # @return [String]
138
- def rels_pn
139
- "#{DRAWING_RELS_PN % (index+1)}"
140
- end
141
-
142
- # A list of objects this drawing holds.
143
- # @return [Array]
144
- def child_objects
145
- charts + images + hyperlinks
146
- end
147
-
148
- # The drawing's relationships.
149
- # @return [Relationships]
150
- def relationships
151
- r = Relationships.new
152
- child_objects.each { |child| r << child.relationship }
153
- r
154
- end
155
-
156
- # Serializes the object
157
- # @param [String] str
158
- # @return [String]
159
- def to_xml_string(str = '')
160
- str << '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
161
- str << ('<xdr:wsDr xmlns:xdr="' << XML_NS_XDR << '" xmlns:a="' << XML_NS_A << '">')
162
- anchors.each { |anchor| anchor.to_xml_string(str) }
163
- str << '</xdr:wsDr>'
164
- end
165
-
166
- end
167
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ require 'axlsx/drawing/d_lbls.rb'
4
+ require 'axlsx/drawing/title.rb'
5
+ require 'axlsx/drawing/series_title.rb'
6
+ require 'axlsx/drawing/series.rb'
7
+ require 'axlsx/drawing/pie_series.rb'
8
+ require 'axlsx/drawing/bar_series.rb'
9
+ require 'axlsx/drawing/line_series.rb'
10
+ require 'axlsx/drawing/scatter_series.rb'
11
+ require 'axlsx/drawing/bubble_series.rb'
12
+ require 'axlsx/drawing/area_series.rb'
13
+
14
+ require 'axlsx/drawing/scaling.rb'
15
+ require 'axlsx/drawing/axis.rb'
16
+
17
+ require 'axlsx/drawing/str_val.rb'
18
+ require 'axlsx/drawing/num_val.rb'
19
+ require 'axlsx/drawing/str_data.rb'
20
+ require 'axlsx/drawing/num_data.rb'
21
+ require 'axlsx/drawing/num_data_source.rb'
22
+ require 'axlsx/drawing/ax_data_source.rb'
23
+
24
+ require 'axlsx/drawing/ser_axis.rb'
25
+ require 'axlsx/drawing/cat_axis.rb'
26
+ require 'axlsx/drawing/val_axis.rb'
27
+ require 'axlsx/drawing/axes.rb'
28
+
29
+ require 'axlsx/drawing/marker.rb'
30
+
31
+ require 'axlsx/drawing/one_cell_anchor.rb'
32
+ require 'axlsx/drawing/two_cell_anchor.rb'
33
+ require 'axlsx/drawing/graphic_frame.rb'
34
+
35
+ require 'axlsx/drawing/view_3D.rb'
36
+ require 'axlsx/drawing/chart.rb'
37
+ require 'axlsx/drawing/pie_3D_chart.rb'
38
+ require 'axlsx/drawing/bar_3D_chart.rb'
39
+ require 'axlsx/drawing/bar_chart.rb'
40
+ require 'axlsx/drawing/line_chart.rb'
41
+ require 'axlsx/drawing/line_3D_chart.rb'
42
+ require 'axlsx/drawing/scatter_chart.rb'
43
+ require 'axlsx/drawing/bubble_chart.rb'
44
+ require 'axlsx/drawing/area_chart.rb'
45
+
46
+ require 'axlsx/drawing/picture_locking.rb'
47
+ require 'axlsx/drawing/pic.rb'
48
+ require 'axlsx/drawing/hyperlink.rb'
49
+
50
+ require 'axlsx/drawing/vml_drawing.rb'
51
+ require 'axlsx/drawing/vml_shape.rb'
52
+
53
+ # A Drawing is a canvas for charts and images. Each worksheet has a single drawing that manages anchors.
54
+ # The anchors reference the charts or images via graphical frames. This is not a trivial relationship so please do follow the advice in the note.
55
+ # @note The recommended way to manage drawings is to use the Worksheet.add_chart and Worksheet.add_image methods.
56
+ # @see Worksheet#add_chart
57
+ # @see Worksheet#add_image
58
+ # @see Chart
59
+ # see examples/example.rb for an example of how to create a chart.
60
+ class Drawing
61
+
62
+ # The worksheet that owns the drawing
63
+ # @return [Worksheet]
64
+ attr_reader :worksheet
65
+
66
+ # A collection of anchors for this drawing
67
+ # only TwoCellAnchors are supported in this version
68
+ # @return [SimpleTypedList]
69
+ attr_reader :anchors
70
+
71
+ # Creates a new Drawing object
72
+ # @param [Worksheet] worksheet The worksheet that owns this drawing
73
+ def initialize(worksheet)
74
+ DataTypeValidator.validate "Drawing.worksheet", Worksheet, worksheet
75
+ @worksheet = worksheet
76
+ @worksheet.workbook.drawings << self
77
+ @anchors = SimpleTypedList.new [TwoCellAnchor, OneCellAnchor]
78
+ end
79
+
80
+
81
+ # Adds an image to the chart If th end_at option is specified we create a two cell anchor. By default we use a one cell anchor.
82
+ # @note The recommended way to manage images is to use Worksheet.add_image. Please refer to that method for documentation.
83
+ # @see Worksheet#add_image
84
+ # @return [Pic]
85
+ def add_image(options={})
86
+ if options[:end_at]
87
+ TwoCellAnchor.new(self, options).add_pic(options)
88
+ else
89
+ OneCellAnchor.new(self, options)
90
+ end
91
+ @anchors.last.object
92
+ end
93
+
94
+ # Adds a chart to the drawing.
95
+ # @note The recommended way to manage charts is to use Worksheet.add_chart. Please refer to that method for documentation.
96
+ # @see Worksheet#add_chart
97
+ def add_chart(chart_type, options={})
98
+ TwoCellAnchor.new(self, options)
99
+ @anchors.last.add_chart(chart_type, options)
100
+ end
101
+
102
+ # An array of charts that are associated with this drawing's anchors
103
+ # @return [Array]
104
+ def charts
105
+ charts = @anchors.select { |a| a.object.is_a?(GraphicFrame) }
106
+ charts.map { |a| a.object.chart }
107
+ end
108
+
109
+ # An array of hyperlink objects associated with this drawings images
110
+ # @return [Array]
111
+ def hyperlinks
112
+ links = self.images.select { |a| a.hyperlink.is_a?(Hyperlink) }
113
+ links.map { |a| a.hyperlink }
114
+ end
115
+
116
+ # An array of image objects that are associated with this drawing's anchors
117
+ # @return [Array]
118
+ def images
119
+ images = @anchors.select { |a| a.object.is_a?(Pic) }
120
+ images.map { |a| a.object }
121
+ end
122
+
123
+ # The index of this drawing in the owning workbooks's drawings collection.
124
+ # @return [Integer]
125
+ def index
126
+ @worksheet.workbook.drawings.index(self)
127
+ end
128
+
129
+ # The part name for this drawing
130
+ # @return [String]
131
+ def pn
132
+ "#{DRAWING_PN % (index+1)}"
133
+ end
134
+
135
+ # The relational part name for this drawing
136
+ # #NOTE This should be rewritten to return an Axlsx::Relationship object.
137
+ # @return [String]
138
+ def rels_pn
139
+ "#{DRAWING_RELS_PN % (index+1)}"
140
+ end
141
+
142
+ # A list of objects this drawing holds.
143
+ # @return [Array]
144
+ def child_objects
145
+ charts + images + hyperlinks
146
+ end
147
+
148
+ # The drawing's relationships.
149
+ # @return [Relationships]
150
+ def relationships
151
+ r = Relationships.new
152
+ child_objects.each { |child| r << child.relationship }
153
+ r
154
+ end
155
+
156
+ # Serializes the object
157
+ # @param [String] str
158
+ # @return [String]
159
+ def to_xml_string(str = '')
160
+ str << '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
161
+ str << ('<xdr:wsDr xmlns:xdr="' << XML_NS_XDR << '" xmlns:a="' << XML_NS_A << '">')
162
+ anchors.each { |anchor| anchor.to_xml_string(str) }
163
+ str << '</xdr:wsDr>'
164
+ end
165
+
166
+ end
167
+ end
@@ -1,54 +1,54 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # A graphic frame defines a container for a chart object
4
- # @note The recommended way to manage charts is Worksheet#add_chart
5
- # @see Worksheet#add_chart
6
- class GraphicFrame
7
-
8
- # A reference to the chart object associated with this frame
9
- # @return [Chart]
10
- attr_reader :chart
11
-
12
- # A anchor that holds this frame
13
- # @return [TwoCellAnchor]
14
- attr_reader :anchor
15
-
16
- # Creates a new GraphicFrame object
17
- # @param [TwoCellAnchor] anchor
18
- # @param [Class] chart_type
19
- def initialize(anchor, chart_type, options)
20
- DataTypeValidator.validate "Drawing.chart_type", Chart, chart_type
21
- @anchor = anchor
22
- @chart = chart_type.new(self, options)
23
- end
24
-
25
- # The relationship id for this graphic frame.
26
- # @return [String]
27
- def rId
28
- @anchor.drawing.relationships.for(chart).Id
29
- end
30
-
31
- # Serializes the object
32
- # @param [String] str
33
- # @return [String]
34
- def to_xml_string(str = '')
35
- # macro attribute should be optional!
36
- str << '<xdr:graphicFrame>'
37
- str << '<xdr:nvGraphicFramePr>'
38
- str << ('<xdr:cNvPr id="' << @anchor.drawing.index.to_s << '" name="' << 'item_' << @anchor.drawing.index.to_s << '"/>')
39
- str << '<xdr:cNvGraphicFramePr/>'
40
- str << '</xdr:nvGraphicFramePr>'
41
- str << '<xdr:xfrm>'
42
- str << '<a:off x="0" y="0"/>'
43
- str << '<a:ext cx="0" cy="0"/>'
44
- str << '</xdr:xfrm>'
45
- str << '<a:graphic>'
46
- str << ('<a:graphicData uri="' << XML_NS_C << '">')
47
- str << ('<c:chart xmlns:c="' << XML_NS_C << '" xmlns:r="' << XML_NS_R << '" r:id="' << rId << '"/>')
48
- str << '</a:graphicData>'
49
- str << '</a:graphic>'
50
- str << '</xdr:graphicFrame>'
51
- end
52
-
53
- end
54
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # A graphic frame defines a container for a chart object
4
+ # @note The recommended way to manage charts is Worksheet#add_chart
5
+ # @see Worksheet#add_chart
6
+ class GraphicFrame
7
+
8
+ # A reference to the chart object associated with this frame
9
+ # @return [Chart]
10
+ attr_reader :chart
11
+
12
+ # A anchor that holds this frame
13
+ # @return [TwoCellAnchor]
14
+ attr_reader :anchor
15
+
16
+ # Creates a new GraphicFrame object
17
+ # @param [TwoCellAnchor] anchor
18
+ # @param [Class] chart_type
19
+ def initialize(anchor, chart_type, options)
20
+ DataTypeValidator.validate "Drawing.chart_type", Chart, chart_type
21
+ @anchor = anchor
22
+ @chart = chart_type.new(self, options)
23
+ end
24
+
25
+ # The relationship id for this graphic frame.
26
+ # @return [String]
27
+ def rId
28
+ @anchor.drawing.relationships.for(chart).Id
29
+ end
30
+
31
+ # Serializes the object
32
+ # @param [String] str
33
+ # @return [String]
34
+ def to_xml_string(str = '')
35
+ # macro attribute should be optional!
36
+ str << '<xdr:graphicFrame>'
37
+ str << '<xdr:nvGraphicFramePr>'
38
+ str << ('<xdr:cNvPr id="' << @anchor.drawing.index.to_s << '" name="' << 'item_' << @anchor.drawing.index.to_s << '"/>')
39
+ str << '<xdr:cNvGraphicFramePr/>'
40
+ str << '</xdr:nvGraphicFramePr>'
41
+ str << '<xdr:xfrm>'
42
+ str << '<a:off x="0" y="0"/>'
43
+ str << '<a:ext cx="0" cy="0"/>'
44
+ str << '</xdr:xfrm>'
45
+ str << '<a:graphic>'
46
+ str << ('<a:graphicData uri="' << XML_NS_C << '">')
47
+ str << ('<c:chart xmlns:c="' << XML_NS_C << '" xmlns:r="' << XML_NS_R << '" r:id="' << rId << '"/>')
48
+ str << '</a:graphicData>'
49
+ str << '</a:graphic>'
50
+ str << '</xdr:graphicFrame>'
51
+ end
52
+
53
+ end
54
+ end