caxlsx 2.0.2

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 (305) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +9 -0
  3. data/.yardopts_guide +19 -0
  4. data/CHANGELOG.md +239 -0
  5. data/LICENSE +22 -0
  6. data/README.md +256 -0
  7. data/Rakefile +31 -0
  8. data/examples/2010_comments.rb +17 -0
  9. data/examples/anchor_swapping.rb +28 -0
  10. data/examples/auto_filter.rb +16 -0
  11. data/examples/basic_charts.rb +58 -0
  12. data/examples/chart_colors.rb +88 -0
  13. data/examples/colored_links.rb +59 -0
  14. data/examples/conditional_formatting/example_conditional_formatting.rb +74 -0
  15. data/examples/conditional_formatting/getting_barred.rb +37 -0
  16. data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
  17. data/examples/conditional_formatting/scaled_colors.rb +39 -0
  18. data/examples/conditional_formatting/stop_and_go.rb +37 -0
  19. data/examples/data_validation.rb +50 -0
  20. data/examples/example.rb +777 -0
  21. data/examples/extractive.rb +45 -0
  22. data/examples/image1.jpeg +0 -0
  23. data/examples/ios_preview.rb +14 -0
  24. data/examples/page_setup.rb +11 -0
  25. data/examples/pivot_table.rb +39 -0
  26. data/examples/sheet_protection.rb +10 -0
  27. data/examples/skydrive/real_example.rb +63 -0
  28. data/examples/styles.rb +66 -0
  29. data/examples/underline.rb +13 -0
  30. data/examples/wrap_text.rb +21 -0
  31. data/lib/axlsx.rb +152 -0
  32. data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
  33. data/lib/axlsx/content_type/content_type.rb +26 -0
  34. data/lib/axlsx/content_type/default.rb +25 -0
  35. data/lib/axlsx/content_type/override.rb +25 -0
  36. data/lib/axlsx/doc_props/app.rb +235 -0
  37. data/lib/axlsx/doc_props/core.rb +39 -0
  38. data/lib/axlsx/drawing/ax_data_source.rb +26 -0
  39. data/lib/axlsx/drawing/axes.rb +61 -0
  40. data/lib/axlsx/drawing/axis.rb +187 -0
  41. data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
  42. data/lib/axlsx/drawing/bar_series.rb +82 -0
  43. data/lib/axlsx/drawing/cat_axis.rb +85 -0
  44. data/lib/axlsx/drawing/chart.rb +232 -0
  45. data/lib/axlsx/drawing/d_lbls.rb +90 -0
  46. data/lib/axlsx/drawing/drawing.rb +162 -0
  47. data/lib/axlsx/drawing/graphic_frame.rb +54 -0
  48. data/lib/axlsx/drawing/hyperlink.rb +102 -0
  49. data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
  50. data/lib/axlsx/drawing/line_chart.rb +99 -0
  51. data/lib/axlsx/drawing/line_series.rb +81 -0
  52. data/lib/axlsx/drawing/marker.rb +84 -0
  53. data/lib/axlsx/drawing/num_data.rb +52 -0
  54. data/lib/axlsx/drawing/num_data_source.rb +62 -0
  55. data/lib/axlsx/drawing/num_val.rb +32 -0
  56. data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
  57. data/lib/axlsx/drawing/pic.rb +205 -0
  58. data/lib/axlsx/drawing/picture_locking.rb +44 -0
  59. data/lib/axlsx/drawing/pie_3D_chart.rb +48 -0
  60. data/lib/axlsx/drawing/pie_series.rb +74 -0
  61. data/lib/axlsx/drawing/scaling.rb +60 -0
  62. data/lib/axlsx/drawing/scatter_chart.rb +74 -0
  63. data/lib/axlsx/drawing/scatter_series.rb +65 -0
  64. data/lib/axlsx/drawing/ser_axis.rb +45 -0
  65. data/lib/axlsx/drawing/series.rb +69 -0
  66. data/lib/axlsx/drawing/series_title.rb +23 -0
  67. data/lib/axlsx/drawing/str_data.rb +42 -0
  68. data/lib/axlsx/drawing/str_val.rb +32 -0
  69. data/lib/axlsx/drawing/title.rb +78 -0
  70. data/lib/axlsx/drawing/two_cell_anchor.rb +92 -0
  71. data/lib/axlsx/drawing/val_axis.rb +37 -0
  72. data/lib/axlsx/drawing/view_3D.rb +115 -0
  73. data/lib/axlsx/drawing/vml_drawing.rb +42 -0
  74. data/lib/axlsx/drawing/vml_shape.rb +66 -0
  75. data/lib/axlsx/package.rb +352 -0
  76. data/lib/axlsx/rels/relationship.rb +129 -0
  77. data/lib/axlsx/rels/relationships.rb +29 -0
  78. data/lib/axlsx/stylesheet/border.rb +71 -0
  79. data/lib/axlsx/stylesheet/border_pr.rb +71 -0
  80. data/lib/axlsx/stylesheet/cell_alignment.rb +134 -0
  81. data/lib/axlsx/stylesheet/cell_protection.rb +43 -0
  82. data/lib/axlsx/stylesheet/cell_style.rb +74 -0
  83. data/lib/axlsx/stylesheet/color.rb +78 -0
  84. data/lib/axlsx/stylesheet/dxf.rb +79 -0
  85. data/lib/axlsx/stylesheet/fill.rb +35 -0
  86. data/lib/axlsx/stylesheet/font.rb +148 -0
  87. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
  88. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
  89. data/lib/axlsx/stylesheet/num_fmt.rb +79 -0
  90. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
  91. data/lib/axlsx/stylesheet/styles.rb +420 -0
  92. data/lib/axlsx/stylesheet/table_style.rb +54 -0
  93. data/lib/axlsx/stylesheet/table_style_element.rb +79 -0
  94. data/lib/axlsx/stylesheet/table_styles.rb +46 -0
  95. data/lib/axlsx/stylesheet/xf.rb +147 -0
  96. data/lib/axlsx/util/accessors.rb +64 -0
  97. data/lib/axlsx/util/constants.rb +392 -0
  98. data/lib/axlsx/util/options_parser.rb +15 -0
  99. data/lib/axlsx/util/parser.rb +44 -0
  100. data/lib/axlsx/util/serialized_attributes.rb +79 -0
  101. data/lib/axlsx/util/simple_typed_list.rb +203 -0
  102. data/lib/axlsx/util/storage.rb +146 -0
  103. data/lib/axlsx/util/validators.rb +300 -0
  104. data/lib/axlsx/version.rb +5 -0
  105. data/lib/axlsx/workbook/defined_name.rb +129 -0
  106. data/lib/axlsx/workbook/defined_names.rb +21 -0
  107. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  108. data/lib/axlsx/workbook/workbook.rb +354 -0
  109. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  110. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  111. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +246 -0
  112. data/lib/axlsx/workbook/worksheet/break.rb +37 -0
  113. data/lib/axlsx/workbook/worksheet/cell.rb +416 -0
  114. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +144 -0
  115. data/lib/axlsx/workbook/worksheet/cfvo.rb +62 -0
  116. data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
  117. data/lib/axlsx/workbook/worksheet/col.rb +144 -0
  118. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  119. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  120. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  121. data/lib/axlsx/workbook/worksheet/comment.rb +92 -0
  122. data/lib/axlsx/workbook/worksheet/comments.rb +85 -0
  123. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  124. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  125. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  126. data/lib/axlsx/workbook/worksheet/data_bar.rb +131 -0
  127. data/lib/axlsx/workbook/worksheet/data_validation.rb +244 -0
  128. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  129. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  130. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  131. data/lib/axlsx/workbook/worksheet/header_footer.rb +54 -0
  132. data/lib/axlsx/workbook/worksheet/icon_set.rb +83 -0
  133. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  134. data/lib/axlsx/workbook/worksheet/page_margins.rb +99 -0
  135. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  136. data/lib/axlsx/workbook/worksheet/page_setup.rb +242 -0
  137. data/lib/axlsx/workbook/worksheet/pane.rb +141 -0
  138. data/lib/axlsx/workbook/worksheet/pivot_table.rb +273 -0
  139. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  140. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  141. data/lib/axlsx/workbook/worksheet/print_options.rb +41 -0
  142. data/lib/axlsx/workbook/worksheet/protected_range.rb +49 -0
  143. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  144. data/lib/axlsx/workbook/worksheet/row.rb +172 -0
  145. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  146. data/lib/axlsx/workbook/worksheet/selection.rb +103 -0
  147. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  148. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
  149. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  150. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
  151. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +120 -0
  152. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  153. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  154. data/lib/axlsx/workbook/worksheet/table_style_info.rb +51 -0
  155. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  156. data/lib/axlsx/workbook/worksheet/worksheet.rb +769 -0
  157. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  158. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  159. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  160. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  161. data/lib/schema/dc.xsd +118 -0
  162. data/lib/schema/dcmitype.xsd +52 -0
  163. data/lib/schema/dcterms.xsd +331 -0
  164. data/lib/schema/dml-chart.xsd +1499 -0
  165. data/lib/schema/dml-chartDrawing.xsd +146 -0
  166. data/lib/schema/dml-compatibility.xsd +14 -0
  167. data/lib/schema/dml-diagram.xsd +1091 -0
  168. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  169. data/lib/schema/dml-main.xsd +3048 -0
  170. data/lib/schema/dml-picture.xsd +23 -0
  171. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  172. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  173. data/lib/schema/opc-contentTypes.xsd +42 -0
  174. data/lib/schema/opc-coreProperties.xsd +54 -0
  175. data/lib/schema/opc-digSig.xsd +49 -0
  176. data/lib/schema/opc-relationships.xsd +33 -0
  177. data/lib/schema/pml.xsd +1676 -0
  178. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  179. data/lib/schema/shared-bibliography.xsd +144 -0
  180. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  181. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  182. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  183. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  184. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  185. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  186. data/lib/schema/shared-math.xsd +582 -0
  187. data/lib/schema/shared-relationshipReference.xsd +25 -0
  188. data/lib/schema/sml.xsd +4434 -0
  189. data/lib/schema/vml-main.xsd +569 -0
  190. data/lib/schema/vml-officeDrawing.xsd +509 -0
  191. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  192. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  193. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  194. data/lib/schema/wml.xsd +3644 -0
  195. data/lib/schema/xml.xsd +116 -0
  196. data/test/benchmark.rb +72 -0
  197. data/test/content_type/tc_content_type.rb +76 -0
  198. data/test/content_type/tc_default.rb +16 -0
  199. data/test/content_type/tc_override.rb +14 -0
  200. data/test/doc_props/tc_app.rb +43 -0
  201. data/test/doc_props/tc_core.rb +42 -0
  202. data/test/drawing/tc_axes.rb +8 -0
  203. data/test/drawing/tc_axis.rb +85 -0
  204. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  205. data/test/drawing/tc_bar_series.rb +37 -0
  206. data/test/drawing/tc_cat_axis.rb +31 -0
  207. data/test/drawing/tc_cat_axis_data.rb +27 -0
  208. data/test/drawing/tc_chart.rb +110 -0
  209. data/test/drawing/tc_d_lbls.rb +57 -0
  210. data/test/drawing/tc_data_source.rb +17 -0
  211. data/test/drawing/tc_drawing.rb +80 -0
  212. data/test/drawing/tc_graphic_frame.rb +27 -0
  213. data/test/drawing/tc_hyperlink.rb +64 -0
  214. data/test/drawing/tc_line_3d_chart.rb +47 -0
  215. data/test/drawing/tc_line_chart.rb +39 -0
  216. data/test/drawing/tc_line_series.rb +30 -0
  217. data/test/drawing/tc_marker.rb +44 -0
  218. data/test/drawing/tc_named_axis_data.rb +27 -0
  219. data/test/drawing/tc_num_data.rb +31 -0
  220. data/test/drawing/tc_num_val.rb +29 -0
  221. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  222. data/test/drawing/tc_pic.rb +107 -0
  223. data/test/drawing/tc_picture_locking.rb +72 -0
  224. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  225. data/test/drawing/tc_pie_series.rb +32 -0
  226. data/test/drawing/tc_scaling.rb +36 -0
  227. data/test/drawing/tc_scatter_chart.rb +48 -0
  228. data/test/drawing/tc_scatter_series.rb +21 -0
  229. data/test/drawing/tc_ser_axis.rb +31 -0
  230. data/test/drawing/tc_series.rb +23 -0
  231. data/test/drawing/tc_series_title.rb +33 -0
  232. data/test/drawing/tc_str_data.rb +18 -0
  233. data/test/drawing/tc_str_val.rb +21 -0
  234. data/test/drawing/tc_title.rb +49 -0
  235. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  236. data/test/drawing/tc_val_axis.rb +24 -0
  237. data/test/drawing/tc_view_3D.rb +54 -0
  238. data/test/drawing/tc_vml_drawing.rb +25 -0
  239. data/test/drawing/tc_vml_shape.rb +106 -0
  240. data/test/profile.rb +24 -0
  241. data/test/rels/tc_relationship.rb +44 -0
  242. data/test/rels/tc_relationships.rb +37 -0
  243. data/test/stylesheet/tc_border.rb +37 -0
  244. data/test/stylesheet/tc_border_pr.rb +32 -0
  245. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  246. data/test/stylesheet/tc_cell_protection.rb +29 -0
  247. data/test/stylesheet/tc_cell_style.rb +57 -0
  248. data/test/stylesheet/tc_color.rb +43 -0
  249. data/test/stylesheet/tc_dxf.rb +81 -0
  250. data/test/stylesheet/tc_fill.rb +18 -0
  251. data/test/stylesheet/tc_font.rb +121 -0
  252. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  253. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  254. data/test/stylesheet/tc_num_fmt.rb +30 -0
  255. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  256. data/test/stylesheet/tc_styles.rb +235 -0
  257. data/test/stylesheet/tc_table_style.rb +44 -0
  258. data/test/stylesheet/tc_table_style_element.rb +45 -0
  259. data/test/stylesheet/tc_table_styles.rb +29 -0
  260. data/test/stylesheet/tc_xf.rb +120 -0
  261. data/test/tc_axlsx.rb +72 -0
  262. data/test/tc_helper.rb +10 -0
  263. data/test/tc_package.rb +227 -0
  264. data/test/util/tc_serialized_attributes.rb +19 -0
  265. data/test/util/tc_simple_typed_list.rb +78 -0
  266. data/test/util/tc_validators.rb +186 -0
  267. data/test/workbook/tc_defined_name.rb +41 -0
  268. data/test/workbook/tc_shared_strings_table.rb +44 -0
  269. data/test/workbook/tc_workbook.rb +125 -0
  270. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  271. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  272. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  273. data/test/workbook/worksheet/tc_break.rb +49 -0
  274. data/test/workbook/worksheet/tc_cell.rb +319 -0
  275. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  276. data/test/workbook/worksheet/tc_col.rb +78 -0
  277. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  278. data/test/workbook/worksheet/tc_comment.rb +72 -0
  279. data/test/workbook/worksheet/tc_comments.rb +57 -0
  280. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  281. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  282. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  283. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  284. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  285. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  286. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  287. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  288. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  289. data/test/workbook/worksheet/tc_pane.rb +54 -0
  290. data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
  291. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  292. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  293. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  294. data/test/workbook/worksheet/tc_row.rb +117 -0
  295. data/test/workbook/worksheet/tc_selection.rb +55 -0
  296. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  297. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  298. data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
  299. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  300. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  301. data/test/workbook/worksheet/tc_table.rb +68 -0
  302. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  303. data/test/workbook/worksheet/tc_worksheet.rb +538 -0
  304. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  305. metadata +546 -0
