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,164 +1,164 @@
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
+ # 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,33 +1,33 @@
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
+
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,101 +1,101 @@
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
+ # 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,29 +1,29 @@
1
- module Axlsx
2
-
3
- # the SheetCalcPr object for the worksheet
4
- # This object contains calculation properties for the worksheet.
5
- class SheetCalcPr
6
- include Axlsx::OptionsParser
7
- include Axlsx::SerializedAttributes
8
- include Axlsx::Accessors
9
- # creates a new SheetCalcPr
10
- # @param [Hash] options Options for this object
11
- # @option [Boolean] full_calc_on_load @see full_calc_on_load
12
- def initialize(options={})
13
- @full_calc_on_load = true
14
- parse_options options
15
- end
16
-
17
- boolean_attr_accessor :full_calc_on_load
18
-
19
- serializable_attributes :full_calc_on_load
20
-
21
- # Serialize the object
22
- # @param [String] str the string to append this objects serialized
23
- # content to.
24
- # @return [String]
25
- def to_xml_string(str='')
26
- str << "<sheetCalcPr #{serialized_attributes}/>"
27
- end
28
- end
29
- end
1
+ module Axlsx
2
+
3
+ # the SheetCalcPr object for the worksheet
4
+ # This object contains calculation properties for the worksheet.
5
+ class SheetCalcPr
6
+ include Axlsx::OptionsParser
7
+ include Axlsx::SerializedAttributes
8
+ include Axlsx::Accessors
9
+ # creates a new SheetCalcPr
10
+ # @param [Hash] options Options for this object
11
+ # @option [Boolean] full_calc_on_load @see full_calc_on_load
12
+ def initialize(options={})
13
+ @full_calc_on_load = true
14
+ parse_options options
15
+ end
16
+
17
+ boolean_attr_accessor :full_calc_on_load
18
+
19
+ serializable_attributes :full_calc_on_load
20
+
21
+ # Serialize the object
22
+ # @param [String] str the string to append this objects serialized
23
+ # content to.
24
+ # @return [String]
25
+ def to_xml_string(str='')
26
+ str << "<sheetCalcPr #{serialized_attributes}/>"
27
+ end
28
+ end
29
+ end