caxlsx 3.0.4 → 3.2.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -334
  5. data/LICENSE +21 -21
  6. data/README.md +168 -170
  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 -151
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -143
  22. data/lib/axlsx/drawing/bar_series.rb +97 -80
  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 +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -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 -98
  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 +97 -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 +388 -363
  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 -71
  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 +494 -420
  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 +410 -401
  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 +395 -370
  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/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -162
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -170
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -71
  186. data/test/drawing/tc_bar_chart.rb +86 -71
  187. data/test/drawing/tc_bar_series.rb +46 -37
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -12
  247. data/test/tc_package.rb +317 -264
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -139
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -67
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +11 -11
@@ -1,64 +1,64 @@
1
- module Axlsx
2
-
3
- # This class manages the dimensions for a worksheet.
4
- # While this node is optional in the specification some readers like
5
- # LibraOffice require this node to render the sheet
6
- class Dimension
7
-
8
- # the default value for the first cell in the dimension
9
- # @return [String]
10
- def self.default_first
11
- @@default_first ||= 'A1'
12
- end
13
-
14
- # the default value for the last cell in the dimension
15
- # @return [String]
16
- def self.default_last
17
- @@default_last ||= 'AA200'
18
- end
19
-
20
- # Creates a new dimension object
21
- # @param[Worksheet] worksheet - the worksheet this dimension applies
22
- # to.
23
- def initialize(worksheet)
24
- raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
25
- @worksheet = worksheet
26
- end
27
-
28
- attr_reader :worksheet
29
-
30
- # the full refernece for this dimension
31
- # @return [String]
32
- def sqref
33
- "#{first_cell_reference}:#{last_cell_reference}"
34
- end
35
-
36
- # serialize the object
37
- # @return [String]
38
- def to_xml_string(str = '')
39
- return if worksheet.rows.empty?
40
- str << "<dimension ref=\"%s\"></dimension>" % sqref
41
- end
42
-
43
- # The first cell in the dimension
44
- # @return [String]
45
- def first_cell_reference
46
- dimension_reference(worksheet.rows.first.first, Dimension.default_first)
47
- end
48
-
49
- # the last cell in the dimension
50
- # @return [String]
51
- def last_cell_reference
52
- dimension_reference(worksheet.rows.last.last, Dimension.default_last)
53
- end
54
-
55
- private
56
-
57
- # Returns the reference of a cell or the default specified
58
- # @return [String]
59
- def dimension_reference(cell, default)
60
- return default unless cell.respond_to?(:r)
61
- cell.r
62
- end
63
- end
64
- end
1
+ module Axlsx
2
+
3
+ # This class manages the dimensions for a worksheet.
4
+ # While this node is optional in the specification some readers like
5
+ # LibraOffice require this node to render the sheet
6
+ class Dimension
7
+
8
+ # the default value for the first cell in the dimension
9
+ # @return [String]
10
+ def self.default_first
11
+ @@default_first ||= 'A1'
12
+ end
13
+
14
+ # the default value for the last cell in the dimension
15
+ # @return [String]
16
+ def self.default_last
17
+ @@default_last ||= 'AA200'
18
+ end
19
+
20
+ # Creates a new dimension object
21
+ # @param[Worksheet] worksheet - the worksheet this dimension applies
22
+ # to.
23
+ def initialize(worksheet)
24
+ raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
25
+ @worksheet = worksheet
26
+ end
27
+
28
+ attr_reader :worksheet
29
+
30
+ # the full refernece for this dimension
31
+ # @return [String]
32
+ def sqref
33
+ "#{first_cell_reference}:#{last_cell_reference}"
34
+ end
35
+
36
+ # serialize the object
37
+ # @return [String]
38
+ def to_xml_string(str = '')
39
+ return if worksheet.rows.empty?
40
+ str << "<dimension ref=\"%s\"></dimension>" % sqref
41
+ end
42
+
43
+ # The first cell in the dimension
44
+ # @return [String]
45
+ def first_cell_reference
46
+ dimension_reference(worksheet.rows.first.first, Dimension.default_first)
47
+ end
48
+
49
+ # the last cell in the dimension
50
+ # @return [String]
51
+ def last_cell_reference
52
+ dimension_reference(worksheet.rows.last.last, Dimension.default_last)
53
+ end
54
+
55
+ private
56
+
57
+ # Returns the reference of a cell or the default specified
58
+ # @return [String]
59
+ def dimension_reference(cell, default)
60
+ return default unless cell.respond_to?(:r)
61
+ cell.r
62
+ end
63
+ end
64
+ end
@@ -1,52 +1,52 @@
1
- module Axlsx
2
- # Header/Footer options for printing a worksheet. All settings are optional.
3
- #
4
- # Headers and footers are generated using a string which is a combination
5
- # of plain text and control characters. A fairly comprehensive list of control
6
- # characters can be found here:
7
- # https://github.com/randym/axlsx/blob/master/notes_on_header_footer.md
8
- #     
9
- # @note The recommended way of managing header/footers is via Worksheet#header_footer
10
- # @see Worksheet#initialize
11
- class HeaderFooter
12
-
13
- include Axlsx::OptionsParser
14
- include Axlsx::SerializedAttributes
15
- include Axlsx::Accessors
16
-
17
- # Creates a new HeaderFooter object
18
- # @option options [String] odd_header The content for headers on odd numbered pages.
19
- # @option options [String] odd_footer The content for footers on odd numbered pages.
20
- # @option options [String] even_header The content for headers on even numbered pages.
21
- # @option options [String] even_footer The content for footers on even numbered pages.
22
- # @option options [String] first_header The content for headers on the first page.
23
- # @option options [String] first_footer The content for footers on the first page.
24
- # @option options [Boolean] different_odd_even Setting this to true will show different headers/footers on odd and even pages. When false, the odd headers/footers are used on each page. (Default: false)
25
- # @option options [Boolean] different_first If true, will use the first header/footer on page 1. Otherwise, the odd header/footer is used.
26
- def initialize(options = {})
27
- parse_options options
28
- end
29
-
30
- serializable_attributes :different_odd_even, :different_first
31
- serializable_element_attributes :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
32
- string_attr_accessor :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
33
- boolean_attr_accessor :different_odd_even, :different_first
34
-
35
- # Set some or all header/footers at once.
36
- # @param [Hash] options The header/footer options to set (possible keys are :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer, :different_odd_even, and :different_first).
37
- def set(options)
38
- parse_options options
39
- end
40
-
41
- # Serializes the header/footer object.
42
- # @param [String] str
43
- # @return [String]
44
- def to_xml_string(str = '')
45
- serialized_tag('headerFooter', str) do
46
- serialized_element_attributes(str) do |value|
47
- value = ::CGI.escapeHTML(value)
48
- end
49
- end
50
- end
51
- end
52
- end
1
+ module Axlsx
2
+ # Header/Footer options for printing a worksheet. All settings are optional.
3
+ #
4
+ # Headers and footers are generated using a string which is a combination
5
+ # of plain text and control characters. A fairly comprehensive list of control
6
+ # characters can be found here:
7
+ # https://github.com/randym/axlsx/blob/master/notes_on_header_footer.md
8
+ #     
9
+ # @note The recommended way of managing header/footers is via Worksheet#header_footer
10
+ # @see Worksheet#initialize
11
+ class HeaderFooter
12
+
13
+ include Axlsx::OptionsParser
14
+ include Axlsx::SerializedAttributes
15
+ include Axlsx::Accessors
16
+
17
+ # Creates a new HeaderFooter object
18
+ # @option options [String] odd_header The content for headers on odd numbered pages.
19
+ # @option options [String] odd_footer The content for footers on odd numbered pages.
20
+ # @option options [String] even_header The content for headers on even numbered pages.
21
+ # @option options [String] even_footer The content for footers on even numbered pages.
22
+ # @option options [String] first_header The content for headers on the first page.
23
+ # @option options [String] first_footer The content for footers on the first page.
24
+ # @option options [Boolean] different_odd_even Setting this to true will show different headers/footers on odd and even pages. When false, the odd headers/footers are used on each page. (Default: false)
25
+ # @option options [Boolean] different_first If true, will use the first header/footer on page 1. Otherwise, the odd header/footer is used.
26
+ def initialize(options = {})
27
+ parse_options options
28
+ end
29
+
30
+ serializable_attributes :different_odd_even, :different_first
31
+ serializable_element_attributes :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
32
+ string_attr_accessor :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
33
+ boolean_attr_accessor :different_odd_even, :different_first
34
+
35
+ # Set some or all header/footers at once.
36
+ # @param [Hash] options The header/footer options to set (possible keys are :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer, :different_odd_even, and :different_first).
37
+ def set(options)
38
+ parse_options options
39
+ end
40
+
41
+ # Serializes the header/footer object.
42
+ # @param [String] str
43
+ # @return [String]
44
+ def to_xml_string(str = '')
45
+ serialized_tag('headerFooter', str) do
46
+ serialized_element_attributes(str) do |value|
47
+ value = ::CGI.escapeHTML(value)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,81 +1,81 @@
1
- module Axlsx
2
- # Conditional Format Rule icon sets
3
- # Describes an icon set conditional formatting rule.
4
-
5
- # @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
6
- # @see Worksheet#add_conditional_formatting
7
- # @see ConditionalFormattingRule#initialize
8
- class IconSet
9
-
10
- include Axlsx::OptionsParser
11
- include Axlsx::SerializedAttributes
12
-
13
- # Creates a new icon set object
14
- # @option options [String] iconSet
15
- # @option options [Boolean] reverse
16
- # @option options [Boolean] percent
17
- # @option options [Boolean] showValue
18
- def initialize(options = {})
19
- @percent = @showValue = true
20
- @reverse = false
21
- @iconSet = "3TrafficLights1"
22
- initialize_value_objects
23
- parse_options options
24
- yield self if block_given?
25
- end
26
-
27
- serializable_attributes :iconSet, :percent, :reverse, :showValue
28
-
29
- # The icon set to display.
30
- # Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters
31
- # The default value is 3TrafficLights1
32
- # @return [String]
33
- attr_reader :iconSet
34
-
35
- # Indicates whether the thresholds indicate percentile values, instead of number values.
36
- # The default falue is true
37
- # @return [Boolean]
38
- attr_reader :percent
39
-
40
- # If true, reverses the default order of the icons in this icon set.maxLength attribute
41
- # The default value is false
42
- # @return [Boolean]
43
- attr_reader :reverse
44
-
45
- # Indicates whether to show the values of the cells on which this data bar is applied.
46
- # The default value is true
47
- # @return [Boolean]
48
- attr_reader :showValue
49
-
50
- # @see iconSet
51
- def iconSet=(v); Axlsx::validate_icon_set(v); @iconSet = v end
52
-
53
- # @see showValue
54
- def showValue=(v); Axlsx.validate_boolean(v); @showValue = v end
55
-
56
- # @see percent
57
- def percent=(v); Axlsx.validate_boolean(v); @percent = v end
58
-
59
- # @see reverse
60
- def reverse=(v); Axlsx.validate_boolean(v); @reverse = v end
61
-
62
- # Serialize this object to an xml string
63
- # @param [String] str
64
- # @return [String]
65
- def to_xml_string(str="")
66
- serialized_tag('iconSet', str) do
67
- @value_objects.each { |cfvo| cfvo.to_xml_string(str) }
68
- end
69
- end
70
-
71
- private
72
-
73
- # Initalize the simple typed list of value objects
74
- # I am keeping this private for now as I am not sure what impact changes to the required two cfvo objects will do.
75
- def initialize_value_objects
76
- @value_objects = SimpleTypedList.new Cfvo
77
- @value_objects.concat [Cfvo.new(:type => :percent, :val => 0), Cfvo.new(:type => :percent, :val => 33), Cfvo.new(:type => :percent, :val => 67)]
78
- @value_objects.lock
79
- end
80
- end
81
- end
1
+ module Axlsx
2
+ # Conditional Format Rule icon sets
3
+ # Describes an icon set conditional formatting rule.
4
+
5
+ # @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
6
+ # @see Worksheet#add_conditional_formatting
7
+ # @see ConditionalFormattingRule#initialize
8
+ class IconSet
9
+
10
+ include Axlsx::OptionsParser
11
+ include Axlsx::SerializedAttributes
12
+
13
+ # Creates a new icon set object
14
+ # @option options [String] iconSet
15
+ # @option options [Boolean] reverse
16
+ # @option options [Boolean] percent
17
+ # @option options [Boolean] showValue
18
+ def initialize(options = {})
19
+ @percent = @showValue = true
20
+ @reverse = false
21
+ @iconSet = "3TrafficLights1"
22
+ initialize_value_objects
23
+ parse_options options
24
+ yield self if block_given?
25
+ end
26
+
27
+ serializable_attributes :iconSet, :percent, :reverse, :showValue
28
+
29
+ # The icon set to display.
30
+ # Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters
31
+ # The default value is 3TrafficLights1
32
+ # @return [String]
33
+ attr_reader :iconSet
34
+
35
+ # Indicates whether the thresholds indicate percentile values, instead of number values.
36
+ # The default falue is true
37
+ # @return [Boolean]
38
+ attr_reader :percent
39
+
40
+ # If true, reverses the default order of the icons in this icon set.maxLength attribute
41
+ # The default value is false
42
+ # @return [Boolean]
43
+ attr_reader :reverse
44
+
45
+ # Indicates whether to show the values of the cells on which this data bar is applied.
46
+ # The default value is true
47
+ # @return [Boolean]
48
+ attr_reader :showValue
49
+
50
+ # @see iconSet
51
+ def iconSet=(v); Axlsx::validate_icon_set(v); @iconSet = v end
52
+
53
+ # @see showValue
54
+ def showValue=(v); Axlsx.validate_boolean(v); @showValue = v end
55
+
56
+ # @see percent
57
+ def percent=(v); Axlsx.validate_boolean(v); @percent = v end
58
+
59
+ # @see reverse
60
+ def reverse=(v); Axlsx.validate_boolean(v); @reverse = v end
61
+
62
+ # Serialize this object to an xml string
63
+ # @param [String] str
64
+ # @return [String]
65
+ def to_xml_string(str="")
66
+ serialized_tag('iconSet', str) do
67
+ @value_objects.each { |cfvo| cfvo.to_xml_string(str) }
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ # Initalize the simple typed list of value objects
74
+ # I am keeping this private for now as I am not sure what impact changes to the required two cfvo objects will do.
75
+ def initialize_value_objects
76
+ @value_objects = SimpleTypedList.new Cfvo
77
+ @value_objects.concat [Cfvo.new(:type => :percent, :val => 0), Cfvo.new(:type => :percent, :val => 33), Cfvo.new(:type => :percent, :val => 67)]
78
+ @value_objects.lock
79
+ end
80
+ end
81
+ end
@@ -1,37 +1,37 @@
1
- module Axlsx
2
-
3
- # A simple list of merged cells
4
- class MergedCells < SimpleTypedList
5
-
6
- # creates a new MergedCells object
7
- # @param [Worksheet] worksheet
8
- def initialize(worksheet)
9
- raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
10
- super String
11
- end
12
-
13
- # adds cells to the merged cells collection
14
- # @param [Array||String] cells The cells to add to the merged cells
15
- # collection. This can be an array of actual cells or a string style
16
- # range like 'A1:C1'
17
- def add(cells)
18
- self << if cells.is_a?(String)
19
- cells
20
- elsif cells.is_a?(Array)
21
- Axlsx::cell_range(cells, false)
22
- elsif cells.is_a?(Row)
23
- Axlsx::cell_range(cells, false)
24
- end
25
- end
26
-
27
- # serialize the object
28
- # @param [String] str
29
- # @return [String]
30
- def to_xml_string(str = '')
31
- return if empty?
32
- str << "<mergeCells count='#{size}'>"
33
- each { |merged_cell| str << "<mergeCell ref='#{merged_cell}'></mergeCell>" }
34
- str << '</mergeCells>'
35
- end
36
- end
37
- end
1
+ module Axlsx
2
+
3
+ # A simple list of merged cells
4
+ class MergedCells < SimpleTypedList
5
+
6
+ # creates a new MergedCells object
7
+ # @param [Worksheet] worksheet
8
+ def initialize(worksheet)
9
+ raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
10
+ super String
11
+ end
12
+
13
+ # adds cells to the merged cells collection
14
+ # @param [Array||String] cells The cells to add to the merged cells
15
+ # collection. This can be an array of actual cells or a string style
16
+ # range like 'A1:C1'
17
+ def add(cells)
18
+ self << if cells.is_a?(String)
19
+ cells
20
+ elsif cells.is_a?(Array)
21
+ Axlsx::cell_range(cells, false)
22
+ elsif cells.is_a?(Row)
23
+ Axlsx::cell_range(cells, false)
24
+ end
25
+ end
26
+
27
+ # serialize the object
28
+ # @param [String] str
29
+ # @return [String]
30
+ def to_xml_string(str = '')
31
+ return if empty?
32
+ str << "<mergeCells count='#{size}'>"
33
+ each { |merged_cell| str << "<mergeCell ref='#{merged_cell}'></mergeCell>" }
34
+ str << '</mergeCells>'
35
+ end
36
+ end
37
+ end
@@ -1,33 +1,33 @@
1
- module Axlsx
2
-
3
- # The OutlinePr class manages serialization of a worksheet's outlinePr element, which provides various
4
- # options to control outlining.
5
- class OutlinePr
6
- include Axlsx::OptionsParser
7
- include Axlsx::Accessors
8
- include Axlsx::SerializedAttributes
9
-
10
- serializable_attributes :summary_below,
11
- :summary_right,
12
- :apply_styles
13
-
14
- # These attributes are all boolean so I'm doing a bit of a hand
15
- # waving magic show to set up the attriubte accessors
16
- boolean_attr_accessor :summary_below,
17
- :summary_right,
18
- :apply_styles
19
-
20
- # Creates a new OutlinePr object
21
- # @param [Hash] options used to create the outline_pr
22
- def initialize(options = {})
23
- parse_options options
24
- end
25
-
26
- # Serialize the object
27
- # @param [String] str serialized output will be appended to this object if provided.
28
- # @return [String]
29
- def to_xml_string(str = '')
30
- str << "<outlinePr #{serialized_attributes} />"
31
- end
32
- end
33
- end
1
+ module Axlsx
2
+
3
+ # The OutlinePr class manages serialization of a worksheet's outlinePr element, which provides various
4
+ # options to control outlining.
5
+ class OutlinePr
6
+ include Axlsx::OptionsParser
7
+ include Axlsx::Accessors
8
+ include Axlsx::SerializedAttributes
9
+
10
+ serializable_attributes :summary_below,
11
+ :summary_right,
12
+ :apply_styles
13
+
14
+ # These attributes are all boolean so I'm doing a bit of a hand
15
+ # waving magic show to set up the attriubte accessors
16
+ boolean_attr_accessor :summary_below,
17
+ :summary_right,
18
+ :apply_styles
19
+
20
+ # Creates a new OutlinePr object
21
+ # @param [Hash] options used to create the outline_pr
22
+ def initialize(options = {})
23
+ parse_options options
24
+ end
25
+
26
+ # Serialize the object
27
+ # @param [String] str serialized output will be appended to this object if provided.
28
+ # @return [String]
29
+ def to_xml_string(str = '')
30
+ str << "<outlinePr #{serialized_attributes} />"
31
+ end
32
+ end
33
+ end