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,27 +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
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
@@ -1,87 +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
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
@@ -1,118 +1,118 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
-
4
- # The SheetProtection object manages worksheet protection options per sheet.
5
- class SheetProtection
6
-
7
- include Axlsx::OptionsParser
8
- include Axlsx::SerializedAttributes
9
- include Axlsx::Accessors
10
-
11
- # Creates a new SheetProtection instance
12
- # @option options [Boolean] sheet @see SheetProtection#sheet
13
- # @option options [Boolean] objects @see SheetProtection#objects
14
- # @option options [Boolean] scenarios @see SheetProtection#scenarios
15
- # @option options [Boolean] format_cells @see SheetProtection#objects
16
- # @option options [Boolean] format_columns @see SheetProtection#format_columns
17
- # @option options [Boolean] format_rows @see SheetProtection#format_rows
18
- # @option options [Boolean] insert_columns @see SheetProtection#insert_columns
19
- # @option options [Boolean] insert_rows @see SheetProtection#insert_rows
20
- # @option options [Boolean] insert_hyperlinks @see SheetProtection#insert_hyperlinks
21
- # @option options [Boolean] delete_columns @see SheetProtection#delete_columns
22
- # @option options [Boolean] delete_rows @see SheetProtection#delete_rows
23
- # @option options [Boolean] select_locked_cells @see SheetProtection#select_locked_cells
24
- # @option options [Boolean] sort @see SheetProtection#sort
25
- # @option options [Boolean] auto_filter @see SheetProtection#auto_filter
26
- # @option options [Boolean] pivot_tables @see SheetProtection#pivot_tables
27
- # @option options [Boolean] select_unlocked_cells @see SheetProtection#select_unlocked_cells
28
- # @option options [String] password. The password required for unlocking. @see SheetProtection#password=
29
- def initialize(options={})
30
- @objects = @scenarios = @select_locked_cells = @select_unlocked_cells = false
31
- @sheet = @format_cells = @format_rows = @format_columns = @insert_columns = @insert_rows = @insert_hyperlinks = @delete_columns = @delete_rows = @sort = @auto_filter = @pivot_tables = true
32
- @password = nil
33
- parse_options options
34
- end
35
-
36
- boolean_attr_accessor :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
37
- :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
38
- :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells
39
-
40
- serializable_attributes :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
41
- :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
42
- :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells, :salt, :password
43
-
44
- # Specifies the salt which was prepended to the user-supplied password before it was hashed using the hashing algorithm
45
- # @return [String]
46
- attr_reader :salt_value
47
-
48
- # Password hash
49
- # @return [String]
50
- # default nil
51
- attr_reader :password
52
-
53
- # This block is intended to implement the salt_value, hash_value and spin count as per the ECMA-376 standard.
54
- # However, it does not seem to actually work in EXCEL - instead they are using their old retro algorithm shown below
55
- # defined in the transitional portion of the speck. I am leaving this code in in the hope that someday Ill be able to
56
- # figure out why it does not work, and if Excel even supports it.
57
- # def propper_password=(v)
58
- # @algorithm_name = v == nil ? nil : 'SHA-1'
59
- # @salt_value = @spin_count = @hash_value = v if v == nil
60
- # return if v == nil
61
- # require 'digest/sha1'
62
- # @spin_count = 10000
63
- # @salt_value = Digest::SHA1.hexdigest(rand(36**8).to_s(36))
64
- # @spin_count.times do |count|
65
- # @hash_value = Digest::SHA1.hexdigest((@hash_value ||= (@salt_value + v.to_s)) + Array(count).pack('V'))
66
- # end
67
- # end
68
-
69
- # encodes password for protection locking
70
- def password=(v)
71
- return if v == nil
72
- @password = create_password_hash(v)
73
- end
74
-
75
- # Serialize the object
76
- # @param [String] str
77
- # @return [String]
78
- def to_xml_string(str = '')
79
- serialized_tag('sheetProtection', str)
80
- end
81
-
82
- private
83
- # Creates a password hash for a given password
84
- # @return [String]
85
- def create_password_hash(password)
86
- encoded_password = encode_password(password)
87
-
88
- password_as_hex = [encoded_password].pack("v")
89
- password_as_string = password_as_hex.unpack("H*").first.upcase
90
-
91
- password_as_string[2..3] + password_as_string[0..1]
92
- end
93
-
94
- # Encodes a given password
95
- # Based on the algorithm provided by Daniel Rentz of OpenOffice.
96
- # http://www.openoffice.org/sc/excelfileformat.pdf, Revision 1.42, page 115 (21.05.2012)
97
- # @return [String]
98
- def encode_password(password)
99
- i = 0
100
- chars = password.split(//)
101
- count = chars.size
102
-
103
- chars.collect! do |char|
104
- i += 1
105
- char = char.unpack('c')[0] << i #ord << i
106
- low_15 = char & 0x7fff
107
- high_15 = char & 0x7fff << 15
108
- high_15 = high_15 >> 15
109
- char = low_15 | high_15
110
- end
111
-
112
- encoded_password = 0x0000
113
- chars.each { |c| encoded_password ^= c }
114
- encoded_password ^= count
115
- encoded_password ^= 0xCE4B
116
- end
117
- end
118
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+
4
+ # The SheetProtection object manages worksheet protection options per sheet.
5
+ class SheetProtection
6
+
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+ include Axlsx::Accessors
10
+
11
+ # Creates a new SheetProtection instance
12
+ # @option options [Boolean] sheet @see SheetProtection#sheet
13
+ # @option options [Boolean] objects @see SheetProtection#objects
14
+ # @option options [Boolean] scenarios @see SheetProtection#scenarios
15
+ # @option options [Boolean] format_cells @see SheetProtection#objects
16
+ # @option options [Boolean] format_columns @see SheetProtection#format_columns
17
+ # @option options [Boolean] format_rows @see SheetProtection#format_rows
18
+ # @option options [Boolean] insert_columns @see SheetProtection#insert_columns
19
+ # @option options [Boolean] insert_rows @see SheetProtection#insert_rows
20
+ # @option options [Boolean] insert_hyperlinks @see SheetProtection#insert_hyperlinks
21
+ # @option options [Boolean] delete_columns @see SheetProtection#delete_columns
22
+ # @option options [Boolean] delete_rows @see SheetProtection#delete_rows
23
+ # @option options [Boolean] select_locked_cells @see SheetProtection#select_locked_cells
24
+ # @option options [Boolean] sort @see SheetProtection#sort
25
+ # @option options [Boolean] auto_filter @see SheetProtection#auto_filter
26
+ # @option options [Boolean] pivot_tables @see SheetProtection#pivot_tables
27
+ # @option options [Boolean] select_unlocked_cells @see SheetProtection#select_unlocked_cells
28
+ # @option options [String] password. The password required for unlocking. @see SheetProtection#password=
29
+ def initialize(options={})
30
+ @objects = @scenarios = @select_locked_cells = @select_unlocked_cells = false
31
+ @sheet = @format_cells = @format_rows = @format_columns = @insert_columns = @insert_rows = @insert_hyperlinks = @delete_columns = @delete_rows = @sort = @auto_filter = @pivot_tables = true
32
+ @password = nil
33
+ parse_options options
34
+ end
35
+
36
+ boolean_attr_accessor :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
37
+ :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
38
+ :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells
39
+
40
+ serializable_attributes :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
41
+ :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
42
+ :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells, :salt, :password
43
+
44
+ # Specifies the salt which was prepended to the user-supplied password before it was hashed using the hashing algorithm
45
+ # @return [String]
46
+ attr_reader :salt_value
47
+
48
+ # Password hash
49
+ # @return [String]
50
+ # default nil
51
+ attr_reader :password
52
+
53
+ # This block is intended to implement the salt_value, hash_value and spin count as per the ECMA-376 standard.
54
+ # However, it does not seem to actually work in EXCEL - instead they are using their old retro algorithm shown below
55
+ # defined in the transitional portion of the speck. I am leaving this code in in the hope that someday Ill be able to
56
+ # figure out why it does not work, and if Excel even supports it.
57
+ # def propper_password=(v)
58
+ # @algorithm_name = v == nil ? nil : 'SHA-1'
59
+ # @salt_value = @spin_count = @hash_value = v if v == nil
60
+ # return if v == nil
61
+ # require 'digest/sha1'
62
+ # @spin_count = 10000
63
+ # @salt_value = Digest::SHA1.hexdigest(rand(36**8).to_s(36))
64
+ # @spin_count.times do |count|
65
+ # @hash_value = Digest::SHA1.hexdigest((@hash_value ||= (@salt_value + v.to_s)) + Array(count).pack('V'))
66
+ # end
67
+ # end
68
+
69
+ # encodes password for protection locking
70
+ def password=(v)
71
+ return if v == nil
72
+ @password = create_password_hash(v)
73
+ end
74
+
75
+ # Serialize the object
76
+ # @param [String] str
77
+ # @return [String]
78
+ def to_xml_string(str = '')
79
+ serialized_tag('sheetProtection', str)
80
+ end
81
+
82
+ private
83
+ # Creates a password hash for a given password
84
+ # @return [String]
85
+ def create_password_hash(password)
86
+ encoded_password = encode_password(password)
87
+
88
+ password_as_hex = [encoded_password].pack("v")
89
+ password_as_string = password_as_hex.unpack("H*").first.upcase
90
+
91
+ password_as_string[2..3] + password_as_string[0..1]
92
+ end
93
+
94
+ # Encodes a given password
95
+ # Based on the algorithm provided by Daniel Rentz of OpenOffice.
96
+ # http://www.openoffice.org/sc/excelfileformat.pdf, Revision 1.42, page 115 (21.05.2012)
97
+ # @return [String]
98
+ def encode_password(password)
99
+ i = 0
100
+ chars = password.split(//)
101
+ count = chars.size
102
+
103
+ chars.collect! do |char|
104
+ i += 1
105
+ char = char.unpack('c')[0] << i #ord << i
106
+ low_15 = char & 0x7fff
107
+ high_15 = char & 0x7fff << 15
108
+ high_15 = high_15 >> 15
109
+ char = low_15 | high_15
110
+ end
111
+
112
+ encoded_password = 0x0000
113
+ chars.each { |c| encoded_password ^= c }
114
+ encoded_password ^= count
115
+ encoded_password ^= 0xCE4B
116
+ end
117
+ end
118
+ end