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