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,164 +1,173 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # A Row is a single row in a worksheet.
4
- # @note The recommended way to manage rows and cells is to use Worksheet#add_row
5
- # @see Worksheet#add_row
6
- class Row < SimpleTypedList
7
- include SerializedAttributes
8
- include Accessors
9
-
10
- # No support is provided for the following attributes
11
- # spans
12
- # thickTop
13
- # thickBottom
14
-
15
- # Creates a new row. New Cell objects are created based on the values, types and style options.
16
- # A new cell is created for each item in the values array. style and types options are applied as follows:
17
- # If the types option is defined and is a symbol it is applied to all the cells created.
18
- # If the types option is an array, cell types are applied by index for each cell
19
- # If the types option is not set, the cell will automatically determine its type.
20
- # If the style option is defined and is an Integer, it is applied to all cells created.
21
- # If the style option is an array, style is applied by index for each cell.
22
- # If the style option is not defined, the default style (0) is applied to each cell.
23
- # @param [Worksheet] worksheet
24
- # @option options [Array] values
25
- # @option options [Array, Symbol] types
26
- # @option options [Array, Integer] style
27
- # @option options [Float] height the row's height (in points)
28
- # @option options [Integer] offset - add empty columns before values
29
- # @see Row#array_to_cells
30
- # @see Cell
31
- def initialize(worksheet, values=[], options={})
32
- self.worksheet = worksheet
33
- super(Cell, nil, values.size + options[:offset].to_i)
34
- self.height = options.delete(:height)
35
- worksheet.rows << self
36
- array_to_cells(values, options)
37
- end
38
-
39
- # A list of serializable attributes.
40
- serializable_attributes :hidden, :outline_level, :collapsed, :custom_format, :s, :ph, :custom_height, :ht
41
-
42
- # Boolean row attribute accessors
43
- boolean_attr_accessor :hidden, :collapsed, :custom_format, :ph, :custom_height
44
-
45
- # The worksheet this row belongs to
46
- # @return [Worksheet]
47
- attr_reader :worksheet
48
-
49
- # Row height measured in point size. There is no margin padding on row height.
50
- # @return [Float]
51
- def height
52
- defined?(@ht) ? @ht : nil
53
- end
54
-
55
- # Outlining level of the row, when outlining is on
56
- # @return [Integer]
57
- attr_reader :outline_level
58
- alias :outlineLevel :outline_level
59
-
60
- # The style applied to the row. This affects the entire row.
61
- # @return [Integer]
62
- attr_reader :s
63
-
64
- # @see Row#s
65
- def s=(v)
66
- Axlsx.validate_unsigned_numeric(v)
67
- @custom_format = true
68
- @s = v
69
- end
70
-
71
- # @see Row#outline
72
- def outline_level=(v)
73
- Axlsx.validate_unsigned_numeric(v)
74
- @outline_level = v
75
- end
76
-
77
- alias :outlineLevel= :outline_level=
78
-
79
- # The index of this row in the worksheet
80
- # @return [Integer]
81
- def row_index
82
- worksheet.rows.index(self)
83
- end
84
-
85
- # Serializes the row
86
- # @param [Integer] r_index The row index, 0 based.
87
- # @param [String] str The string this rows xml will be appended to.
88
- # @return [String]
89
- def to_xml_string(r_index, str = '')
90
- serialized_tag('row', str, :r => r_index + 1) do
91
- tmp = '' # time / memory tradeoff, lots of calls to rubyzip costs more
92
- # time..
93
- each_with_index { |cell, c_index| cell.to_xml_string(r_index, c_index, tmp) }
94
- str << tmp
95
- end
96
- end
97
-
98
- # Adds a single cell to the row based on the data provided and updates the worksheet's autofit data.
99
- # @return [Cell]
100
- def add_cell(value = '', options = {})
101
- c = Cell.new(self, value, options)
102
- self << c
103
- worksheet.send(:update_column_info, self, [])
104
- c
105
- end
106
-
107
- # sets the color for every cell in this row
108
- def color=(color)
109
- each_with_index do | cell, index |
110
- cell.color = color.is_a?(Array) ? color[index] : color
111
- end
112
- end
113
-
114
- # sets the style for every cell in this row
115
- def style=(style)
116
- each_with_index do | cell, index |
117
- cell.style = style.is_a?(Array) ? style[index] : style
118
- end
119
- end
120
-
121
- # @see height
122
- def height=(v)
123
- unless v.nil?
124
- Axlsx::validate_unsigned_numeric(v)
125
- @custom_height = true
126
- @ht = v
127
- end
128
- end
129
-
130
- # return cells
131
- def cells
132
- self
133
- end
134
-
135
- private
136
-
137
- # assigns the owning worksheet for this row
138
- def worksheet=(v) DataTypeValidator.validate :row_worksheet, Worksheet, v; @worksheet=v; end
139
-
140
- # Converts values, types, and style options into cells and associates them with this row.
141
- # A new cell is created for each item in the values array.
142
- # If value option is defined and is a symbol it is applied to all the cells created.
143
- # If the value option is an array, cell types are applied by index for each cell
144
- # If the style option is defined and is an Integer, it is applied to all cells created.
145
- # If the style option is an array, style is applied by index for each cell.
146
- # @option options [Array] values
147
- # @option options [Array, Symbol] types
148
- # @option options [Array, Integer] style
149
- def array_to_cells(values, options={})
150
- DataTypeValidator.validate :array_to_cells, Array, values
151
- types, style, formula_values, escape_formulas, offset = options.delete(:types), options.delete(:style), options.delete(:formula_values), options.delete(:escape_formulas), options.delete(:offset)
152
- offset.to_i.times { |index| self[index] = Cell.new(self) } if offset
153
- values.each_with_index do |value, index|
154
- options[:style] = style.is_a?(Array) ? style[index] : style if style
155
- options[:type] = types.is_a?(Array) ? types[index] : types if types
156
- options[:escape_formulas] = escape_formulas.is_a?(Array) ? escape_formulas[index] : escape_formulas if escape_formulas
157
- options[:formula_value] = formula_values[index] if formula_values.is_a?(Array)
158
-
159
- self[index + offset.to_i] = Cell.new(self, value, options)
160
- end
161
- end
162
- end
163
-
164
- end
1
+ module Axlsx
2
+ # A Row is a single row in a worksheet.
3
+ # @note The recommended way to manage rows and cells is to use Worksheet#add_row
4
+ # @see Worksheet#add_row
5
+ class Row < SimpleTypedList
6
+ include SerializedAttributes
7
+ include Accessors
8
+
9
+ # No support is provided for the following attributes
10
+ # spans
11
+ # thickTop
12
+ # thickBottom
13
+
14
+ # Creates a new row. New Cell objects are created based on the values, types and style options.
15
+ # A new cell is created for each item in the values array. style and types options are applied as follows:
16
+ # If the types option is defined and is a symbol it is applied to all the cells created.
17
+ # If the types option is an array, cell types are applied by index for each cell
18
+ # If the types option is not set, the cell will automatically determine its type.
19
+ # If the style option is defined and is an Integer, it is applied to all cells created.
20
+ # If the style option is an array, style is applied by index for each cell.
21
+ # If the style option is not defined, the default style (0) is applied to each cell.
22
+ # @param [Worksheet] worksheet
23
+ # @option options [Array] values
24
+ # @option options [Array, Symbol] types
25
+ # @option options [Array, Integer] style
26
+ # @option options [Array, Boolean] escape_formulas
27
+ # @option options [Float] height the row's height (in points)
28
+ # @option options [Integer] offset - add empty columns before values
29
+ # @see Row#array_to_cells
30
+ # @see Cell
31
+ def initialize(worksheet, values = [], options = {})
32
+ self.worksheet = worksheet
33
+ super(Cell, nil, values.size + options[:offset].to_i)
34
+ self.height = options.delete(:height)
35
+ worksheet.rows << self
36
+ array_to_cells(values, options)
37
+ end
38
+
39
+ # A list of serializable attributes.
40
+ serializable_attributes :hidden, :outline_level, :collapsed, :custom_format, :s, :ph, :custom_height, :ht
41
+
42
+ # Boolean row attribute accessors
43
+ boolean_attr_accessor :hidden, :collapsed, :custom_format, :ph, :custom_height
44
+
45
+ # The worksheet this row belongs to
46
+ # @return [Worksheet]
47
+ attr_reader :worksheet
48
+
49
+ # Row height measured in point size. There is no margin padding on row height.
50
+ # @return [Float]
51
+ def height
52
+ defined?(@ht) ? @ht : nil
53
+ end
54
+
55
+ # Outlining level of the row, when outlining is on
56
+ # @return [Integer]
57
+ attr_reader :outline_level
58
+ alias :outlineLevel :outline_level
59
+
60
+ # The style applied to the row. This affects the entire row.
61
+ # @return [Integer]
62
+ attr_reader :s
63
+
64
+ # @see Row#s
65
+ def s=(v)
66
+ Axlsx.validate_unsigned_numeric(v)
67
+ @custom_format = true
68
+ @s = v
69
+ end
70
+
71
+ # @see Row#outline
72
+ def outline_level=(v)
73
+ Axlsx.validate_unsigned_numeric(v)
74
+ @outline_level = v
75
+ end
76
+
77
+ alias :outlineLevel= :outline_level=
78
+
79
+ # The index of this row in the worksheet
80
+ # @return [Integer]
81
+ def row_index
82
+ worksheet.rows.index(self)
83
+ end
84
+
85
+ # Serializes the row
86
+ # @param [Integer] r_index The row index, 0 based.
87
+ # @param [String] str The string this rows xml will be appended to.
88
+ # @return [String]
89
+ def to_xml_string(r_index, str = '')
90
+ serialized_tag('row', str, :r => r_index + 1) do
91
+ tmp = '' # time / memory tradeoff, lots of calls to rubyzip costs more
92
+ # time..
93
+ each_with_index { |cell, c_index| cell.to_xml_string(r_index, c_index, tmp) }
94
+ str << tmp
95
+ end
96
+ end
97
+
98
+ # Adds a single cell to the row based on the data provided and updates the worksheet's autofit data.
99
+ # @return [Cell]
100
+ def add_cell(value = '', options = {})
101
+ c = Cell.new(self, value, options)
102
+ self << c
103
+ worksheet.send(:update_column_info, self, [])
104
+ c
105
+ end
106
+
107
+ # Sets the color for every cell in this row.
108
+ def color=(color)
109
+ each_with_index do |cell, index|
110
+ cell.color = color.is_a?(Array) ? color[index] : color
111
+ end
112
+ end
113
+
114
+ # Sets the style for every cell in this row.
115
+ def style=(style)
116
+ each_with_index do |cell, index|
117
+ cell.style = style.is_a?(Array) ? style[index] : style
118
+ end
119
+ end
120
+
121
+ # Sets escape_formulas for every cell in this row. This determines whether to treat
122
+ # values starting with an equals sign as formulas or as literal strings.
123
+ # @param [Array, Boolean] value The value to set.
124
+ def escape_formulas=(value)
125
+ each_with_index do |cell, index|
126
+ cell.escape_formulas = value.is_a?(Array) ? value[index] : value
127
+ end
128
+ end
129
+
130
+ # @see height
131
+ def height=(v)
132
+ unless v.nil?
133
+ Axlsx::validate_unsigned_numeric(v)
134
+ @custom_height = true
135
+ @ht = v
136
+ end
137
+ end
138
+
139
+ # return cells
140
+ def cells
141
+ self
142
+ end
143
+
144
+ private
145
+
146
+ # assigns the owning worksheet for this row
147
+ def worksheet=(v) DataTypeValidator.validate :row_worksheet, Worksheet, v; @worksheet = v; end
148
+
149
+ # Converts values, types, and style options into cells and associates them with this row.
150
+ # A new cell is created for each item in the values array.
151
+ # If value option is defined and is a symbol it is applied to all the cells created.
152
+ # If the value option is an array, cell types are applied by index for each cell
153
+ # If the style option is defined and is an Integer, it is applied to all cells created.
154
+ # If the style option is an array, style is applied by index for each cell.
155
+ # @option options [Array] values
156
+ # @option options [Array, Symbol] types
157
+ # @option options [Array, Integer] style
158
+ # @option options [Array, Boolean] escape_formulas
159
+ def array_to_cells(values, options = {})
160
+ DataTypeValidator.validate :array_to_cells, Array, values
161
+ types, style, formula_values, escape_formulas, offset = options.delete(:types), options.delete(:style), options.delete(:formula_values), options.delete(:escape_formulas), options.delete(:offset)
162
+ offset.to_i.times { |index| self[index] = Cell.new(self) } if offset
163
+ values.each_with_index do |value, index|
164
+ options[:style] = style.is_a?(Array) ? style[index] : style if style
165
+ options[:type] = types.is_a?(Array) ? types[index] : types if types
166
+ options[:escape_formulas] = escape_formulas.is_a?(Array) ? escape_formulas[index] : escape_formulas unless escape_formulas.nil?
167
+ options[:formula_value] = formula_values[index] if formula_values.is_a?(Array)
168
+
169
+ self[index + offset.to_i] = Cell.new(self, value, options)
170
+ end
171
+ end
172
+ end
173
+ end
@@ -1,33 +1,32 @@
1
- module Axlsx
2
-
3
- # A collection of break objects that define row breaks (page breaks) for printing and preview
4
-
5
- class RowBreaks < SimpleTypedList
6
-
7
- def initialize
8
- super Break
9
- end
10
-
11
- # Adds a row break
12
- # @param [Hash] options The options for the break to be created.
13
- # max and man values are fixed.
14
- # @see Break
15
- def add_break(options)
16
- # force feed the excel default
17
- self << Break.new(options.merge(:max => 16383, :man => true))
18
- last
19
- end
20
-
21
- # <rowBreaks count="3" manualBreakCount="3">
22
- # <brk id="1" max="16383" man="1"/>
23
- # <brk id="7" max="16383" man="1"/>
24
- # <brk id="13" max="16383" man="1"/>
25
- # </rowBreaks>
26
- def to_xml_string(str='')
27
- return if empty?
28
- str << ('<rowBreaks count="' << self.size.to_s << '" manualBreakCount="' << self.size.to_s << '">')
29
- each { |brk| brk.to_xml_string(str) }
30
- str << '</rowBreaks>'
31
- end
32
- end
33
- end
1
+ module Axlsx
2
+ # A collection of break objects that define row breaks (page breaks) for printing and preview
3
+
4
+ class RowBreaks < SimpleTypedList
5
+ def initialize
6
+ super Break
7
+ end
8
+
9
+ # Adds a row break
10
+ # @param [Hash] options The options for the break to be created.
11
+ # max and man values are fixed.
12
+ # @see Break
13
+ def add_break(options)
14
+ # force feed the excel default
15
+ self << Break.new(options.merge(:max => 16383, :man => true))
16
+ last
17
+ end
18
+
19
+ # <rowBreaks count="3" manualBreakCount="3">
20
+ # <brk id="1" max="16383" man="1"/>
21
+ # <brk id="7" max="16383" man="1"/>
22
+ # <brk id="13" max="16383" man="1"/>
23
+ # </rowBreaks>
24
+ def to_xml_string(str = '')
25
+ return if empty?
26
+
27
+ str << ('<rowBreaks count="' << self.size.to_s << '" manualBreakCount="' << self.size.to_s << '">')
28
+ each { |brk| brk.to_xml_string(str) }
29
+ str << '</rowBreaks>'
30
+ end
31
+ end
32
+ end
@@ -1,101 +1,99 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # Selection options for worksheet panes.
4
- #
5
- # @note The recommended way to manage the selection pane options is via SheetView#add_selection
6
- # @see SheetView#add_selection
7
- class Selection
8
-
9
- include Axlsx::OptionsParser
10
- include Axlsx::SerializedAttributes
11
-
12
- # Creates a new {Selection} object
13
- # @option options [Cell, String] active_cell Active Cell Location
14
- # @option options [Integer] active_cell_id Active Cell Index
15
- # @option options [Symbol] pane Pane
16
- # @option options [String] sqref Sequence of References
17
- def initialize(options={})
18
- @active_cell = @active_cell_id = @pane = @sqref = nil
19
- parse_options options
20
- end
21
-
22
- serializable_attributes :active_cell, :active_cell_id, :pane, :sqref
23
- # Active Cell Location
24
- # Location of the active cell.
25
- # @see type
26
- # @return [String]
27
- # default nil
28
- attr_reader :active_cell
29
-
30
- # Active Cell Index
31
- # 0-based index of the range reference (in the array of references listed in sqref)
32
- # containing the active cell. Only used when the selection in sqref is not contiguous.
33
- # Therefore, this value needs to be aware of the order in which the range references are
34
- # written in sqref.
35
- # When this value is out of range then activeCell can be used.
36
- # @see type
37
- # @return [Integer]
38
- # default nil
39
- attr_reader :active_cell_id
40
-
41
- # Pane
42
- # The pane to which this selection belongs.
43
- # Options are
44
- # * bottom_left: Bottom left pane, when both vertical and horizontal
45
- # splits are applied. This value is also used when only
46
- # a horizontal split has been applied, dividing the pane
47
- # into upper and lower regions. In that case, this value
48
- # specifies the bottom pane.
49
- # * bottom_right: Bottom right pane, when both vertical and horizontal
50
- # splits are applied.
51
- # * top_left: Top left pane, when both vertical and horizontal splits
52
- # are applied. This value is also used when only a horizontal
53
- # split has been applied, dividing the pane into upper and lower
54
- # regions. In that case, this value specifies the top pane.
55
- # This value is also used when only a vertical split has
56
- # been applied, dividing the pane into right and left
57
- # regions. In that case, this value specifies the left pane
58
- # * top_right: Top right pane, when both vertical and horizontal
59
- # splits are applied. This value is also used when only
60
- # a vertical split has been applied, dividing the pane
61
- # into right and left regions. In that case, this value
62
- # specifies the right pane.
63
- # @see type
64
- # @return [Symbol]
65
- # default nil
66
- attr_reader :pane
67
-
68
- # Sequence of References
69
- # Range of the selection. Can be non-contiguous set of ranges.
70
- # @see type
71
- # @return [String]
72
- # default nil
73
- attr_reader :sqref
74
-
75
- # @see active_cell
76
- def active_cell=(v)
77
- cell = (v.class == Axlsx::Cell ? v.r_abs : v)
78
- Axlsx::validate_string(cell)
79
- @active_cell = cell
80
- end
81
-
82
- # @see active_cell_id
83
- def active_cell_id=(v); Axlsx::validate_unsigned_int(v); @active_cell_id = v end
84
-
85
- # @see pane
86
- def pane=(v)
87
- Axlsx::validate_pane_type(v)
88
- @pane = Axlsx::camel(v, false)
89
- end
90
-
91
- # @see sqref
92
- def sqref=(v); Axlsx::validate_string(v); @sqref = v end
93
-
94
- # Serializes the data validation
95
- # @param [String] str
96
- # @return [String]
97
- def to_xml_string(str = '')
98
- serialized_tag 'selection', str
99
- end
100
- end
101
- end
1
+ module Axlsx
2
+ # Selection options for worksheet panes.
3
+ #
4
+ # @note The recommended way to manage the selection pane options is via SheetView#add_selection
5
+ # @see SheetView#add_selection
6
+ class Selection
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+
10
+ # Creates a new {Selection} object
11
+ # @option options [Cell, String] active_cell Active Cell Location
12
+ # @option options [Integer] active_cell_id Active Cell Index
13
+ # @option options [Symbol] pane Pane
14
+ # @option options [String] sqref Sequence of References
15
+ def initialize(options = {})
16
+ @active_cell = @active_cell_id = @pane = @sqref = nil
17
+ parse_options options
18
+ end
19
+
20
+ serializable_attributes :active_cell, :active_cell_id, :pane, :sqref
21
+ # Active Cell Location
22
+ # Location of the active cell.
23
+ # @see type
24
+ # @return [String]
25
+ # default nil
26
+ attr_reader :active_cell
27
+
28
+ # Active Cell Index
29
+ # 0-based index of the range reference (in the array of references listed in sqref)
30
+ # containing the active cell. Only used when the selection in sqref is not contiguous.
31
+ # Therefore, this value needs to be aware of the order in which the range references are
32
+ # written in sqref.
33
+ # When this value is out of range then activeCell can be used.
34
+ # @see type
35
+ # @return [Integer]
36
+ # default nil
37
+ attr_reader :active_cell_id
38
+
39
+ # Pane
40
+ # The pane to which this selection belongs.
41
+ # Options are
42
+ # * bottom_left: Bottom left pane, when both vertical and horizontal
43
+ # splits are applied. This value is also used when only
44
+ # a horizontal split has been applied, dividing the pane
45
+ # into upper and lower regions. In that case, this value
46
+ # specifies the bottom pane.
47
+ # * bottom_right: Bottom right pane, when both vertical and horizontal
48
+ # splits are applied.
49
+ # * top_left: Top left pane, when both vertical and horizontal splits
50
+ # are applied. This value is also used when only a horizontal
51
+ # split has been applied, dividing the pane into upper and lower
52
+ # regions. In that case, this value specifies the top pane.
53
+ # This value is also used when only a vertical split has
54
+ # been applied, dividing the pane into right and left
55
+ # regions. In that case, this value specifies the left pane
56
+ # * top_right: Top right pane, when both vertical and horizontal
57
+ # splits are applied. This value is also used when only
58
+ # a vertical split has been applied, dividing the pane
59
+ # into right and left regions. In that case, this value
60
+ # specifies the right pane.
61
+ # @see type
62
+ # @return [Symbol]
63
+ # default nil
64
+ attr_reader :pane
65
+
66
+ # Sequence of References
67
+ # Range of the selection. Can be non-contiguous set of ranges.
68
+ # @see type
69
+ # @return [String]
70
+ # default nil
71
+ attr_reader :sqref
72
+
73
+ # @see active_cell
74
+ def active_cell=(v)
75
+ cell = (v.class == Axlsx::Cell ? v.r_abs : v)
76
+ Axlsx::validate_string(cell)
77
+ @active_cell = cell
78
+ end
79
+
80
+ # @see active_cell_id
81
+ def active_cell_id=(v); Axlsx::validate_unsigned_int(v); @active_cell_id = v end
82
+
83
+ # @see pane
84
+ def pane=(v)
85
+ Axlsx::validate_pane_type(v)
86
+ @pane = Axlsx::camel(v, false)
87
+ end
88
+
89
+ # @see sqref
90
+ def sqref=(v); Axlsx::validate_string(v); @sqref = v end
91
+
92
+ # Serializes the data validation
93
+ # @param [String] str
94
+ # @return [String]
95
+ def to_xml_string(str = '')
96
+ serialized_tag 'selection', str
97
+ end
98
+ end
99
+ end