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,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