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