axlsx-alt 3.0.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 (330) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +9 -0
  3. data/.yardopts_guide +19 -0
  4. data/CHANGELOG.md +244 -0
  5. data/LICENSE +22 -0
  6. data/README.md +180 -0
  7. data/Rakefile +29 -0
  8. data/examples/2010_comments.rb +17 -0
  9. data/examples/anchor_swapping.rb +28 -0
  10. data/examples/auto_filter.rb +25 -0
  11. data/examples/basic_charts.rb +58 -0
  12. data/examples/chart_colors.rb +88 -0
  13. data/examples/colored_links.rb +59 -0
  14. data/examples/conditional_formatting/example_conditional_formatting.rb +89 -0
  15. data/examples/conditional_formatting/getting_barred.rb +37 -0
  16. data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
  17. data/examples/conditional_formatting/scaled_colors.rb +39 -0
  18. data/examples/conditional_formatting/stop_and_go.rb +37 -0
  19. data/examples/data_validation.rb +67 -0
  20. data/examples/example.rb +885 -0
  21. data/examples/extractive.rb +45 -0
  22. data/examples/image1.jpeg +0 -0
  23. data/examples/ios_preview.rb +14 -0
  24. data/examples/merge_cells.rb +17 -0
  25. data/examples/no_grid_with_borders.rb +18 -0
  26. data/examples/page_setup.rb +11 -0
  27. data/examples/pivot_table.rb +39 -0
  28. data/examples/pivot_test.rb +63 -0
  29. data/examples/sheet_protection.rb +10 -0
  30. data/examples/skydrive/real_example.rb +63 -0
  31. data/examples/split.rb +16 -0
  32. data/examples/styles.rb +66 -0
  33. data/examples/underline.rb +13 -0
  34. data/examples/wrap_text.rb +21 -0
  35. data/lib/axlsx.rb +171 -0
  36. data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
  37. data/lib/axlsx/content_type/content_type.rb +26 -0
  38. data/lib/axlsx/content_type/default.rb +25 -0
  39. data/lib/axlsx/content_type/override.rb +25 -0
  40. data/lib/axlsx/doc_props/app.rb +235 -0
  41. data/lib/axlsx/doc_props/core.rb +39 -0
  42. data/lib/axlsx/drawing/area_chart.rb +99 -0
  43. data/lib/axlsx/drawing/area_series.rb +110 -0
  44. data/lib/axlsx/drawing/ax_data_source.rb +26 -0
  45. data/lib/axlsx/drawing/axes.rb +61 -0
  46. data/lib/axlsx/drawing/axis.rb +190 -0
  47. data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
  48. data/lib/axlsx/drawing/bar_chart.rb +143 -0
  49. data/lib/axlsx/drawing/bar_series.rb +82 -0
  50. data/lib/axlsx/drawing/bubble_chart.rb +59 -0
  51. data/lib/axlsx/drawing/bubble_series.rb +63 -0
  52. data/lib/axlsx/drawing/cat_axis.rb +85 -0
  53. data/lib/axlsx/drawing/chart.rb +276 -0
  54. data/lib/axlsx/drawing/d_lbls.rb +90 -0
  55. data/lib/axlsx/drawing/drawing.rb +167 -0
  56. data/lib/axlsx/drawing/graphic_frame.rb +54 -0
  57. data/lib/axlsx/drawing/hyperlink.rb +100 -0
  58. data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
  59. data/lib/axlsx/drawing/line_chart.rb +99 -0
  60. data/lib/axlsx/drawing/line_series.rb +110 -0
  61. data/lib/axlsx/drawing/marker.rb +84 -0
  62. data/lib/axlsx/drawing/num_data.rb +52 -0
  63. data/lib/axlsx/drawing/num_data_source.rb +62 -0
  64. data/lib/axlsx/drawing/num_val.rb +34 -0
  65. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -0
  66. data/lib/axlsx/drawing/pic.rb +211 -0
  67. data/lib/axlsx/drawing/picture_locking.rb +42 -0
  68. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
  69. data/lib/axlsx/drawing/pie_series.rb +74 -0
  70. data/lib/axlsx/drawing/scaling.rb +60 -0
  71. data/lib/axlsx/drawing/scatter_chart.rb +74 -0
  72. data/lib/axlsx/drawing/scatter_series.rb +98 -0
  73. data/lib/axlsx/drawing/ser_axis.rb +45 -0
  74. data/lib/axlsx/drawing/series.rb +69 -0
  75. data/lib/axlsx/drawing/series_title.rb +23 -0
  76. data/lib/axlsx/drawing/str_data.rb +42 -0
  77. data/lib/axlsx/drawing/str_val.rb +34 -0
  78. data/lib/axlsx/drawing/title.rb +96 -0
  79. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -0
  80. data/lib/axlsx/drawing/val_axis.rb +37 -0
  81. data/lib/axlsx/drawing/view_3D.rb +115 -0
  82. data/lib/axlsx/drawing/vml_drawing.rb +42 -0
  83. data/lib/axlsx/drawing/vml_shape.rb +66 -0
  84. data/lib/axlsx/package.rb +358 -0
  85. data/lib/axlsx/rels/relationship.rb +137 -0
  86. data/lib/axlsx/rels/relationships.rb +32 -0
  87. data/lib/axlsx/stylesheet/border.rb +71 -0
  88. data/lib/axlsx/stylesheet/border_pr.rb +71 -0
  89. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
  90. data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
  91. data/lib/axlsx/stylesheet/cell_style.rb +72 -0
  92. data/lib/axlsx/stylesheet/color.rb +76 -0
  93. data/lib/axlsx/stylesheet/dxf.rb +79 -0
  94. data/lib/axlsx/stylesheet/fill.rb +35 -0
  95. data/lib/axlsx/stylesheet/font.rb +148 -0
  96. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
  97. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
  98. data/lib/axlsx/stylesheet/num_fmt.rb +86 -0
  99. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
  100. data/lib/axlsx/stylesheet/styles.rb +420 -0
  101. data/lib/axlsx/stylesheet/table_style.rb +54 -0
  102. data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
  103. data/lib/axlsx/stylesheet/table_styles.rb +46 -0
  104. data/lib/axlsx/stylesheet/xf.rb +147 -0
  105. data/lib/axlsx/util/accessors.rb +64 -0
  106. data/lib/axlsx/util/constants.rb +400 -0
  107. data/lib/axlsx/util/mime_type_utils.rb +11 -0
  108. data/lib/axlsx/util/options_parser.rb +16 -0
  109. data/lib/axlsx/util/parser.rb +44 -0
  110. data/lib/axlsx/util/serialized_attributes.rb +89 -0
  111. data/lib/axlsx/util/simple_typed_list.rb +179 -0
  112. data/lib/axlsx/util/storage.rb +146 -0
  113. data/lib/axlsx/util/validators.rb +312 -0
  114. data/lib/axlsx/version.rb +3 -0
  115. data/lib/axlsx/workbook/defined_name.rb +128 -0
  116. data/lib/axlsx/workbook/defined_names.rb +21 -0
  117. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  118. data/lib/axlsx/workbook/workbook.rb +379 -0
  119. data/lib/axlsx/workbook/workbook_view.rb +80 -0
  120. data/lib/axlsx/workbook/workbook_views.rb +22 -0
  121. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  122. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  123. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
  124. data/lib/axlsx/workbook/worksheet/break.rb +35 -0
  125. data/lib/axlsx/workbook/worksheet/cell.rb +478 -0
  126. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -0
  127. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
  128. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -0
  129. data/lib/axlsx/workbook/worksheet/col.rb +141 -0
  130. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  131. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  132. data/lib/axlsx/workbook/worksheet/cols.rb +23 -0
  133. data/lib/axlsx/workbook/worksheet/comment.rb +90 -0
  134. data/lib/axlsx/workbook/worksheet/comments.rb +97 -0
  135. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  136. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  137. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  138. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
  139. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
  140. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  141. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  142. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  143. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
  144. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
  145. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -0
  146. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
  147. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
  148. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  149. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
  150. data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
  151. data/lib/axlsx/workbook/worksheet/pivot_table.rb +289 -0
  152. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  153. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  154. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
  155. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
  156. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -0
  157. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -0
  158. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -0
  159. data/lib/axlsx/workbook/worksheet/row.rb +161 -0
  160. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  161. data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
  162. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  163. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
  164. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  165. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -0
  166. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
  167. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  168. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  169. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
  170. data/lib/axlsx/workbook/worksheet/tables.rb +34 -0
  171. data/lib/axlsx/workbook/worksheet/worksheet.rb +756 -0
  172. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  173. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  174. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  175. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  176. data/lib/schema/dc.xsd +118 -0
  177. data/lib/schema/dcmitype.xsd +52 -0
  178. data/lib/schema/dcterms.xsd +331 -0
  179. data/lib/schema/dml-chart.xsd +1499 -0
  180. data/lib/schema/dml-chartDrawing.xsd +146 -0
  181. data/lib/schema/dml-compatibility.xsd +14 -0
  182. data/lib/schema/dml-diagram.xsd +1091 -0
  183. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  184. data/lib/schema/dml-main.xsd +3048 -0
  185. data/lib/schema/dml-picture.xsd +23 -0
  186. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  187. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  188. data/lib/schema/opc-contentTypes.xsd +42 -0
  189. data/lib/schema/opc-coreProperties.xsd +54 -0
  190. data/lib/schema/opc-digSig.xsd +49 -0
  191. data/lib/schema/opc-relationships.xsd +33 -0
  192. data/lib/schema/pml.xsd +1676 -0
  193. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  194. data/lib/schema/shared-bibliography.xsd +144 -0
  195. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  196. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  197. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  198. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  199. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  200. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  201. data/lib/schema/shared-math.xsd +582 -0
  202. data/lib/schema/shared-relationshipReference.xsd +25 -0
  203. data/lib/schema/sml.xsd +4434 -0
  204. data/lib/schema/vml-main.xsd +569 -0
  205. data/lib/schema/vml-officeDrawing.xsd +509 -0
  206. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  207. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  208. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  209. data/lib/schema/wml.xsd +3644 -0
  210. data/lib/schema/xml.xsd +116 -0
  211. data/test/benchmark.rb +72 -0
  212. data/test/content_type/tc_content_type.rb +76 -0
  213. data/test/content_type/tc_default.rb +16 -0
  214. data/test/content_type/tc_override.rb +14 -0
  215. data/test/doc_props/tc_app.rb +43 -0
  216. data/test/doc_props/tc_core.rb +42 -0
  217. data/test/drawing/tc_area_chart.rb +39 -0
  218. data/test/drawing/tc_area_series.rb +71 -0
  219. data/test/drawing/tc_axes.rb +8 -0
  220. data/test/drawing/tc_axis.rb +112 -0
  221. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  222. data/test/drawing/tc_bar_chart.rb +71 -0
  223. data/test/drawing/tc_bar_series.rb +37 -0
  224. data/test/drawing/tc_bubble_chart.rb +44 -0
  225. data/test/drawing/tc_bubble_series.rb +21 -0
  226. data/test/drawing/tc_cat_axis.rb +31 -0
  227. data/test/drawing/tc_cat_axis_data.rb +27 -0
  228. data/test/drawing/tc_chart.rb +123 -0
  229. data/test/drawing/tc_d_lbls.rb +57 -0
  230. data/test/drawing/tc_data_source.rb +23 -0
  231. data/test/drawing/tc_drawing.rb +80 -0
  232. data/test/drawing/tc_graphic_frame.rb +27 -0
  233. data/test/drawing/tc_hyperlink.rb +64 -0
  234. data/test/drawing/tc_line_3d_chart.rb +47 -0
  235. data/test/drawing/tc_line_chart.rb +39 -0
  236. data/test/drawing/tc_line_series.rb +71 -0
  237. data/test/drawing/tc_marker.rb +44 -0
  238. data/test/drawing/tc_named_axis_data.rb +27 -0
  239. data/test/drawing/tc_num_data.rb +31 -0
  240. data/test/drawing/tc_num_val.rb +29 -0
  241. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  242. data/test/drawing/tc_pic.rb +103 -0
  243. data/test/drawing/tc_picture_locking.rb +72 -0
  244. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  245. data/test/drawing/tc_pie_series.rb +32 -0
  246. data/test/drawing/tc_scaling.rb +36 -0
  247. data/test/drawing/tc_scatter_chart.rb +48 -0
  248. data/test/drawing/tc_scatter_series.rb +56 -0
  249. data/test/drawing/tc_ser_axis.rb +31 -0
  250. data/test/drawing/tc_series.rb +23 -0
  251. data/test/drawing/tc_series_title.rb +33 -0
  252. data/test/drawing/tc_str_data.rb +18 -0
  253. data/test/drawing/tc_str_val.rb +30 -0
  254. data/test/drawing/tc_title.rb +54 -0
  255. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  256. data/test/drawing/tc_val_axis.rb +24 -0
  257. data/test/drawing/tc_view_3D.rb +54 -0
  258. data/test/drawing/tc_vml_drawing.rb +25 -0
  259. data/test/drawing/tc_vml_shape.rb +106 -0
  260. data/test/profile.rb +24 -0
  261. data/test/rels/tc_relationship.rb +44 -0
  262. data/test/rels/tc_relationships.rb +37 -0
  263. data/test/stylesheet/tc_border.rb +37 -0
  264. data/test/stylesheet/tc_border_pr.rb +32 -0
  265. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  266. data/test/stylesheet/tc_cell_protection.rb +29 -0
  267. data/test/stylesheet/tc_cell_style.rb +57 -0
  268. data/test/stylesheet/tc_color.rb +43 -0
  269. data/test/stylesheet/tc_dxf.rb +81 -0
  270. data/test/stylesheet/tc_fill.rb +18 -0
  271. data/test/stylesheet/tc_font.rb +121 -0
  272. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  273. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  274. data/test/stylesheet/tc_num_fmt.rb +30 -0
  275. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  276. data/test/stylesheet/tc_styles.rb +235 -0
  277. data/test/stylesheet/tc_table_style.rb +44 -0
  278. data/test/stylesheet/tc_table_style_element.rb +45 -0
  279. data/test/stylesheet/tc_table_styles.rb +29 -0
  280. data/test/stylesheet/tc_xf.rb +120 -0
  281. data/test/tc_axlsx.rb +103 -0
  282. data/test/tc_helper.rb +12 -0
  283. data/test/tc_package.rb +245 -0
  284. data/test/util/tc_mime_type_utils.rb +13 -0
  285. data/test/util/tc_serialized_attributes.rb +19 -0
  286. data/test/util/tc_simple_typed_list.rb +77 -0
  287. data/test/util/tc_validators.rb +210 -0
  288. data/test/workbook/tc_defined_name.rb +49 -0
  289. data/test/workbook/tc_shared_strings_table.rb +59 -0
  290. data/test/workbook/tc_workbook.rb +160 -0
  291. data/test/workbook/tc_workbook_view.rb +50 -0
  292. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  293. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  294. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  295. data/test/workbook/worksheet/tc_break.rb +49 -0
  296. data/test/workbook/worksheet/tc_cell.rb +387 -0
  297. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  298. data/test/workbook/worksheet/tc_col.rb +78 -0
  299. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  300. data/test/workbook/worksheet/tc_comment.rb +72 -0
  301. data/test/workbook/worksheet/tc_comments.rb +57 -0
  302. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  303. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  304. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  305. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  306. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  307. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  308. data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
  309. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  310. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  311. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  312. data/test/workbook/worksheet/tc_pane.rb +54 -0
  313. data/test/workbook/worksheet/tc_pivot_table.rb +135 -0
  314. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  315. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  316. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  317. data/test/workbook/worksheet/tc_rich_text.rb +44 -0
  318. data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
  319. data/test/workbook/worksheet/tc_row.rb +122 -0
  320. data/test/workbook/worksheet/tc_selection.rb +55 -0
  321. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  322. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  323. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -0
  324. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  325. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  326. data/test/workbook/worksheet/tc_table.rb +67 -0
  327. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  328. data/test/workbook/worksheet/tc_worksheet.rb +597 -0
  329. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  330. metadata +601 -0