@@ -0,0 +1,79 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # The Dxf class defines an incremental formatting record for use in Styles. The recommended way to manage styles for your workbook is with Styles#add_style
4
+ # @see Styles#add_style
5
+ class Dxf
6
+
7
+ include Axlsx::OptionsParser
8
+
9
+ # The order in which the child elements is put in the XML seems to
10
+ # be important for Excel
11
+ CHILD_ELEMENTS = [:font, :numFmt, :fill, :alignment, :border, :protection]
12
+ #does not support extList (ExtensionList)
13
+
14
+ # The cell alignment for this style
15
+ # @return [CellAlignment]
16
+ # @see CellAlignment
17
+ attr_reader :alignment
18
+
19
+ # The cell protection for this style
20
+ # @return [CellProtection]
21
+ # @see CellProtection
22
+ attr_reader :protection
23
+
24
+ # the child NumFmt to be used to this style
25
+ # @return [NumFmt]
26
+ attr_reader :numFmt
27
+
28
+ # the child font to be used for this style
29
+ # @return [Font]
30
+ attr_reader :font
31
+
32
+ # the child fill to be used in this style
33
+ # @return [Fill]
34
+ attr_reader :fill
35
+
36
+ # the border to be used in this style
37
+ # @return [Border]
38
+ attr_reader :border
39
+
40
+ # Creates a new Xf object
41
+ # @option options [Border] border
42
+ # @option options [NumFmt] numFmt
43
+ # @option options [Fill] fill
44
+ # @option options [Font] font
45
+ # @option options [CellAlignment] alignment
46
+ # @option options [CellProtection] protection
47
+ def initialize(options={})
48
+ parse_options options
49
+ end
50
+
51
+ # @see Dxf#alignment
52
+ def alignment=(v) DataTypeValidator.validate "Dxf.alignment", CellAlignment, v; @alignment = v end
53
+ # @see protection
54
+ def protection=(v) DataTypeValidator.validate "Dxf.protection", CellProtection, v; @protection = v end
55
+ # @see numFmt
56
+ def numFmt=(v) DataTypeValidator.validate "Dxf.numFmt", NumFmt, v; @numFmt = v end
57
+ # @see font
58
+ def font=(v) DataTypeValidator.validate "Dxf.font", Font, v; @font = v end
59
+ # @see border
60
+ def border=(v) DataTypeValidator.validate "Dxf.border", Border, v; @border = v end
61
+ # @see fill
62
+ def fill=(v) DataTypeValidator.validate "Dxf.fill", Fill, v; @fill = v end
63
+
64
+ # Serializes the object
65
+ # @param [String] str
66
+ # @return [String]
67
+ def to_xml_string(str = '')
68
+ str << '<dxf>'
69
+ # Dxf elements have no attributes. All of the instance variables
70
+ # are child elements.
71
+ CHILD_ELEMENTS.each do |element|
72
+ self.send(element).to_xml_string(str) if self.send(element)
73
+ end
74
+ str << '</dxf>'
75
+ end
76
+
77
+ end
78
+
79
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # The Fill is a formatting object that manages the background color, and pattern for cells.
4
+ # @note The recommended way to manage styles in your workbook is to use Styles#add_style.
5
+ # @see Styles#add_style
6
+ # @see PatternFill
7
+ # @see GradientFill
8
+ class Fill
9
+
10
+ # The type of fill
11
+ # @return [PatternFill, GradientFill]
12
+ attr_reader :fill_type
13
+
14
+ # Creates a new Fill object
15
+ # @param [PatternFill, GradientFill] fill_type
16
+ # @raise [ArgumentError] if the fill_type parameter is not a PatternFill or a GradientFill instance
17
+ def initialize(fill_type)
18
+ self.fill_type = fill_type
19
+ end
20
+
21
+ # Serializes the object
22
+ # @param [String] str
23
+ # @return [String]
24
+ def to_xml_string(str = '')
25
+ str << '<fill>'
26
+ @fill_type.to_xml_string(str)
27
+ str << '</fill>'
28
+ end
29
+
30
+ # @see fill_type
31
+ def fill_type=(v) DataTypeValidator.validate "Fill.fill_type", [PatternFill, GradientFill], v; @fill_type = v; end
32
+
33
+
34
+ end
35
+ end
@@ -0,0 +1,148 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # The Font class details a font instance for use in styling cells.
4
+ # @note The recommended way to manage fonts, and other styles is Styles#add_style
5
+ # @see Styles#add_style
6
+ class Font
7
+ include Axlsx::OptionsParser
8
+
9
+ # Creates a new Font
10
+ # @option options [String] name
11
+ # @option options [Integer] charset
12
+ # @option options [Integer] family
13
+ # @option options [Integer] family
14
+ # @option options [Boolean] b
15
+ # @option options [Boolean] i
16
+ # @option options [Boolean] u
17
+ # @option options [Boolean] strike
18
+ # @option options [Boolean] outline
19
+ # @option options [Boolean] shadow
20
+ # @option options [Boolean] condense
21
+ # @option options [Boolean] extend
22
+ # @option options [Color] color
23
+ # @option options [Integer] sz
24
+ def initialize(options={})
25
+ parse_options options
26
+ end
27
+
28
+ # The name of the font
29
+ # @return [String]
30
+ attr_reader :name
31
+
32
+ # The charset of the font
33
+ # @return [Integer]
34
+ # @note
35
+ # The following values are defined in the OOXML specification and are OS dependant values
36
+ # 0 ANSI_CHARSET
37
+ # 1 DEFAULT_CHARSET
38
+ # 2 SYMBOL_CHARSET
39
+ # 77 MAC_CHARSET
40
+ # 128 SHIFTJIS_CHARSET
41
+ # 129 HANGUL_CHARSET
42
+ # 130 JOHAB_CHARSET
43
+ # 134 GB2312_CHARSET
44
+ # 136 CHINESEBIG5_CHARSET
45
+ # 161 GREEK_CHARSET
46
+ # 162 TURKISH_CHARSET
47
+ # 163 VIETNAMESE_CHARSET
48
+ # 177 HEBREW_CHARSET
49
+ # 178 ARABIC_CHARSET
50
+ # 186 BALTIC_CHARSET
51
+ # 204 RUSSIAN_CHARSET
52
+ # 222 THAI_CHARSET
53
+ # 238 EASTEUROPE_CHARSET
54
+ # 255 OEM_CHARSET
55
+ attr_reader :charset
56
+
57
+ # The font's family
58
+ # @note
59
+ # The following are defined OOXML specification
60
+ # 0 Not applicable.
61
+ # 1 Roman
62
+ # 2 Swiss
63
+ # 3 Modern
64
+ # 4 Script
65
+ # 5 Decorative
66
+ # 6..14 Reserved for future use
67
+ # @return [Integer]
68
+ attr_reader :family
69
+
70
+ # Indicates if the font should be rendered in *bold*
71
+ # @return [Boolean]
72
+ attr_reader :b
73
+
74
+ # Indicates if the font should be rendered italicized
75
+ # @return [Boolean]
76
+ attr_reader :i
77
+
78
+ # Indicates if the font should be rendered underlined
79
+ # @return [Boolean]
80
+ attr_reader :u
81
+
82
+ # Indicates if the font should be rendered with a strikthrough
83
+ # @return [Boolean]
84
+ attr_reader :strike
85
+
86
+ # Indicates if the font should be rendered with an outline
87
+ # @return [Boolean]
88
+ attr_reader :outline
89
+
90
+ # Indicates if the font should be rendered with a shadow
91
+ # @return [Boolean]
92
+ attr_reader :shadow
93
+
94
+ # Indicates if the font should be condensed
95
+ # @return [Boolean]
96
+ attr_reader :condense
97
+
98
+ # The font's extend property
99
+ # @return [Boolean]
100
+ attr_reader :extend
101
+
102
+ # The color of the font
103
+ # @return [Color]
104
+ attr_reader :color
105
+
106
+ # The size of the font.
107
+ # @return [Integer]
108
+ attr_reader :sz
109
+
110
+ # @see name
111
+ def name=(v) Axlsx::validate_string v; @name = v end
112
+ # @see charset
113
+ def charset=(v) Axlsx::validate_unsigned_int v; @charset = v end
114
+ # @see family
115
+ def family=(v) Axlsx::validate_unsigned_int v; @family = v end
116
+ # @see b
117
+ def b=(v) Axlsx::validate_boolean v; @b = v end
118
+ # @see i
119
+ def i=(v) Axlsx::validate_boolean v; @i = v end
120
+ # @see u
121
+ def u=(v) Axlsx::validate_boolean v; @u = v end
122
+ # @see strike
123
+ def strike=(v) Axlsx::validate_boolean v; @strike = v end
124
+ # @see outline
125
+ def outline=(v) Axlsx::validate_boolean v; @outline = v end
126
+ # @see shadow
127
+ def shadow=(v) Axlsx::validate_boolean v; @shadow = v end
128
+ # @see condense
129
+ def condense=(v) Axlsx::validate_boolean v; @condense = v end
130
+ # @see extend
131
+ def extend=(v) Axlsx::validate_boolean v; @extend = v end
132
+ # @see color
133
+ def color=(v) DataTypeValidator.validate "Font.color", Color, v; @color=v end
134
+ # @see sz
135
+ def sz=(v) Axlsx::validate_unsigned_int v; @sz=v end
136
+
137
+ # Serializes the object
138
+ # @param [String] str
139
+ # @return [String]
140
+ def to_xml_string(str = '')
141
+ str << '<font>'
142
+ instance_values.each do |k, v|
143
+ v.is_a?(Color) ? v.to_xml_string(str) : (str << '<' << k.to_s << ' val="' << v.to_s << '"/>')
144
+ end
145
+ str << '</font>'
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,103 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # A GradientFill defines the color and positioning for gradiant cell fill.
4
+ # @see Open Office XML Part 1 §18.8.24
5
+ class GradientFill
6
+
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+
10
+ # Creates a new GradientFill object
11
+ # @option options [Symbol] type
12
+ # @option options [Float] degree
13
+ # @option options [Float] left
14
+ # @option options [Float] right
15
+ # @option options [Float] top
16
+ # @option options [Float] bottom
17
+ def initialize(options={})
18
+ options[:type] ||= :linear
19
+ parse_options options
20
+ @stop = SimpleTypedList.new GradientStop
21
+ end
22
+
23
+ serializable_attributes :type, :degree, :left, :right, :top, :bottom
24
+
25
+ # The type of gradient.
26
+ # @note
27
+ # valid options are
28
+ # :linear
29
+ # :path
30
+ # @return [Symbol]
31
+ attr_reader :type
32
+
33
+ # Angle of the linear gradient
34
+ # @return [Float]
35
+ attr_reader :degree
36
+
37
+ # Percentage format left
38
+ # @return [Float]
39
+ attr_reader :left
40
+
41
+ # Percentage format right
42
+ # @return [Float]
43
+ attr_reader :right
44
+
45
+ # Percentage format top
46
+ # @return [Float]
47
+ attr_reader :top
48
+
49
+ # Percentage format bottom
50
+ # @return [Float]
51
+ attr_reader :bottom
52
+
53
+ # Collection of stop objects
54
+ # @return [SimpleTypedList]
55
+ attr_reader :stop
56
+
57
+ # @see type
58
+ def type=(v) Axlsx::validate_gradient_type v; @type = v end
59
+
60
+ # @see degree
61
+ def degree=(v) Axlsx::validate_float v; @degree = v end
62
+
63
+ # @see left
64
+ def left=(v)
65
+ validate_format_percentage "GradientFill.left", v
66
+ @left = v
67
+ end
68
+
69
+ # @see right
70
+ def right=(v)
71
+ validate_format_percentage "GradientFill.right", v
72
+ @right = v
73
+ end
74
+
75
+ # @see top
76
+ def top=(v)
77
+ validate_format_percentage "GradientFill.top", v
78
+ @top = v
79
+ end
80
+
81
+ # @see bottom
82
+ def bottom=(v)
83
+ validate_format_percentage "GradientFill.bottom", v
84
+ @bottom = v
85
+ end
86
+
87
+ # validates that the value provided is between 0.0 and 1.0
88
+ def validate_format_percentage(name, value)
89
+ DataTypeValidator.validate name, Float, value, lambda { |arg| arg >= 0.0 && arg <= 1.0}
90
+ end
91
+
92
+ # Serializes the object
93
+ # @param [String] str
94
+ # @return [String]
95
+ def to_xml_string(str = '')
96
+ str << '<gradientFill '
97
+ serialized_attributes str
98
+ str << '>'
99
+ @stop.each { |s| s.to_xml_string(str) }
100
+ str << '</gradientFill>'
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # The GradientStop object represents a color point in a gradient.
4
+ # @see Open Office XML Part 1 §18.8.24
5
+ class GradientStop
6
+ # The color for this gradient stop
7
+ # @return [Color]
8
+ # @see Color
9
+ attr_reader :color
10
+
11
+ # The position of the color
12
+ # @return [Float]
13
+ attr_reader :position
14
+
15
+ # Creates a new GradientStop object
16
+ # @param [Color] color
17
+ # @param [Float] position
18
+ def initialize(color, position)
19
+ self.color = color
20
+ self.position = position
21
+ end
22
+
23
+ # @see color
24
+ def color=(v) DataTypeValidator.validate "GradientStop.color", Color, v; @color=v end
25
+ # @see position
26
+ def position=(v) DataTypeValidator.validate "GradientStop.position", Float, v, lambda { |arg| arg >= 0 && arg <= 1}; @position = v end
27
+
28
+ # Serializes the object
29
+ # @param [String] str
30
+ # @return [String]
31
+ def to_xml_string(str = '')
32
+ str << '<stop position="' << position.to_s << '">'
33
+ self.color.to_xml_string(str)
34
+ str << '</stop>'
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,79 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # A NumFmt object defines an identifier and formatting code for data in cells.
4
+ # @note The recommended way to manage styles is Styles#add_style
5
+ class NumFmt
6
+
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+
10
+ # Creates a new NumFmt object
11
+ # @param [Hash] options Options for the number format object
12
+ # @option [Integer] numFmtId The predefined format id or new format id for this format
13
+ # @option [String] formatCode The format code for this number format
14
+ def initialize(options={})
15
+ @numFmtId = 0
16
+ @formatCode = ""
17
+ parse_options options
18
+ end
19
+
20
+ serializable_attributes :formatCode, :numFmtId
21
+
22
+ # @return [String] The formatting to use for this number format.
23
+ # @see http://support.microsoft.com/kb/264372
24
+ attr_reader :formatCode
25
+
26
+ # @return [Integer] An unsigned integer referencing a standard or custom number format.
27
+ # @note
28
+ # These are the known formats I can dig up. The constant NUM_FMT_PERCENT is 9, and uses the default % formatting. Axlsx also defines a few formats for date and time that are commonly used in asia as NUM_FMT_YYYYMMDD and NUM_FRM_YYYYMMDDHHMMSS.
29
+ # 1 0
30
+ # 2 0.00
31
+ # 3 #,##0
32
+ # 4 #,##0.00
33
+ # 5 $#,##0_);($#,##0)
34
+ # 6 $#,##0_);[Red]($#,##0)
35
+ # 7 $#,##0.00_);($#,##0.00)
36
+ # 8 $#,##0.00_);[Red]($#,##0.00)
37
+ # 9 0%
38
+ # 10 0.00%
39
+ # 11 0.00E+00
40
+ # 12 # ?/?
41
+ # 13 # ??/??
42
+ # 14 m/d/yyyy
43
+ # 15 d-mmm-yy
44
+ # 16 d-mmm
45
+ # 17 mmm-yy
46
+ # 18 h:mm AM/PM
47
+ # 19 h:mm:ss AM/PM
48
+ # 20 h:mm
49
+ # 21 h:mm:ss
50
+ # 22 m/d/yyyy h:mm
51
+ # 37 #,##0_);(#,##0)
52
+ # 38 #,##0_);[Red](#,##0)
53
+ # 39 #,##0.00_);(#,##0.00)
54
+ # 40 #,##0.00_);[Red](#,##0.00)
55
+ # 45 mm:ss
56
+ # 46 [h]:mm:ss
57
+ # 47 mm:ss.0
58
+ # 48 ##0.0E+0
59
+ # 49 @
60
+ # @see Axlsx
61
+ attr_reader :numFmtId
62
+
63
+ # @see numFmtId
64
+ def numFmtId=(v) Axlsx::validate_unsigned_int v; @numFmtId = v end
65
+
66
+ # @see formatCode
67
+ def formatCode=(v) Axlsx::validate_string v; @formatCode = v end
68
+
69
+ # Serializes the object
70
+ # @param [String] str
71
+ # @return [String]
72
+ def to_xml_string(str = '')
73
+ str << '<numFmt '
74
+ serialized_attributes str
75
+ str << '/>'
76
+ end
77
+
78
+ end
79
+ end