caxlsx 3.1.1 → 3.2.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -343
  5. data/LICENSE +21 -21
  6. data/README.md +168 -172
  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 +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -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 -98
  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 +97 -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 +388 -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 -71
  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 +494 -420
  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 +410 -401
  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 +395 -370
  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/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -294
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -768
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -171
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -86
  186. data/test/drawing/tc_bar_chart.rb +86 -86
  187. data/test/drawing/tc_bar_series.rb +46 -46
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -10
  247. data/test/tc_package.rb +317 -314
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -143
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -62
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -160
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -77
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +101 -101
@@ -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