@@ -0,0 +1,161 @@
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
+ # @see Row#array_to_cells
29
+ # @see Cell
30
+ def initialize(worksheet, values=[], options={})
31
+ self.worksheet = worksheet
32
+ super(Cell, nil, values.size)
33
+ self.height = options.delete(:height)
34
+ worksheet.rows << self
35
+ array_to_cells(values, options)
36
+ end
37
+
38
+ # A list of serializable attributes.
39
+ serializable_attributes :hidden, :outline_level, :collapsed, :custom_format, :s, :ph, :custom_height, :ht
40
+
41
+ # Boolean row attribute accessors
42
+ boolean_attr_accessor :hidden, :collapsed, :custom_format, :ph, :custom_height
43
+
44
+ # The worksheet this row belongs to
45
+ # @return [Worksheet]
46
+ attr_reader :worksheet
47
+
48
+ # Row height measured in point size. There is no margin padding on row height.
49
+ # @return [Float]
50
+ def height
51
+ defined?(@ht) ? @ht : nil
52
+ end
53
+
54
+ # Outlining level of the row, when outlining is on
55
+ # @return [Integer]
56
+ attr_reader :outline_level
57
+ alias :outlineLevel :outline_level
58
+
59
+ # The style applied ot the row. This affects the entire row.
60
+ # @return [Integer]
61
+ attr_reader :s
62
+
63
+ # @see Row#s
64
+ def s=(v)
65
+ Axlsx.validate_unsigned_numeric(v)
66
+ @custom_format = true
67
+ @s = v
68
+ end
69
+
70
+ # @see Row#outline
71
+ def outline_level=(v)
72
+ Axlsx.validate_unsigned_numeric(v)
73
+ @outline_level = v
74
+ end
75
+
76
+ alias :outlineLevel= :outline_level=
77
+
78
+ # The index of this row in the worksheet
79
+ # @return [Integer]
80
+ def row_index
81
+ worksheet.rows.index(self)
82
+ end
83
+
84
+ # Serializes the row
85
+ # @param [Integer] r_index The row index, 0 based.
86
+ # @param [String] str The string this rows xml will be appended to.
87
+ # @return [String]
88
+ def to_xml_string(r_index, str = '')
89
+ serialized_tag('row', str, :r => r_index + 1) do
90
+ tmp = '' # time / memory tradeoff, lots of calls to rubyzip costs more
91
+ # time..
92
+ each_with_index { |cell, c_index| cell.to_xml_string(r_index, c_index, tmp) }
93
+ str << tmp
94
+ end
95
+ end
96
+
97
+ # Adds a single cell to the row based on the data provided and updates the worksheet's autofit data.
98
+ # @return [Cell]
99
+ def add_cell(value = '', options = {})
100
+ c = Cell.new(self, value, options)
101
+ self << c
102
+ worksheet.send(:update_column_info, self, [])
103
+ c
104
+ end
105
+
106
+ # sets the color for every cell in this row
107
+ def color=(color)
108
+ each_with_index do | cell, index |
109
+ cell.color = color.is_a?(Array) ? color[index] : color
110
+ end
111
+ end
112
+
113
+ # sets the style for every cell in this row
114
+ def style=(style)
115
+ each_with_index do | cell, index |
116
+ cell.style = style.is_a?(Array) ? style[index] : style
117
+ end
118
+ end
119
+
120
+ # @see height
121
+ def height=(v)
122
+ unless v.nil?
123
+ Axlsx::validate_unsigned_numeric(v)
124
+ @custom_height = true
125
+ @ht = v
126
+ end
127
+ end
128
+
129
+ # return cells
130
+ def cells
131
+ self
132
+ end
133
+
134
+ private
135
+
136
+ # assigns the owning worksheet for this row
137
+ def worksheet=(v) DataTypeValidator.validate :row_worksheet, Worksheet, v; @worksheet=v; end
138
+
139
+ # Converts values, types, and style options into cells and associates them with this row.
140
+ # A new cell is created for each item in the values array.
141
+ # If value option is defined and is a symbol it is applied to all the cells created.
142
+ # If the value option is an array, cell types are applied by index for each cell
143
+ # If the style option is defined and is an Integer, it is applied to all cells created.
144
+ # If the style option is an array, style is applied by index for each cell.
145
+ # @option options [Array] values
146
+ # @option options [Array, Symbol] types
147
+ # @option options [Array, Integer] style
148
+ def array_to_cells(values, options={})
149
+ DataTypeValidator.validate :array_to_cells, Array, values
150
+ types, style, formula_values = options.delete(:types), options.delete(:style), options.delete(:formula_values)
151
+ values.each_with_index do |value, index|
152
+ options[:style] = style.is_a?(Array) ? style[index] : style if style
153
+ options[:type] = types.is_a?(Array) ? types[index] : types if types
154
+ options[:formula_value] = formula_values[index] if formula_values.is_a?(Array)
155
+
156
+ self[index] = Cell.new(self, value, options)
157
+ end
158
+ end
159
+ end
160
+
161
+ end
@@ -0,0 +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
@@ -0,0 +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
@@ -0,0 +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
@@ -0,0 +1,27 @@
1
+ module Axlsx
2
+
3
+ # This class manages the serialization of rows for worksheets
4
+ class SheetData
5
+
6
+ # Creates a new SheetData object
7
+ # @param [Worksheet] worksheet The worksheet that owns this sheet data.
8
+ def initialize(worksheet)
9
+ raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
10
+ @worksheet = worksheet
11
+ end
12
+
13
+ attr_reader :worksheet
14
+
15
+ # Serialize the sheet data
16
+ # @param [String] str the string this objects serializaton will be concacted to.
17
+ # @return [String]
18
+ def to_xml_string(str = '')
19
+ str << '<sheetData>'
20
+ worksheet.rows.each_with_index do |row, index|
21
+ row.to_xml_string(index, str)
22
+ end
23
+ str << '</sheetData>'
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,60 @@
1
+ module Axlsx
2
+
3
+ #Sheet formatting properties
4
+ # <xsd:complexType name="CT_SheetFormatPr">
5
+ # <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/>
6
+ # <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/>
7
+ # <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/>
8
+ # <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/>
9
+ # <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/>
10
+ # <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/>
11
+ # <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/>
12
+ # <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/>
13
+ # <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/>
14
+ #</xsd:complexType>
15
+
16
+ class SheetFormatPr
17
+ include Axlsx::SerializedAttributes
18
+ include Axlsx::OptionsParser
19
+ include Axlsx::Accessors
20
+
21
+ # creates a new sheet_format_pr object
22
+ # @param [Hash] options initialization options
23
+ # @option [Integer] base_col_width Specifies the number of characters of the maximum digit width of the normal style's font. This value does not include margin padding or extra padding for gridlines. It is only the number of characters.
24
+ # @option [Float] default_col_width Default column width measured as the number of characters of the maximum digit width of the normal style's font.
25
+ # @option [Float] default_row_height Default row height measured in point size. Optimization so we don't have to write the height on all rows. This can be written out if most rows have custom height, to achieve the optimization.
26
+ # @option [Boolean] custom_height 'True' if defaultRowHeight value has been manually set, or is different from the default value.
27
+ # @option [Boolean] zero_height 'True' if rows are hidden by default. This setting is an optimization used when most rows of the sheet are hidden.
28
+ # @option [Boolean] think_top 'True' if rows have a thick top border by default.
29
+ # @option [Boolean] thick_bottom 'True' if rows have a thick bottom border by default.
30
+ # @option [Integer] outline_level_row Highest number of outline level for rows in this sheet. These values shall be in synch with the actual sheet outline levels.
31
+ # @option [Integer] outline_level_col Highest number of outline levels for columns in this sheet. These values shall be in synch with the actual sheet outline levels.
32
+ def initialize(options={})
33
+ set_defaults
34
+ parse_options options
35
+ end
36
+
37
+ serializable_attributes :base_col_width, :default_col_width, :default_row_height,
38
+ :custom_height, :zero_height, :thick_top, :thick_bottom,
39
+ :outline_level_row, :outline_level_col
40
+
41
+ float_attr_accessor :default_col_width, :default_row_height
42
+
43
+ boolean_attr_accessor :custom_height, :zero_height, :thick_top, :thick_bottom
44
+
45
+ unsigned_int_attr_accessor :base_col_width, :outline_level_row, :outline_level_col
46
+
47
+ # serializes this object to an xml string
48
+ # @param [String] str The string this objects serialization will be appended to
49
+ # @return [String]
50
+ def to_xml_string(str='')
51
+ str << "<sheetFormatPr #{serialized_attributes}/>"
52
+ end
53
+
54
+ private
55
+ def set_defaults
56
+ @base_col_width = 8
57
+ @default_row_height = 18
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,87 @@
1
+ module Axlsx
2
+
3
+ # The SheetPr class manages serialization of a worksheet's sheetPr element.
4
+ class SheetPr
5
+ include Axlsx::OptionsParser
6
+ include Axlsx::Accessors
7
+ include Axlsx::SerializedAttributes
8
+
9
+ serializable_attributes :sync_horizontal,
10
+ :sync_vertical,
11
+ :transition_evaluation,
12
+ :transition_entry,
13
+ :published,
14
+ :filter_mode,
15
+ :enable_format_conditions_calculation,
16
+ :code_name,
17
+ :sync_ref
18
+
19
+ # These attributes are all boolean so I'm doing a bit of a hand
20
+ # waving magic show to set up the attriubte accessors
21
+ boolean_attr_accessor :sync_horizontal,
22
+ :sync_vertical,
23
+ :transition_evaluation,
24
+ :transition_entry,
25
+ :published,
26
+ :filter_mode,
27
+ :enable_format_conditions_calculation
28
+
29
+ string_attr_accessor :code_name, :sync_ref
30
+
31
+ # Creates a new SheetPr object
32
+ # @param [Worksheet] worksheet The worksheet that owns this SheetPr object
33
+ def initialize(worksheet, options={})
34
+ raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
35
+ @worksheet = worksheet
36
+ @outline_pr = nil
37
+ parse_options options
38
+ end
39
+
40
+ # The worksheet these properties apply to!
41
+ # @return [Worksheet]
42
+ attr_reader :worksheet
43
+
44
+ # The tab color of the sheet.
45
+ # @return [Color]
46
+ attr_reader :tab_color
47
+
48
+ # Serialize the object
49
+ # @param [String] str serialized output will be appended to this object if provided.
50
+ # @return [String]
51
+ def to_xml_string(str = '')
52
+ update_properties
53
+ str << "<sheetPr #{serialized_attributes}>"
54
+ tab_color.to_xml_string(str, 'tabColor') if tab_color
55
+ outline_pr.to_xml_string(str) if @outline_pr
56
+ page_setup_pr.to_xml_string(str)
57
+ str << "</sheetPr>"
58
+ end
59
+
60
+ # The PageSetUpPr for this sheet pr object
61
+ # @return [PageSetUpPr]
62
+ def page_setup_pr
63
+ @page_setup_pr ||= PageSetUpPr.new
64
+ end
65
+
66
+ # The OutlinePr for this sheet pr object
67
+ # @return [OutlinePr]
68
+ def outline_pr
69
+ @outline_pr ||= OutlinePr.new
70
+ end
71
+
72
+ # @see tab_color
73
+ def tab_color=(v)
74
+ @tab_color ||= Color.new(:rgb => v)
75
+ end
76
+
77
+ private
78
+
79
+ def update_properties
80
+ page_setup_pr.fit_to_page = worksheet.fit_to_page?
81
+ if worksheet.auto_filter.columns.size > 0
82
+ self.filter_mode = 1
83
+ self.enable_format_conditions_calculation = 1
84
+ end
85
+ end
86
+ end
87
+ end