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,145 +1,145 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
-
4
- # The Col class defines column attributes for columns in sheets.
5
- class Col
6
-
7
- # Maximum column width limit in MS Excel is 255 characters
8
- # https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
9
- MAX_WIDTH = 255
10
-
11
- include Axlsx::OptionsParser
12
- include Axlsx::SerializedAttributes
13
- # Create a new Col objects
14
- # @param min First column affected by this 'column info' record.
15
- # @param max Last column affected by this 'column info' record.
16
- # @option options [Boolean] collapsed see Col#collapsed
17
- # @option options [Boolean] hidden see Col#hidden
18
- # @option options [Boolean] outlineLevel see Col#outlineLevel
19
- # @option options [Boolean] phonetic see Col#phonetic
20
- # @option options [Integer] style see Col#style
21
- # @option options [Numeric] width see Col#width
22
- def initialize(min, max, options={})
23
- Axlsx.validate_unsigned_int(max)
24
- Axlsx.validate_unsigned_int(min)
25
- @min = min
26
- @max = max
27
- parse_options options
28
- end
29
-
30
- serializable_attributes :collapsed, :hidden, :outline_level, :phonetic, :style, :width, :min, :max, :best_fit, :custom_width
31
-
32
- # First column affected by this 'column info' record.
33
- # @return [Integer]
34
- attr_reader :min
35
-
36
- # Last column affected by this 'column info' record.
37
- # @return [Integer]
38
- attr_reader :max
39
-
40
- # Flag indicating if the specified column(s) is set to 'best fit'. 'Best fit' is set to true under these conditions:
41
- # The column width has never been manually set by the user, AND The column width is not the default width
42
- # 'Best fit' means that when numbers are typed into a cell contained in a 'best fit' column, the column width should
43
- # automatically resize to display the number. [Note: In best fit cases, column width must not be made smaller, only larger. end note]
44
- # @return [Boolean]
45
- attr_reader :best_fit
46
- alias :bestFit :best_fit
47
-
48
- # Flag indicating if the outlining of the affected column(s) is in the collapsed state.
49
- # @return [Boolean]
50
- attr_reader :collapsed
51
-
52
- # Flag indicating if the affected column(s) are hidden on this worksheet.
53
- # @return [Boolean]
54
- attr_reader :hidden
55
-
56
- # Outline level of affected column(s). Range is 0 to 7.
57
- # @return [Integer]
58
- attr_reader :outline_level
59
- alias :outlineLevel :outline_level
60
-
61
- # Flag indicating if the phonetic information should be displayed by default for the affected column(s) of the worksheet.
62
- # @return [Boolean]
63
- attr_reader :phonetic
64
-
65
- # Default style for the affected column(s). Affects cells not yet allocated in the column(s). In other words, this style applies to new columns.
66
- # @return [Integer]
67
- attr_reader :style
68
-
69
- # The width of the column
70
- # @return [Numeric]
71
- attr_reader :width
72
-
73
- # @return [Boolean]
74
- attr_reader :custom_width
75
- alias :customWidth :custom_width
76
-
77
- # @see Col#collapsed
78
- def collapsed=(v)
79
- Axlsx.validate_boolean(v)
80
- @collapsed = v
81
- end
82
-
83
- # @see Col#hidden
84
- def hidden=(v)
85
- Axlsx.validate_boolean(v)
86
- @hidden = v
87
- end
88
-
89
- # @see Col#outline
90
- def outline_level=(v)
91
- Axlsx.validate_unsigned_numeric(v)
92
- raise ArgumentError, 'outlineLevel must be between 0 and 7' unless 0 <= v && v <= 7
93
- @outline_level = v
94
- end
95
- alias :outlineLevel= :outline_level=
96
-
97
- # @see Col#phonetic
98
- def phonetic=(v)
99
- Axlsx.validate_boolean(v)
100
- @phonetic = v
101
- end
102
-
103
- # @see Col#style
104
- def style=(v)
105
- Axlsx.validate_unsigned_int(v)
106
- @style = v
107
- end
108
-
109
- # @see Col#width
110
- def width=(v)
111
- # Removing this validation make a 10% difference in performance
112
- # as it is called EVERY TIME A CELL IS ADDED - the proper solution
113
- # is to only set this if a calculated value is greated than the
114
- # current @width value.
115
- # TODO!!!
116
- #Axlsx.validate_unsigned_numeric(v) unless v == nil
117
- @custom_width = @best_fit = v != nil
118
- @width = v.nil? ? v : [v, MAX_WIDTH].min
119
- end
120
-
121
- # updates the width for this col based on the cells autowidth and
122
- # an optionally specified fixed width
123
- # @param [Cell] cell The cell to use in updating this col's width
124
- # @param [Integer] fixed_width If this is specified the width is set
125
- # to this value and the cell's attributes are ignored.
126
- # @param [Boolean] use_autowidth If this is false, the cell's
127
- # autowidth value will be ignored.
128
- def update_width(cell, fixed_width = nil, use_autowidth = true)
129
- if fixed_width.is_a? Numeric
130
- self.width = fixed_width
131
- elsif use_autowidth
132
- cell_width = cell.autowidth
133
- self.width = cell_width unless (width || 0) > (cell_width || 0)
134
- end
135
- end
136
-
137
- # Serialize this columns data to an xml string
138
- # @param [String] str
139
- # @return [String]
140
- def to_xml_string(str = '')
141
- serialized_tag('col', str)
142
- end
143
-
144
- end
145
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+
4
+ # The Col class defines column attributes for columns in sheets.
5
+ class Col
6
+
7
+ # Maximum column width limit in MS Excel is 255 characters
8
+ # https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
9
+ MAX_WIDTH = 255
10
+
11
+ include Axlsx::OptionsParser
12
+ include Axlsx::SerializedAttributes
13
+ # Create a new Col objects
14
+ # @param min First column affected by this 'column info' record.
15
+ # @param max Last column affected by this 'column info' record.
16
+ # @option options [Boolean] collapsed see Col#collapsed
17
+ # @option options [Boolean] hidden see Col#hidden
18
+ # @option options [Boolean] outlineLevel see Col#outlineLevel
19
+ # @option options [Boolean] phonetic see Col#phonetic
20
+ # @option options [Integer] style see Col#style
21
+ # @option options [Numeric] width see Col#width
22
+ def initialize(min, max, options={})
23
+ Axlsx.validate_unsigned_int(max)
24
+ Axlsx.validate_unsigned_int(min)
25
+ @min = min
26
+ @max = max
27
+ parse_options options
28
+ end
29
+
30
+ serializable_attributes :collapsed, :hidden, :outline_level, :phonetic, :style, :width, :min, :max, :best_fit, :custom_width
31
+
32
+ # First column affected by this 'column info' record.
33
+ # @return [Integer]
34
+ attr_reader :min
35
+
36
+ # Last column affected by this 'column info' record.
37
+ # @return [Integer]
38
+ attr_reader :max
39
+
40
+ # Flag indicating if the specified column(s) is set to 'best fit'. 'Best fit' is set to true under these conditions:
41
+ # The column width has never been manually set by the user, AND The column width is not the default width
42
+ # 'Best fit' means that when numbers are typed into a cell contained in a 'best fit' column, the column width should
43
+ # automatically resize to display the number. [Note: In best fit cases, column width must not be made smaller, only larger. end note]
44
+ # @return [Boolean]
45
+ attr_reader :best_fit
46
+ alias :bestFit :best_fit
47
+
48
+ # Flag indicating if the outlining of the affected column(s) is in the collapsed state.
49
+ # @return [Boolean]
50
+ attr_reader :collapsed
51
+
52
+ # Flag indicating if the affected column(s) are hidden on this worksheet.
53
+ # @return [Boolean]
54
+ attr_reader :hidden
55
+
56
+ # Outline level of affected column(s). Range is 0 to 7.
57
+ # @return [Integer]
58
+ attr_reader :outline_level
59
+ alias :outlineLevel :outline_level
60
+
61
+ # Flag indicating if the phonetic information should be displayed by default for the affected column(s) of the worksheet.
62
+ # @return [Boolean]
63
+ attr_reader :phonetic
64
+
65
+ # Default style for the affected column(s). Affects cells not yet allocated in the column(s). In other words, this style applies to new columns.
66
+ # @return [Integer]
67
+ attr_reader :style
68
+
69
+ # The width of the column
70
+ # @return [Numeric]
71
+ attr_reader :width
72
+
73
+ # @return [Boolean]
74
+ attr_reader :custom_width
75
+ alias :customWidth :custom_width
76
+
77
+ # @see Col#collapsed
78
+ def collapsed=(v)
79
+ Axlsx.validate_boolean(v)
80
+ @collapsed = v
81
+ end
82
+
83
+ # @see Col#hidden
84
+ def hidden=(v)
85
+ Axlsx.validate_boolean(v)
86
+ @hidden = v
87
+ end
88
+
89
+ # @see Col#outline
90
+ def outline_level=(v)
91
+ Axlsx.validate_unsigned_numeric(v)
92
+ raise ArgumentError, 'outlineLevel must be between 0 and 7' unless 0 <= v && v <= 7
93
+ @outline_level = v
94
+ end
95
+ alias :outlineLevel= :outline_level=
96
+
97
+ # @see Col#phonetic
98
+ def phonetic=(v)
99
+ Axlsx.validate_boolean(v)
100
+ @phonetic = v
101
+ end
102
+
103
+ # @see Col#style
104
+ def style=(v)
105
+ Axlsx.validate_unsigned_int(v)
106
+ @style = v
107
+ end
108
+
109
+ # @see Col#width
110
+ def width=(v)
111
+ # Removing this validation make a 10% difference in performance
112
+ # as it is called EVERY TIME A CELL IS ADDED - the proper solution
113
+ # is to only set this if a calculated value is greated than the
114
+ # current @width value.
115
+ # TODO!!!
116
+ #Axlsx.validate_unsigned_numeric(v) unless v == nil
117
+ @custom_width = @best_fit = v != nil
118
+ @width = v.nil? ? v : [v, MAX_WIDTH].min
119
+ end
120
+
121
+ # updates the width for this col based on the cells autowidth and
122
+ # an optionally specified fixed width
123
+ # @param [Cell] cell The cell to use in updating this col's width
124
+ # @param [Integer] fixed_width If this is specified the width is set
125
+ # to this value and the cell's attributes are ignored.
126
+ # @param [Boolean] use_autowidth If this is false, the cell's
127
+ # autowidth value will be ignored.
128
+ def update_width(cell, fixed_width = nil, use_autowidth = true)
129
+ if fixed_width.is_a? Numeric
130
+ self.width = fixed_width
131
+ elsif use_autowidth
132
+ cell_width = cell.autowidth
133
+ self.width = cell_width unless (width || 0) > (cell_width || 0)
134
+ end
135
+ end
136
+
137
+ # Serialize this columns data to an xml string
138
+ # @param [String] str
139
+ # @return [String]
140
+ def to_xml_string(str = '')
141
+ serialized_tag('col', str)
142
+ end
143
+
144
+ end
145
+ end
@@ -1,35 +1,35 @@
1
- module Axlsx
2
-
3
- # A collection of Brake objects.
4
- # Please do not use this class directly. Instead use
5
- # Worksheet#add_break
6
- class ColBreaks < SimpleTypedList
7
-
8
- # Instantiates a new list restricted to Break types
9
- def initialize
10
- super Break
11
- end
12
-
13
- # A column break specific helper for adding a break.
14
- # @param [Hash] options A list of options to pass into the Break object
15
- # The max and man options are fixed, however any other valid option for
16
- # Break will be passed to the created break object.
17
- # @see Break
18
- def add_break(options)
19
- self << Break.new(options.merge(:max => 1048575, :man => true))
20
- last
21
- end
22
-
23
- # Serialize the collection to xml
24
- # @param [String] str The string to append this lists xml to.
25
- # <colBreaks count="1" manualBreakCount="1">
26
- # <brk id="3" max="1048575" man="1"/>
27
- # </colBreaks>
28
- def to_xml_string(str='')
29
- return if empty?
30
- str << ('<colBreaks count="' << size.to_s << '" manualBreakCount="' << size.to_s << '">')
31
- each { |brk| brk.to_xml_string(str) }
32
- str << '</colBreaks>'
33
- end
34
- end
35
- end
1
+ module Axlsx
2
+
3
+ # A collection of Brake objects.
4
+ # Please do not use this class directly. Instead use
5
+ # Worksheet#add_break
6
+ class ColBreaks < SimpleTypedList
7
+
8
+ # Instantiates a new list restricted to Break types
9
+ def initialize
10
+ super Break
11
+ end
12
+
13
+ # A column break specific helper for adding a break.
14
+ # @param [Hash] options A list of options to pass into the Break object
15
+ # The max and man options are fixed, however any other valid option for
16
+ # Break will be passed to the created break object.
17
+ # @see Break
18
+ def add_break(options)
19
+ self << Break.new(options.merge(:max => 1048575, :man => true))
20
+ last
21
+ end
22
+
23
+ # Serialize the collection to xml
24
+ # @param [String] str The string to append this lists xml to.
25
+ # <colBreaks count="1" manualBreakCount="1">
26
+ # <brk id="3" max="1048575" man="1"/>
27
+ # </colBreaks>
28
+ def to_xml_string(str='')
29
+ return if empty?
30
+ str << ('<colBreaks count="' << size.to_s << '" manualBreakCount="' << size.to_s << '">')
31
+ each { |brk| brk.to_xml_string(str) }
32
+ str << '</colBreaks>'
33
+ end
34
+ end
35
+ end
@@ -1,110 +1,110 @@
1
- module Axlsx
2
- # Conditional Format Rule color scale object
3
- # Describes a gradated color scale in this 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 ColorScale
9
-
10
- class << self
11
-
12
- # These are the default conditional formatting value objects
13
- # that define a two tone color gradient.
14
- def default_cfvos
15
- [{:type => :min, :val => 0, :color => 'FFFF7128'},
16
- {:type => :max, :val => 0, :color => 'FFFFEF9C'}]
17
- end
18
-
19
- # A builder for two tone color gradient
20
- # @example
21
- # # this creates a two tone color scale
22
- # color_scale = Axlsx::ColorScale.two_tone
23
- # @see examples/example.rb conditional formatting examples.
24
- def two_tone
25
- self.new
26
- end
27
-
28
- # A builder for three tone color gradient
29
- # @example
30
- # #this creates a three tone color scale
31
- # color_scale = Axlsx::ColorScale.three_tone
32
- # @see examples/example.rb conditional formatting examples.
33
- def three_tone
34
- self.new({:type => :min, :val => 0, :color => 'FFF8696B'},
35
- {:type => :percent, :val => '50', :color => 'FFFFEB84'},
36
- {:type => :max, :val => 0, :color => 'FF63BE7B'})
37
- end
38
- end
39
- # A simple typed list of cfvos
40
- # @return [SimpleTypedList]
41
- # @see Cfvo
42
- def value_objects
43
- @value_objects ||= Cfvos.new
44
- end
45
-
46
- # A simple types list of colors
47
- # @return [SimpleTypedList]
48
- # @see Color
49
- def colors
50
- @colors ||= SimpleTypedList.new Color
51
- end
52
-
53
- # creates a new ColorScale object.
54
- # @see Cfvo
55
- # @see Color
56
- # @example
57
- # color_scale = Axlsx::ColorScale.new({:type => :num, :val => 0.55, :color => 'fff7696c'})
58
- def initialize(*cfvos)
59
- initialize_default_cfvos(cfvos)
60
- yield self if block_given?
61
- end
62
-
63
- # adds a new cfvo / color pair to the color scale and returns a hash containing
64
- # a reference to the newly created cfvo and color objects so you can alter the default properties.
65
- # @return [Hash] a hash with :cfvo and :color keys referencing the newly added objects.
66
- # @param [Hash] options options for the new cfvo and color objects
67
- # @option [Symbol] type The type of cfvo you to add
68
- # @option [Any] val The value of the cfvo to add
69
- # @option [String] The rgb color for the cfvo
70
- def add(options={})
71
- value_objects << Cfvo.new(:type => options[:type] || :min, :val => options[:val] || 0)
72
- colors << Color.new(:rgb => options[:color] || "FF000000")
73
- {:cfvo => value_objects.last, :color => colors.last}
74
- end
75
-
76
-
77
- # removes the cfvo and color pair at the index specified.
78
- # @param [Integer] index The index of the cfvo and color object to delete
79
- # @note you cannot remove the first two cfvo and color pairs
80
- def delete_at(index=2)
81
- value_objects.delete_at index
82
- colors.delete_at index
83
- end
84
-
85
- # Serialize this color_scale object data to an xml string
86
- # @param [String] str
87
- # @return [String]
88
- def to_xml_string(str = '')
89
- str << '<colorScale>'
90
- value_objects.to_xml_string(str)
91
- colors.each { |color| color.to_xml_string(str) }
92
- str << '</colorScale>'
93
- end
94
-
95
- private
96
- # There has got to be cleaner way of merging these arrays.
97
- def initialize_default_cfvos(user_cfvos)
98
- defaults = self.class.default_cfvos
99
- user_cfvos.each_with_index do |cfvo, index|
100
- if index < defaults.size
101
- cfvo = defaults[index].merge(cfvo)
102
- end
103
- add cfvo
104
- end
105
- while colors.size < defaults.size
106
- add defaults[colors.size - 1]
107
- end
108
- end
109
- end
110
- end
1
+ module Axlsx
2
+ # Conditional Format Rule color scale object
3
+ # Describes a gradated color scale in this 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 ColorScale
9
+
10
+ class << self
11
+
12
+ # These are the default conditional formatting value objects
13
+ # that define a two tone color gradient.
14
+ def default_cfvos
15
+ [{:type => :min, :val => 0, :color => 'FFFF7128'},
16
+ {:type => :max, :val => 0, :color => 'FFFFEF9C'}]
17
+ end
18
+
19
+ # A builder for two tone color gradient
20
+ # @example
21
+ # # this creates a two tone color scale
22
+ # color_scale = Axlsx::ColorScale.two_tone
23
+ # @see examples/example.rb conditional formatting examples.
24
+ def two_tone
25
+ self.new
26
+ end
27
+
28
+ # A builder for three tone color gradient
29
+ # @example
30
+ # #this creates a three tone color scale
31
+ # color_scale = Axlsx::ColorScale.three_tone
32
+ # @see examples/example.rb conditional formatting examples.
33
+ def three_tone
34
+ self.new({:type => :min, :val => 0, :color => 'FFF8696B'},
35
+ {:type => :percent, :val => '50', :color => 'FFFFEB84'},
36
+ {:type => :max, :val => 0, :color => 'FF63BE7B'})
37
+ end
38
+ end
39
+ # A simple typed list of cfvos
40
+ # @return [SimpleTypedList]
41
+ # @see Cfvo
42
+ def value_objects
43
+ @value_objects ||= Cfvos.new
44
+ end
45
+
46
+ # A simple types list of colors
47
+ # @return [SimpleTypedList]
48
+ # @see Color
49
+ def colors
50
+ @colors ||= SimpleTypedList.new Color
51
+ end
52
+
53
+ # creates a new ColorScale object.
54
+ # @see Cfvo
55
+ # @see Color
56
+ # @example
57
+ # color_scale = Axlsx::ColorScale.new({:type => :num, :val => 0.55, :color => 'fff7696c'})
58
+ def initialize(*cfvos)
59
+ initialize_default_cfvos(cfvos)
60
+ yield self if block_given?
61
+ end
62
+
63
+ # adds a new cfvo / color pair to the color scale and returns a hash containing
64
+ # a reference to the newly created cfvo and color objects so you can alter the default properties.
65
+ # @return [Hash] a hash with :cfvo and :color keys referencing the newly added objects.
66
+ # @param [Hash] options options for the new cfvo and color objects
67
+ # @option [Symbol] type The type of cfvo you to add
68
+ # @option [Any] val The value of the cfvo to add
69
+ # @option [String] The rgb color for the cfvo
70
+ def add(options={})
71
+ value_objects << Cfvo.new(:type => options[:type] || :min, :val => options[:val] || 0)
72
+ colors << Color.new(:rgb => options[:color] || "FF000000")
73
+ {:cfvo => value_objects.last, :color => colors.last}
74
+ end
75
+
76
+
77
+ # removes the cfvo and color pair at the index specified.
78
+ # @param [Integer] index The index of the cfvo and color object to delete
79
+ # @note you cannot remove the first two cfvo and color pairs
80
+ def delete_at(index=2)
81
+ value_objects.delete_at index
82
+ colors.delete_at index
83
+ end
84
+
85
+ # Serialize this color_scale object data to an xml string
86
+ # @param [String] str
87
+ # @return [String]
88
+ def to_xml_string(str = '')
89
+ str << '<colorScale>'
90
+ value_objects.to_xml_string(str)
91
+ colors.each { |color| color.to_xml_string(str) }
92
+ str << '</colorScale>'
93
+ end
94
+
95
+ private
96
+ # There has got to be cleaner way of merging these arrays.
97
+ def initialize_default_cfvos(user_cfvos)
98
+ defaults = self.class.default_cfvos
99
+ user_cfvos.each_with_index do |cfvo, index|
100
+ if index < defaults.size
101
+ cfvo = defaults[index].merge(cfvo)
102
+ end
103
+ add cfvo
104
+ end
105
+ while colors.size < defaults.size
106
+ add defaults[colors.size - 1]
107
+ end
108
+ end
109
+ end
110
+ end
@@ -1,23 +1,23 @@
1
- module Axlsx
2
-
3
- # The cols class manages the col object used to manage column widths.
4
- # This is where the magic happens with autowidth
5
- class Cols < SimpleTypedList
6
-
7
- def initialize(worksheet)
8
- raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
9
- super Col
10
- @worksheet = worksheet
11
- end
12
-
13
- # Serialize the Cols object
14
- # @param [String] str
15
- # @return [String]
16
- def to_xml_string(str = '')
17
- return if empty?
18
- str << '<cols>'
19
- each { |item| item.to_xml_string(str) }
20
- str << '</cols>'
21
- end
22
- end
23
- end
1
+ module Axlsx
2
+
3
+ # The cols class manages the col object used to manage column widths.
4
+ # This is where the magic happens with autowidth
5
+ class Cols < SimpleTypedList
6
+
7
+ def initialize(worksheet)
8
+ raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
9
+ super Col
10
+ @worksheet = worksheet
11
+ end
12
+
13
+ # Serialize the Cols object
14
+ # @param [String] str
15
+ # @return [String]
16
+ def to_xml_string(str = '')
17
+ return if empty?
18
+ str << '<cols>'
19
+ each { |item| item.to_xml_string(str) }
20
+ str << '</cols>'
21
+ end
22
+ end
23
+ end