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,246 +1,266 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # Data validation allows the validation of cell data
4
- #
5
- # @note The recommended way to manage data validations is via Worksheet#add_data_validation
6
- # @see Worksheet#add_data_validation
7
- class DataValidation
8
- include Axlsx::OptionsParser
9
-
10
- # Creates a new {DataValidation} object
11
- # @option options [String] formula1
12
- # @option options [String] formula2
13
- # @option options [Boolean] allowBlank - A boolean value indicating whether the data validation allows the use of empty or blank entries.
14
- # @option options [String] error - Message text of error alert.
15
- # @option options [Symbol] errorStyle - The style of error alert used for this data validation.
16
- # @option options [String] errorTitle - itle bar text of error alert.
17
- # @option options [Symbol] operator - The relational operator used with this data validation.
18
- # @option options [String] prompt - Message text of input prompt.
19
- # @option options [String] promptTitle - Title bar text of input prompt.
20
- # @option options [Boolean] showDropDown - A boolean value indicating whether to display a dropdown combo box for a list type data validation
21
- # @option options [Boolean] showErrorMessage - A boolean value indicating whether to display the error alert message when an invalid value has been entered, according to the criteria specified.
22
- # @option options [Boolean] showInputMessage - A boolean value indicating whether to display the input prompt message.
23
- # @option options [String] sqref - Range over which data validation is applied, in "A1:B2" format.
24
- # @option options [Symbol] type - The type of data validation.
25
- def initialize(options={})
26
- # defaults
27
- @formula1 = @formula2 = @error = @errorTitle = @operator = @prompt = @promptTitle = @sqref = nil
28
- @allowBlank = @showErrorMessage = true
29
- @showDropDown = @showInputMessage = false
30
- @type = :none
31
- @errorStyle = :stop
32
- parse_options options
33
- end
34
-
35
- # instance values that must be serialized as their own elements - e.g. not attributes.
36
- CHILD_ELEMENTS = [:formula1, :formula2].freeze
37
-
38
- # Formula1
39
- # Available for type whole, decimal, date, time, textLength, list, custom
40
- # @see type
41
- # @return [String]
42
- # default nil
43
- attr_reader :formula1
44
-
45
- # Formula2
46
- # Available for type whole, decimal, date, time, textLength
47
- # @see type
48
- # @return [String]
49
- # default nil
50
- attr_reader :formula2
51
-
52
- # Allow Blank
53
- # A boolean value indicating whether the data validation allows the use of empty or blank
54
- # entries. 1 means empty entries are OK and do not violate the validation constraints.
55
- # Available for type whole, decimal, date, time, textLength, list, custom
56
- # @see type
57
- # @return [Boolean]
58
- # default true
59
- attr_reader :allowBlank
60
-
61
- # Error Message
62
- # Message text of error alert.
63
- # Available for type whole, decimal, date, time, textLength, list, custom
64
- # @see type
65
- # @return [String]
66
- # default nil
67
- attr_reader :error
68
-
69
- # Error Style (ST_DataValidationErrorStyle)
70
- # The style of error alert used for this data validation.
71
- # Options are:
72
- # * information: This data validation error style uses an information icon in the error alert.
73
- # * stop: This data validation error style uses a stop icon in the error alert.
74
- # * warning: This data validation error style uses a warning icon in the error alert.
75
- # Available for type whole, decimal, date, time, textLength, list, custom
76
- # @see type
77
- # @return [Symbol]
78
- # default :stop
79
- attr_reader :errorStyle
80
-
81
- # Error Title
82
- # Title bar text of error alert.
83
- # Available for type whole, decimal, date, time, textLength, list, custom
84
- # @see type
85
- # @return [String]
86
- # default nil
87
- attr_reader :errorTitle
88
-
89
- # Operator (ST_DataValidationOperator)
90
- # The relational operator used with this data validation.
91
- # Options are:
92
- # * between: Data validation which checks if a value is between two other values.
93
- # * equal: Data validation which checks if a value is equal to a specified value.
94
- # * greater_than: Data validation which checks if a value is greater than a specified value.
95
- # * greater_than_or_equal: Data validation which checks if a value is greater than or equal to a specified value.
96
- # * less_than: Data validation which checks if a value is less than a specified value.
97
- # * less_than_or_equal: Data validation which checks if a value is less than or equal to a specified value.
98
- # * not_between: Data validation which checks if a value is not between two other values.
99
- # * not_equal: Data validation which checks if a value is not equal to a specified value.
100
- # Available for type whole, decimal, date, time, textLength
101
- # @see type
102
- # @return [Symbol]
103
- # default nil
104
- attr_reader :operator
105
-
106
- # Input prompt
107
- # Message text of input prompt.
108
- # Available for type whole, decimal, date, time, textLength, list, custom
109
- # @see type
110
- # @return [String]
111
- # default nil
112
- attr_reader :prompt
113
-
114
- # Prompt title
115
- # Title bar text of input prompt.
116
- # Available for type whole, decimal, date, time, textLength, list, custom
117
- # @see type
118
- # @return [String]
119
- # default nil
120
- attr_reader :promptTitle
121
-
122
- # Show drop down
123
- # A boolean value indicating whether to display a dropdown combo box for a list type data
124
- # validation. Be careful: false shows the dropdown list!
125
- # Available for type list
126
- # @see type
127
- # @return [Boolean]
128
- # default false
129
- attr_reader :showDropDown
130
-
131
- # Show error message
132
- # A boolean value indicating whether to display the error alert message when an invalid
133
- # value has been entered, according to the criteria specified.
134
- # Available for type whole, decimal, date, time, textLength, list, custom
135
- # @see type
136
- # @return [Boolean]
137
- # default false
138
- attr_reader :showErrorMessage
139
-
140
- # Show input message
141
- # A boolean value indicating whether to display the input prompt message.
142
- # Available for type whole, decimal, date, time, textLength, list, custom
143
- # @see type
144
- # @return [Boolean]
145
- # default false
146
- attr_reader :showInputMessage
147
-
148
- # Range over which data validation is applied, in "A1:B2" format
149
- # Available for type whole, decimal, date, time, textLength, list, custom
150
- # @see type
151
- # @return [String]
152
- # default nil
153
- attr_reader :sqref
154
-
155
- # The type (ST_DataValidationType) of data validation.
156
- # Options are:
157
- # * custom: Data validation which uses a custom formula to check the cell value.
158
- # * date: Data validation which checks for date values satisfying the given condition.
159
- # * decimal: Data validation which checks for decimal values satisfying the given condition.
160
- # * list: Data validation which checks for a value matching one of list of values.
161
- # * none: No data validation.
162
- # * textLength: Data validation which checks for text values, whose length satisfies the given condition.
163
- # * time: Data validation which checks for time values satisfying the given condition.
164
- # * whole: Data validation which checks for whole number values satisfying the given condition.
165
- # @return [Symbol]
166
- # default none
167
- attr_reader :type
168
-
169
-
170
- # @see formula1
171
- def formula1=(v); Axlsx::validate_string(v); @formula1 = v end
172
-
173
- # @see formula2
174
- def formula2=(v); Axlsx::validate_string(v); @formula2 = v end
175
-
176
- # @see allowBlank
177
- def allowBlank=(v); Axlsx::validate_boolean(v); @allowBlank = v end
178
-
179
- # @see error
180
- def error=(v); Axlsx::validate_string(v); @error = v end
181
-
182
- # @see errorStyle
183
- def errorStyle=(v); Axlsx::validate_data_validation_error_style(v); @errorStyle = v end
184
-
185
- # @see errorTitle
186
- def errorTitle=(v); Axlsx::validate_string(v); @errorTitle = v end
187
-
188
- # @see operator
189
- def operator=(v); Axlsx::validate_data_validation_operator(v); @operator = v end
190
-
191
- # @see prompt
192
- def prompt=(v); Axlsx::validate_string(v); @prompt = v end
193
-
194
- # @see promptTitle
195
- def promptTitle=(v); Axlsx::validate_string(v); @promptTitle = v end
196
-
197
- # @see showDropDown
198
- def showDropDown=(v); Axlsx::validate_boolean(v); @showDropDown = v end
199
-
200
- # @see showErrorMessage
201
- def showErrorMessage=(v); Axlsx::validate_boolean(v); @showErrorMessage = v end
202
-
203
- # @see showInputMessage
204
- def showInputMessage=(v); Axlsx::validate_boolean(v); @showInputMessage = v end
205
-
206
- # @see sqref
207
- def sqref=(v); Axlsx::validate_string(v); @sqref = v end
208
-
209
- # @see type
210
- def type=(v); Axlsx::validate_data_validation_type(v); @type = v end
211
-
212
- # Serializes the data validation
213
- # @param [String] str
214
- # @return [String]
215
- def to_xml_string(str = '')
216
- valid_attributes = get_valid_attributes
217
-
218
- str << '<dataValidation '
219
- str << instance_values.map do |key, value|
220
- '' << key << '="' << Axlsx.booleanize(value).to_s << '"' if (valid_attributes.include?(key.to_sym) && !CHILD_ELEMENTS.include?(key.to_sym))
221
- end.join(' ')
222
- str << '>'
223
- str << ('<formula1>' << self.formula1 << '</formula1>') if @formula1 and valid_attributes.include?(:formula1)
224
- str << ('<formula2>' << self.formula2 << '</formula2>') if @formula2 and valid_attributes.include?(:formula2)
225
- str << '</dataValidation>'
226
- end
227
-
228
- private
229
- def get_valid_attributes
230
- attributes = [:allowBlank, :error, :errorStyle, :errorTitle, :prompt, :promptTitle, :showErrorMessage, :showInputMessage, :sqref, :type ]
231
-
232
- if [:whole, :decimal, :data, :time, :date, :textLength].include?(@type)
233
- attributes << [:operator, :formula1]
234
- attributes << [:formula2] if [:between, :notBetween].include?(@operator)
235
- elsif @type == :list
236
- attributes << [:showDropDown, :formula1]
237
- elsif @type == :custom
238
- attributes << [:formula1]
239
- else
240
- attributes = []
241
- end
242
-
243
- attributes.flatten!
244
- end
245
- end
246
- end
1
+ module Axlsx
2
+ # Data validation allows the validation of cell data
3
+ #
4
+ # @note The recommended way to manage data validations is via Worksheet#add_data_validation
5
+ # @see Worksheet#add_data_validation
6
+ class DataValidation
7
+ include Axlsx::OptionsParser
8
+
9
+ # Creates a new {DataValidation} object
10
+ # @option options [String] formula1
11
+ # @option options [String] formula2
12
+ # @option options [Boolean] allowBlank - A boolean value indicating whether the data validation allows the use of empty or blank entries.
13
+ # @option options [String] error - Message text of error alert.
14
+ # @option options [Symbol] errorStyle - The style of error alert used for this data validation.
15
+ # @option options [String] errorTitle - Title bar text of error alert.
16
+ # @option options [Symbol] operator - The relational operator used with this data validation.
17
+ # @option options [String] prompt - Message text of input prompt.
18
+ # @option options [String] promptTitle - Title bar text of input prompt.
19
+ # @option options [Boolean] showDropDown - A boolean value indicating whether to display a dropdown combo box for a list type data validation. Be careful: It has an inverted logic, false shows the dropdown list! You should use hideDropDown instead.
20
+ # @option options [Boolean] hideDropDown - A boolean value indicating whether to hide the dropdown combo box for a list type data validation. Defaults to `false` (meaning the dropdown is visible by default).
21
+ # @option options [Boolean] showErrorMessage - A boolean value indicating whether to display the error alert message when an invalid value has been entered, according to the criteria specified.
22
+ # @option options [Boolean] showInputMessage - A boolean value indicating whether to display the input prompt message.
23
+ # @option options [String] sqref - Range over which data validation is applied, in "A1:B2" format.
24
+ # @option options [Symbol] type - The type of data validation.
25
+ def initialize(options = {})
26
+ # defaults
27
+ @formula1 = @formula2 = @error = @errorTitle = @operator = @prompt = @promptTitle = @sqref = nil
28
+ @allowBlank = @showErrorMessage = true
29
+ @showDropDown = @showInputMessage = false
30
+ @type = :none
31
+ @errorStyle = :stop
32
+ parse_options options
33
+ end
34
+
35
+ # instance values that must be serialized as their own elements - e.g. not attributes.
36
+ CHILD_ELEMENTS = [:formula1, :formula2].freeze
37
+
38
+ # Formula1
39
+ # Available for type whole, decimal, date, time, textLength, list, custom
40
+ # @see type
41
+ # @return [String]
42
+ # default nil
43
+ attr_reader :formula1
44
+
45
+ # Formula2
46
+ # Available for type whole, decimal, date, time, textLength
47
+ # @see type
48
+ # @return [String]
49
+ # default nil
50
+ attr_reader :formula2
51
+
52
+ # Allow Blank
53
+ # A boolean value indicating whether the data validation allows the use of empty or blank
54
+ # entries. 1 means empty entries are OK and do not violate the validation constraints.
55
+ # Available for type whole, decimal, date, time, textLength, list, custom
56
+ # @see type
57
+ # @return [Boolean]
58
+ # default true
59
+ attr_reader :allowBlank
60
+
61
+ # Error Message
62
+ # Message text of error alert.
63
+ # Available for type whole, decimal, date, time, textLength, list, custom
64
+ # @see type
65
+ # @return [String]
66
+ # default nil
67
+ attr_reader :error
68
+
69
+ # Error Style (ST_DataValidationErrorStyle)
70
+ # The style of error alert used for this data validation.
71
+ # Options are:
72
+ # * information: This data validation error style uses an information icon in the error alert.
73
+ # * stop: This data validation error style uses a stop icon in the error alert.
74
+ # * warning: This data validation error style uses a warning icon in the error alert.
75
+ # Available for type whole, decimal, date, time, textLength, list, custom
76
+ # @see type
77
+ # @return [Symbol]
78
+ # default :stop
79
+ attr_reader :errorStyle
80
+
81
+ # Error Title
82
+ # Title bar text of error alert.
83
+ # Available for type whole, decimal, date, time, textLength, list, custom
84
+ # @see type
85
+ # @return [String]
86
+ # default nil
87
+ attr_reader :errorTitle
88
+
89
+ # Operator (ST_DataValidationOperator)
90
+ # The relational operator used with this data validation.
91
+ # Options are:
92
+ # * between: Data validation which checks if a value is between two other values.
93
+ # * equal: Data validation which checks if a value is equal to a specified value.
94
+ # * greater_than: Data validation which checks if a value is greater than a specified value.
95
+ # * greater_than_or_equal: Data validation which checks if a value is greater than or equal to a specified value.
96
+ # * less_than: Data validation which checks if a value is less than a specified value.
97
+ # * less_than_or_equal: Data validation which checks if a value is less than or equal to a specified value.
98
+ # * not_between: Data validation which checks if a value is not between two other values.
99
+ # * not_equal: Data validation which checks if a value is not equal to a specified value.
100
+ # Available for type whole, decimal, date, time, textLength
101
+ # @see type
102
+ # @return [Symbol]
103
+ # default nil
104
+ attr_reader :operator
105
+
106
+ # Input prompt
107
+ # Message text of input prompt.
108
+ # Available for type whole, decimal, date, time, textLength, list, custom
109
+ # @see type
110
+ # @return [String]
111
+ # default nil
112
+ attr_reader :prompt
113
+
114
+ # Prompt title
115
+ # Title bar text of input prompt.
116
+ # Available for type whole, decimal, date, time, textLength, list, custom
117
+ # @see type
118
+ # @return [String]
119
+ # default nil
120
+ attr_reader :promptTitle
121
+
122
+ # Show drop down
123
+ # A boolean value indicating whether to display a dropdown combo box for a list type data
124
+ # validation. Be careful: It has an inverted logic, false shows the dropdown list!
125
+ # Available for type list
126
+ # @see type
127
+ # @return [Boolean]
128
+ # default false
129
+ attr_reader :showDropDown
130
+
131
+ # Hide drop down
132
+ # A boolean value indicating whether to hide a dropdown combo box for a list type data
133
+ # validation. Defaults to `false` (meaning the dropdown is visible by default).
134
+ # Available for type list
135
+ # @see type
136
+ # @return [Boolean]
137
+ # default false
138
+ alias :hideDropDown :showDropDown
139
+
140
+ # Show error message
141
+ # A boolean value indicating whether to display the error alert message when an invalid
142
+ # value has been entered, according to the criteria specified.
143
+ # Available for type whole, decimal, date, time, textLength, list, custom
144
+ # @see type
145
+ # @return [Boolean]
146
+ # default false
147
+ attr_reader :showErrorMessage
148
+
149
+ # Show input message
150
+ # A boolean value indicating whether to display the input prompt message.
151
+ # Available for type whole, decimal, date, time, textLength, list, custom
152
+ # @see type
153
+ # @return [Boolean]
154
+ # default false
155
+ attr_reader :showInputMessage
156
+
157
+ # Range over which data validation is applied, in "A1:B2" format
158
+ # Available for type whole, decimal, date, time, textLength, list, custom
159
+ # @see type
160
+ # @return [String]
161
+ # default nil
162
+ attr_reader :sqref
163
+
164
+ # The type (ST_DataValidationType) of data validation.
165
+ # Options are:
166
+ # * custom: Data validation which uses a custom formula to check the cell value.
167
+ # * date: Data validation which checks for date values satisfying the given condition.
168
+ # * decimal: Data validation which checks for decimal values satisfying the given condition.
169
+ # * list: Data validation which checks for a value matching one of list of values.
170
+ # * none: No data validation.
171
+ # * textLength: Data validation which checks for text values, whose length satisfies the given condition.
172
+ # * time: Data validation which checks for time values satisfying the given condition.
173
+ # * whole: Data validation which checks for whole number values satisfying the given condition.
174
+ # @return [Symbol]
175
+ # default none
176
+ attr_reader :type
177
+
178
+ # @see formula1
179
+ def formula1=(v); Axlsx::validate_string(v); @formula1 = v end
180
+
181
+ # @see formula2
182
+ def formula2=(v); Axlsx::validate_string(v); @formula2 = v end
183
+
184
+ # @see allowBlank
185
+ def allowBlank=(v); Axlsx::validate_boolean(v); @allowBlank = v end
186
+
187
+ # @see error
188
+ def error=(v); Axlsx::validate_string(v); @error = v end
189
+
190
+ # @see errorStyle
191
+ def errorStyle=(v); Axlsx::validate_data_validation_error_style(v); @errorStyle = v end
192
+
193
+ # @see errorTitle
194
+ def errorTitle=(v); Axlsx::validate_string(v); @errorTitle = v end
195
+
196
+ # @see operator
197
+ def operator=(v); Axlsx::validate_data_validation_operator(v); @operator = v end
198
+
199
+ # @see prompt
200
+ def prompt=(v); Axlsx::validate_string(v); @prompt = v end
201
+
202
+ # @see promptTitle
203
+ def promptTitle=(v); Axlsx::validate_string(v); @promptTitle = v end
204
+
205
+ # @see showDropDown
206
+ def showDropDown=(v)
207
+ warn 'The `showDropDown` has an inverted logic, false shows the dropdown list! You should use `hideDropDown` instead.'
208
+ Axlsx::validate_boolean(v)
209
+ @showDropDown = v
210
+ end
211
+
212
+ # @see hideDropDown
213
+ def hideDropDown=(v)
214
+ Axlsx::validate_boolean(v)
215
+ # It's just an alias for the showDropDown attribute, hideDropDown should set the value of the original showDropDown.
216
+ @showDropDown = v
217
+ end
218
+
219
+ # @see showErrorMessage
220
+ def showErrorMessage=(v); Axlsx::validate_boolean(v); @showErrorMessage = v end
221
+
222
+ # @see showInputMessage
223
+ def showInputMessage=(v); Axlsx::validate_boolean(v); @showInputMessage = v end
224
+
225
+ # @see sqref
226
+ def sqref=(v); Axlsx::validate_string(v); @sqref = v end
227
+
228
+ # @see type
229
+ def type=(v); Axlsx::validate_data_validation_type(v); @type = v end
230
+
231
+ # Serializes the data validation
232
+ # @param [String] str
233
+ # @return [String]
234
+ def to_xml_string(str = '')
235
+ valid_attributes = get_valid_attributes
236
+
237
+ str << '<dataValidation '
238
+ str << Axlsx.instance_values_for(self).map do |key, value|
239
+ '' << key << '="' << Axlsx.booleanize(value).to_s << '"' if (valid_attributes.include?(key.to_sym) && !CHILD_ELEMENTS.include?(key.to_sym))
240
+ end.join(' ')
241
+ str << '>'
242
+ str << ('<formula1>' << self.formula1 << '</formula1>') if @formula1 and valid_attributes.include?(:formula1)
243
+ str << ('<formula2>' << self.formula2 << '</formula2>') if @formula2 and valid_attributes.include?(:formula2)
244
+ str << '</dataValidation>'
245
+ end
246
+
247
+ private
248
+
249
+ def get_valid_attributes
250
+ attributes = [:allowBlank, :error, :errorStyle, :errorTitle, :prompt, :promptTitle, :showErrorMessage, :showInputMessage, :sqref, :type]
251
+
252
+ if [:whole, :decimal, :data, :time, :date, :textLength].include?(@type)
253
+ attributes << [:operator, :formula1]
254
+ attributes << [:formula2] if [:between, :notBetween].include?(@operator)
255
+ elsif @type == :list
256
+ attributes << [:showDropDown, :formula1]
257
+ elsif @type == :custom
258
+ attributes << [:formula1]
259
+ else
260
+ attributes = []
261
+ end
262
+
263
+ attributes.flatten!
264
+ end
265
+ end
266
+ end
@@ -1,28 +1,25 @@
1
- module Axlsx
2
-
3
- # A simple, self serializing class for storing conditional formattings
4
- class DataValidations < SimpleTypedList
5
-
6
- # creates a new Tables object
7
- def initialize(worksheet)
8
- raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
9
- super DataValidation
10
- @worksheet = worksheet
11
- end
12
-
13
- # The worksheet that owns this collection of tables
14
- # @return [Worksheet]
15
- attr_reader :worksheet
16
-
17
- # serialize the conditional formattings
18
- def to_xml_string(str = "")
19
- return if empty?
20
- str << "<dataValidations count='#{size}'>"
21
- each { |item| item.to_xml_string(str) }
22
- str << '</dataValidations>'
23
- end
24
- end
25
-
26
- end
27
-
28
-
1
+ module Axlsx
2
+ # A simple, self serializing class for storing conditional formattings
3
+ class DataValidations < SimpleTypedList
4
+ # creates a new Tables object
5
+ def initialize(worksheet)
6
+ raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
7
+
8
+ super DataValidation
9
+ @worksheet = worksheet
10
+ end
11
+
12
+ # The worksheet that owns this collection of tables
13
+ # @return [Worksheet]
14
+ attr_reader :worksheet
15
+
16
+ # serialize the conditional formattings
17
+ def to_xml_string(str = "")
18
+ return if empty?
19
+
20
+ str << "<dataValidations count='#{size}'>"
21
+ each { |item| item.to_xml_string(str) }
22
+ str << '</dataValidations>'
23
+ end
24
+ end
25
+ end
@@ -1,30 +1,28 @@
1
- # encoding: UTF-8
2
- require "date"
3
-
4
- module Axlsx
5
- # The DateTimeConverter class converts both data and time types to their apprpriate excel serializations
6
- class DateTimeConverter
7
-
8
- # The date_to_serial method converts Date objects to the equivelant excel serialized forms
9
- # @param [Date] date the date to be serialized
10
- # @return [Numeric]
11
- def self.date_to_serial(date)
12
- epoch = Axlsx::Workbook::date1904 ? Date.new(1904) : Date.new(1899, 12, 30)
13
- offset_date = date.respond_to?(:utc_offset) ? date + date.utc_offset.seconds : date
14
- (offset_date - epoch).to_f
15
- end
16
-
17
- # The time_to_serial methond converts a Time object its excel serialized form.
18
- # @param [Time] time the time to be serialized
19
- # @return [Numeric]
20
- def self.time_to_serial(time)
21
- # Using hardcoded offsets here as some operating systems will not except
22
- # a 'negative' offset from the ruby epoch.
23
- epoch1900 = -2209161600.0 # Time.utc(1899, 12, 30).to_i
24
- epoch1904 = -2082844800.0 # Time.utc(1904, 1, 1).to_i
25
- seconds_per_day = 86400.0 # 60*60*24
26
- epoch = Axlsx::Workbook::date1904 ? epoch1904 : epoch1900
27
- (time.utc_offset + time.to_f - epoch)/seconds_per_day
28
- end
29
- end
30
- end
1
+ require "date"
2
+
3
+ module Axlsx
4
+ # The DateTimeConverter class converts both data and time types to their apprpriate excel serializations
5
+ class DateTimeConverter
6
+ # The date_to_serial method converts Date objects to the equivelant excel serialized forms
7
+ # @param [Date] date the date to be serialized
8
+ # @return [Numeric]
9
+ def self.date_to_serial(date)
10
+ epoch = Axlsx::Workbook::date1904 ? Date.new(1904) : Date.new(1899, 12, 30)
11
+ offset_date = date.respond_to?(:utc_offset) ? date + date.utc_offset.seconds : date
12
+ (offset_date - epoch).to_f
13
+ end
14
+
15
+ # The time_to_serial methond converts a Time object its excel serialized form.
16
+ # @param [Time] time the time to be serialized
17
+ # @return [Numeric]
18
+ def self.time_to_serial(time)
19
+ # Using hardcoded offsets here as some operating systems will not except
20
+ # a 'negative' offset from the ruby epoch.
21
+ epoch1900 = -2209161600.0 # Time.utc(1899, 12, 30).to_i
22
+ epoch1904 = -2082844800.0 # Time.utc(1904, 1, 1).to_i
23
+ seconds_per_day = 86400.0 # 60*60*24
24
+ epoch = Axlsx::Workbook::date1904 ? epoch1904 : epoch1900
25
+ (time.utc_offset + time.to_f - epoch) / seconds_per_day
26
+ end
27
+ end
28
+ end