caxlsx 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +394 -354
  5. data/LICENSE +21 -21
  6. data/README.md +184 -168
  7. data/Rakefile +28 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
  10. data/lib/axlsx/content_type/content_type.rb +22 -26
  11. data/lib/axlsx/content_type/default.rb +21 -25
  12. data/lib/axlsx/content_type/override.rb +21 -25
  13. data/lib/axlsx/doc_props/app.rb +230 -235
  14. data/lib/axlsx/doc_props/core.rb +34 -39
  15. data/lib/axlsx/drawing/area_chart.rb +96 -99
  16. data/lib/axlsx/drawing/area_series.rb +107 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +21 -26
  18. data/lib/axlsx/drawing/axes.rb +60 -61
  19. data/lib/axlsx/drawing/axis.rb +185 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +135 -138
  22. data/lib/axlsx/drawing/bar_series.rb +91 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +56 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +60 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +80 -85
  26. data/lib/axlsx/drawing/chart.rb +294 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +92 -90
  28. data/lib/axlsx/drawing/drawing.rb +163 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +51 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +97 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
  32. data/lib/axlsx/drawing/line_chart.rb +96 -99
  33. data/lib/axlsx/drawing/line_series.rb +107 -110
  34. data/lib/axlsx/drawing/marker.rb +80 -84
  35. data/lib/axlsx/drawing/num_data.rb +47 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +58 -62
  37. data/lib/axlsx/drawing/num_val.rb +31 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
  39. data/lib/axlsx/drawing/pic.rb +244 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +39 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
  42. data/lib/axlsx/drawing/pie_series.rb +69 -74
  43. data/lib/axlsx/drawing/scaling.rb +57 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +71 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +126 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +41 -45
  47. data/lib/axlsx/drawing/series.rb +67 -69
  48. data/lib/axlsx/drawing/series_title.rb +23 -25
  49. data/lib/axlsx/drawing/str_data.rb +37 -42
  50. data/lib/axlsx/drawing/str_val.rb +31 -34
  51. data/lib/axlsx/drawing/title.rb +104 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
  53. data/lib/axlsx/drawing/val_axis.rb +34 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +39 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +63 -66
  57. data/lib/axlsx/package.rb +397 -388
  58. data/lib/axlsx/rels/relationship.rb +127 -130
  59. data/lib/axlsx/rels/relationships.rb +29 -32
  60. data/lib/axlsx/stylesheet/border.rb +70 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +69 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +68 -72
  65. data/lib/axlsx/stylesheet/color.rb +77 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +75 -79
  67. data/lib/axlsx/stylesheet/fill.rb +31 -35
  68. data/lib/axlsx/stylesheet/font.rb +157 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
  73. data/lib/axlsx/stylesheet/styles.rb +543 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +51 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +42 -46
  77. data/lib/axlsx/stylesheet/xf.rb +144 -147
  78. data/lib/axlsx/util/accessors.rb +62 -64
  79. data/lib/axlsx/util/constants.rb +414 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +24 -11
  81. data/lib/axlsx/util/options_parser.rb +15 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +88 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +180 -179
  84. data/lib/axlsx/util/storage.rb +142 -146
  85. data/lib/axlsx/util/validators.rb +315 -312
  86. data/lib/axlsx/util/zip_command.rb +71 -73
  87. data/lib/axlsx/version.rb +4 -5
  88. data/lib/axlsx/workbook/defined_name.rb +129 -128
  89. data/lib/axlsx/workbook/defined_names.rb +20 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
  91. data/lib/axlsx/workbook/workbook.rb +430 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +75 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +20 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +32 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +16 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +142 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +173 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
  139. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  140. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
  141. data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
  142. data/lib/axlsx/workbook/worksheet/table.rb +100 -102
  143. data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
  144. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  145. data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
  146. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
  149. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  150. data/lib/axlsx.rb +218 -185
  151. data/lib/caxlsx.rb +1 -2
  152. data/lib/schema/dc.xsd +118 -118
  153. data/lib/schema/dcmitype.xsd +51 -51
  154. data/lib/schema/dcterms.xsd +331 -331
  155. data/lib/schema/dml-chartDrawing.xsd +146 -146
  156. data/lib/schema/dml-compatibility.xsd +14 -14
  157. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  158. data/lib/schema/dml-main.xsd +3048 -3048
  159. data/lib/schema/dml-picture.xsd +23 -23
  160. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  161. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  162. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  163. data/lib/schema/shared-bibliography.xsd +144 -144
  164. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  165. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  166. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  167. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  168. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  169. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  170. data/lib/schema/shared-relationshipReference.xsd +25 -25
  171. data/lib/schema/vml-main.xsd +569 -569
  172. data/lib/schema/vml-officeDrawing.xsd +509 -509
  173. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  174. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  175. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  176. data/lib/schema/xml.xsd +116 -116
  177. metadata +5 -252
  178. data/test/benchmark.rb +0 -72
  179. data/test/content_type/tc_content_type.rb +0 -76
  180. data/test/content_type/tc_default.rb +0 -16
  181. data/test/content_type/tc_override.rb +0 -14
  182. data/test/doc_props/tc_app.rb +0 -43
  183. data/test/doc_props/tc_core.rb +0 -42
  184. data/test/drawing/tc_area_chart.rb +0 -39
  185. data/test/drawing/tc_area_series.rb +0 -71
  186. data/test/drawing/tc_axes.rb +0 -8
  187. data/test/drawing/tc_axis.rb +0 -112
  188. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  189. data/test/drawing/tc_bar_chart.rb +0 -86
  190. data/test/drawing/tc_bar_series.rb +0 -46
  191. data/test/drawing/tc_bubble_chart.rb +0 -44
  192. data/test/drawing/tc_bubble_series.rb +0 -21
  193. data/test/drawing/tc_cat_axis.rb +0 -31
  194. data/test/drawing/tc_cat_axis_data.rb +0 -27
  195. data/test/drawing/tc_chart.rb +0 -123
  196. data/test/drawing/tc_d_lbls.rb +0 -57
  197. data/test/drawing/tc_data_source.rb +0 -23
  198. data/test/drawing/tc_drawing.rb +0 -80
  199. data/test/drawing/tc_graphic_frame.rb +0 -27
  200. data/test/drawing/tc_hyperlink.rb +0 -64
  201. data/test/drawing/tc_line_3d_chart.rb +0 -47
  202. data/test/drawing/tc_line_chart.rb +0 -39
  203. data/test/drawing/tc_line_series.rb +0 -71
  204. data/test/drawing/tc_marker.rb +0 -44
  205. data/test/drawing/tc_named_axis_data.rb +0 -27
  206. data/test/drawing/tc_num_data.rb +0 -31
  207. data/test/drawing/tc_num_val.rb +0 -29
  208. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  209. data/test/drawing/tc_pic.rb +0 -103
  210. data/test/drawing/tc_picture_locking.rb +0 -72
  211. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  212. data/test/drawing/tc_pie_series.rb +0 -33
  213. data/test/drawing/tc_scaling.rb +0 -36
  214. data/test/drawing/tc_scatter_chart.rb +0 -48
  215. data/test/drawing/tc_scatter_series.rb +0 -74
  216. data/test/drawing/tc_ser_axis.rb +0 -31
  217. data/test/drawing/tc_series.rb +0 -23
  218. data/test/drawing/tc_series_title.rb +0 -54
  219. data/test/drawing/tc_str_data.rb +0 -18
  220. data/test/drawing/tc_str_val.rb +0 -30
  221. data/test/drawing/tc_title.rb +0 -70
  222. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  223. data/test/drawing/tc_val_axis.rb +0 -24
  224. data/test/drawing/tc_view_3D.rb +0 -54
  225. data/test/drawing/tc_vml_drawing.rb +0 -25
  226. data/test/drawing/tc_vml_shape.rb +0 -106
  227. data/test/fixtures/image1.gif +0 -0
  228. data/test/fixtures/image1.jpeg +0 -0
  229. data/test/fixtures/image1.jpg +0 -0
  230. data/test/fixtures/image1.png +0 -0
  231. data/test/fixtures/image1_fake.jpg +0 -0
  232. data/test/profile.rb +0 -24
  233. data/test/rels/tc_relationship.rb +0 -52
  234. data/test/rels/tc_relationships.rb +0 -37
  235. data/test/stylesheet/tc_border.rb +0 -37
  236. data/test/stylesheet/tc_border_pr.rb +0 -32
  237. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  238. data/test/stylesheet/tc_cell_protection.rb +0 -29
  239. data/test/stylesheet/tc_cell_style.rb +0 -57
  240. data/test/stylesheet/tc_color.rb +0 -43
  241. data/test/stylesheet/tc_dxf.rb +0 -81
  242. data/test/stylesheet/tc_fill.rb +0 -18
  243. data/test/stylesheet/tc_font.rb +0 -133
  244. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  245. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  246. data/test/stylesheet/tc_num_fmt.rb +0 -30
  247. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  248. data/test/stylesheet/tc_styles.rb +0 -309
  249. data/test/stylesheet/tc_table_style.rb +0 -44
  250. data/test/stylesheet/tc_table_style_element.rb +0 -45
  251. data/test/stylesheet/tc_table_styles.rb +0 -29
  252. data/test/stylesheet/tc_xf.rb +0 -120
  253. data/test/tc_axlsx.rb +0 -109
  254. data/test/tc_helper.rb +0 -10
  255. data/test/tc_package.rb +0 -317
  256. data/test/util/tc_mime_type_utils.rb +0 -13
  257. data/test/util/tc_serialized_attributes.rb +0 -19
  258. data/test/util/tc_simple_typed_list.rb +0 -77
  259. data/test/util/tc_validators.rb +0 -210
  260. data/test/workbook/tc_defined_name.rb +0 -49
  261. data/test/workbook/tc_shared_strings_table.rb +0 -59
  262. data/test/workbook/tc_workbook.rb +0 -165
  263. data/test/workbook/tc_workbook_view.rb +0 -50
  264. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  265. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  266. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  267. data/test/workbook/worksheet/tc_break.rb +0 -49
  268. data/test/workbook/worksheet/tc_cell.rb +0 -465
  269. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  270. data/test/workbook/worksheet/tc_col.rb +0 -93
  271. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  272. data/test/workbook/worksheet/tc_comment.rb +0 -72
  273. data/test/workbook/worksheet/tc_comments.rb +0 -57
  274. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  275. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  276. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  277. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  278. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  279. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  280. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  281. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  282. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  283. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  284. data/test/workbook/worksheet/tc_pane.rb +0 -54
  285. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  286. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  287. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  288. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  289. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  290. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  291. data/test/workbook/worksheet/tc_row.rb +0 -160
  292. data/test/workbook/worksheet/tc_selection.rb +0 -55
  293. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  294. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  295. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  296. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  297. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  298. data/test/workbook/worksheet/tc_table.rb +0 -77
  299. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  300. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  301. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,240 +1,237 @@
1
- module Axlsx
2
- # Page setup settings for printing a worksheet. All settings are optional.
3
- #
4
- # @note The recommended way to manage print options is via Worksheet#page_setup
5
- # @see Worksheet#print_options
6
- # @see Worksheet#initialize
7
- class PageSetup
8
-
9
- include Axlsx::OptionsParser
10
- include Axlsx::SerializedAttributes
11
-
12
- # Creates a new PageSetup object
13
- # @option options [Integer] fit_to_height Number of vertical pages to fit on
14
- # @option options [Integer] fit_to_width Number of horizontal pages to fit on
15
- # @option options [Symbol] orientation Orientation of the page (:default, :landscape, :portrait)
16
- # @option options [String] paper_height Height of paper (number followed by unit identifier: "297mm", "11in")
17
- # @option options [String] paper_width Width of paper (number followed by unit identifier: "210mm", "8.5in")
18
- # @option options [Integer] scale Print scaling (percent value, integer ranging from 10 to 400)
19
- # @option options [Integer] paper_size - the size of paper to use
20
- def initialize(options = {})
21
- parse_options options
22
- end
23
-
24
- serializable_attributes :fit_to_height, :fit_to_width, :orientation, :paper_height, :paper_width, :scale, :paper_size
25
-
26
- # TODO: Attributes defined by Open XML spec that are not implemented yet:
27
- # * blackAndWhite
28
- # * cellComments
29
- # * copies
30
- # * draft
31
- # * errors
32
- # * firstPageNumber
33
- # * horizontalDpi
34
- # * pageOrder
35
- # * useFirstPageNumber
36
- # * usePrinterDefaults
37
- # * verticalDpi
38
-
39
- # Number of vertical pages to fit on.
40
- # @note PageSetup#fit_to is the recomended way to manage page fitting as only specifying one of fit_to_width/fit_to_height will result in the counterpart
41
- # being set to 1.
42
- # @return [Integer]
43
- attr_reader :fit_to_height
44
-
45
- # Number of horizontal pages to fit on.
46
- # @note PageSetup#fit_to is the recomended way to manage page fitting as only specifying one of width/height will result in the counterpart
47
- # being set to 1.
48
- # @return [Integer]
49
- attr_reader :fit_to_width
50
-
51
- # Orientation of the page (:default, :landscape, :portrait)
52
- # @return [Symbol]
53
- attr_reader :orientation
54
-
55
- # Height of paper (string containing a number followed by a unit identifier: "297mm", "11in")
56
- # @return [String]
57
- attr_reader :paper_height
58
-
59
- # Width of paper (string containing a number followed by a unit identifier: "210mm", "8.5in")
60
- # @return [String]
61
- attr_reader :paper_width
62
-
63
- # Print scaling (percent value, given as integer ranging from 10 to 400)
64
- # @return [Integer]
65
- attr_reader :scale
66
-
67
- # The paper size to use in printing
68
- #1 = Letter paper (8.5 in. by 11 in.)
69
- #2 = Letter small paper (8.5 in. by 11 in.)
70
- #3 = Tabloid paper (11 in. by 17 in.)
71
- #4 = Ledger paper (17 in. by 11 in.)
72
- #5 = Legal paper (8.5 in. by 14 in.)
73
- #6 = Statement paper (5.5 in. by 8.5 in.)
74
- #7 = Executive paper (7.25 in. by 10.5 in.)
75
- #8 = A3 paper (297 mm by 420 mm)
76
- #9 = A4 paper (210 mm by 297 mm)
77
- #10 = A4 small paper (210 mm by 297 mm)
78
- #11 = A5 paper (148 mm by 210 mm)
79
- #12 = B4 paper (250 mm by 353 mm)
80
- #13 = B5 paper (176 mm by 250 mm)
81
- #14 = Folio paper (8.5 in. by 13 in.)
82
- #15 = Quarto paper (215 mm by 275 mm)
83
- #16 = Standard paper (10 in. by 14 in.)
84
- #17 = Standard paper (11 in. by 17 in.)
85
- #18 = Note paper (8.5 in. by 11 in.)
86
- #19 = #9 envelope (3.875 in. by 8.875 in.)
87
- #20 = #10 envelope (4.125 in. by 9.5 in.)
88
- #21 = #11 envelope (4.5 in. by 10.375 in.)
89
- #22 = #12 envelope (4.75 in. by 11 in.)
90
- #23 = #14 envelope (5 in. by 11.5 in.) 24 = C paper (17 in. by 22 in.)
91
- #25 = D paper (22 in. by 34 in.)
92
- #26 = E paper (34 in. by 44 in.)
93
- #27 = DL envelope (110 mm by 220 mm)
94
- #28 = C5 envelope (162 mm by 229 mm)
95
- #29 = C3 envelope (324 mm by 458 mm)
96
- #30 = C4 envelope (229 mm by 324 mm)
97
- #31 = C6 envelope (114 mm by 162 mm)
98
- #32 = C65 envelope (114 mm by 229 mm)
99
- #33 = B4 envelope (250 mm by 353 mm)
100
- #34 = B5 envelope (176 mm by 250 mm)
101
- #35 = B6 envelope (176 mm by 125 mm)
102
- #36 = Italy envelope (110 mm by 230 mm)
103
- #37 = Monarch envelope (3.875 in. by 7.5 in.). 38 = 6 3/4 envelope (3.625 in. by 6.5 in.)
104
- #39 = US standard fanfold (14.875 in. by 11 in.)
105
- #40 = German standard fanfold (8.5 in. by 12 in.)
106
- #41 = German legal fanfold (8.5 in. by 13 in.)
107
- #42 = ISO B4 (250 mm by 353 mm)
108
- #43 = Japanese double postcard (200 mm by 148 mm)
109
- #44 = Standard paper (9 in. by 11 in.)
110
- #45 = Standard paper (10 in. by 11 in.)
111
- #46 = Standard paper (15 in. by 11 in.)
112
- #47 = Invite envelope (220 mm by 220 mm)
113
- #50 = Letter extra paper (9.275 in. by 12 in.)
114
- #51 = Legal extra paper (9.275 in. by 15 in.)
115
- #52 = Tabloid extra paper (11.69 in. by 18 in.)
116
- #53 = A4 extra paper (236 mm by 322 mm)
117
- #54 = Letter transverse paper (8.275 in. by 11 in.)
118
- #55 = A4 transverse paper (210 mm by 297 mm)
119
- #56 = Letter extra transverse paper (9.275 in. by 12 in.)
120
- #57 = SuperA/SuperA/A4 paper (227 mm by 356 mm)
121
- #58 = SuperB/SuperB/A3 paper (305 mm by 487 mm)
122
- #59 = Letter plus paper (8.5 in. by 12.69 in.)
123
- #60 = A4 plus paper (210 mm by 330 mm)
124
- #61 = A5 transverse paper (148 mm by 210 mm)
125
- #62 = JIS B5 transverse paper (182 mm by 257 mm)
126
- #63 = A3 extra paper (322 mm by 445 mm)
127
- #64 = A5 extra paper (174 mm by 235 mm)
128
- #65 = ISO B5 extra paper (201 mm by 276 mm)
129
- #66 = A2 paper (420 mm by 594 mm)
130
- #67 = A3 transverse paper (297 mm by 420 mm)
131
- #68 = A3 extra transverse paper (322 mm by 445 mm)
132
- #69 = Japanese Double Postcard (200 mm x 148 mm)
133
- #70 = A6 (105 mm x 148 mm
134
- #71 = Japanese Envelope Kaku #2
135
- #72 = Japanese Envelope Kaku #3
136
- #73 = Japanese Envelope Chou #3
137
- #74 = Japanese Envelope Chou #4
138
- #75 = Letter Rotated (11in x 8 1/2 11 in)
139
- #76 = A3 Rotated (420 mm x 297 mm)
140
- #77 = A4 Rotated (297 mm x 210 mm)
141
- #78 = A5 Rotated (210 mm x 148 mm)
142
- #79 = B4 (JIS) Rotated (364 mm x 257 mm)
143
- #80 = B5 (JIS) Rotated (257 mm x 182 mm)
144
- #81 = Japanese Postcard Rotated (148 mm x 100 mm)
145
- #82 = Double Japanese Postcard Rotated (148 mm x 200 mm)
146
- #83 = A6 Rotated (148 mm x 105 mm)
147
- #84 = Japanese Envelope Kaku #2 Rotated
148
- #85 = Japanese Envelope Kaku #3 Rotated
149
- #86 = Japanese Envelope Chou #3 Rotated
150
- #87 = Japanese Envelope Chou #4 Rotated
151
- #88 = B6 (JIS) (128 mm x 182 mm)
152
- #89 = B6 (JIS) Rotated (182 mm x 128 mm)
153
- #90 = (12 in x 11 in)
154
- #91 = Japanese Envelope You #4
155
- #92 = Japanese Envelope You #4 Rotated
156
- #93 = PRC 16K (146 mm x 215 mm)
157
- #94 = PRC 32K (97 mm x 151 mm)
158
- #95 = PRC 32K(Big) (97 mm x 151 mm)
159
- #96 = PRC Envelope #1 (102 mm x 165 mm)
160
- #97 = PRC Envelope #2 (102 mm x 176 mm)
161
- #98 = PRC Envelope #3 (125 mm x 176 mm)
162
- #99 = PRC Envelope #4 (110 mm x 208 mm)
163
- #100 = PRC Envelope #5 (110 mm x 220 mm)
164
- #101 = PRC Envelope #6 (120 mm x 230 mm)
165
- #102 = PRC Envelope #7 (160 mm x 230 mm)
166
- #103 = PRC Envelope #8 (120 mm x 309 mm)
167
- #104 = PRC Envelope #9 (229 mm x 324 mm)
168
- #105 = PRC Envelope #10 (324 mm x 458 mm)
169
- #106 = PRC 16K Rotated
170
- #107 = PRC 32K Rotated
171
- #108 = PRC 32K(Big) Rotated
172
- #109 = PRC Envelope #1 Rotated (165 mm x 102 mm)
173
- #110 = PRC Envelope #2 Rotated (176 mm x 102 mm)
174
- #111 = PRC Envelope #3 Rotated (176 mm x 125 mm)
175
- #112 = PRC Envelope #4 Rotated (208 mm x 110 mm)
176
- #113 = PRC Envelope #5 Rotated (220 mm x 110 mm)
177
- #114 = PRC Envelope #6 Rotated (230 mm x 120 mm)
178
- #115 = PRC Envelope #7 Rotated (230 mm x 160 mm)
179
- #116 = PRC Envelope #8 Rotated (309 mm x 120 mm)
180
- #117 = PRC Envelope #9 Rotated (324 mm x 229 mm)
181
- #118 = PRC Envelope #10 Rotated (458 mm x 324 mm)
182
- # @return [Integer]
183
- attr_reader :paper_size
184
-
185
-
186
- # Sets the paper size for printing.
187
- # @see PageSetup#paper_size
188
- # @return integer
189
- def paper_size=(size)
190
- RestrictionValidator.validate 'paper_size', (1..118), size
191
- @paper_size = size
192
- end
193
-
194
- # Set some or all page settings at once.
195
- # @param [Hash] options The page settings to set (possible keys are :fit_to_height, :fit_to_width, :orientation, :paper_height, :paper_width, and :scale).
196
- def set(options)
197
- parse_options options
198
- end
199
-
200
- # @see fit_to_height
201
- def fit_to_height=(v); Axlsx::validate_unsigned_int(v); @fit_to_height = v; end
202
- # @see fit_to_width
203
- def fit_to_width=(v); Axlsx::validate_unsigned_int(v); @fit_to_width = v; end
204
- # @see orientation
205
- def orientation=(v); Axlsx::validate_page_orientation(v); @orientation = v; end
206
- # @see paper_height
207
- def paper_height=(v); Axlsx::validate_number_with_unit(v); @paper_height = v; end
208
- # @see paper_width
209
- def paper_width=(v); Axlsx::validate_number_with_unit(v); @paper_width = v; end
210
- # @see scale
211
- def scale=(v); Axlsx::validate_scale_10_400(v); @scale = v; end
212
-
213
- # convenience method to achieve sanity when setting fit_to_width and fit_to_height
214
- # as they both default to 1 if only their counterpart is specified.
215
- # @note This method will overwrite any value you explicitly set via the fit_to_height or fit_to_width methods.
216
- # @option options [Integer] width The number of pages to fit this worksheet on horizontally. Default 999
217
- # @option options [Integer] height The number of pages to fit this worksheet on vertically. Default 999
218
- def fit_to(options={})
219
- self.fit_to_width = options[:width] || 999
220
- self.fit_to_height = options[:height] || 999
221
- [@fit_to_width, @fit_to_height]
222
- end
223
-
224
-
225
- # helper method for worksheet to determine if the page setup is configured for fit to page printing
226
- # We treat any page set up that has a value set for fit_to_width or fit_to_height value as fit_to_page.
227
- # @return [Boolean]
228
- def fit_to_page?
229
- # is there some better what to express this?
230
- (fit_to_width != nil || fit_to_height != nil)
231
- end
232
-
233
- # Serializes the page settings element.
234
- # @param [String] str
235
- # @return [String]
236
- def to_xml_string(str = '')
237
- serialized_tag('pageSetup', str)
238
- end
239
- end
240
- end
1
+ module Axlsx
2
+ # Page setup settings for printing a worksheet. All settings are optional.
3
+ #
4
+ # @note The recommended way to manage print options is via Worksheet#page_setup
5
+ # @see Worksheet#print_options
6
+ # @see Worksheet#initialize
7
+ class PageSetup
8
+ include Axlsx::OptionsParser
9
+ include Axlsx::SerializedAttributes
10
+
11
+ # Creates a new PageSetup object
12
+ # @option options [Integer] fit_to_height Number of vertical pages to fit on
13
+ # @option options [Integer] fit_to_width Number of horizontal pages to fit on
14
+ # @option options [Symbol] orientation Orientation of the page (:default, :landscape, :portrait)
15
+ # @option options [String] paper_height Height of paper (number followed by unit identifier: "297mm", "11in")
16
+ # @option options [String] paper_width Width of paper (number followed by unit identifier: "210mm", "8.5in")
17
+ # @option options [Integer] scale Print scaling (percent value, integer ranging from 10 to 400)
18
+ # @option options [Integer] paper_size - the size of paper to use
19
+ def initialize(options = {})
20
+ parse_options options
21
+ end
22
+
23
+ serializable_attributes :fit_to_height, :fit_to_width, :orientation, :paper_height, :paper_width, :scale, :paper_size
24
+
25
+ # TODO: Attributes defined by Open XML spec that are not implemented yet:
26
+ # * blackAndWhite
27
+ # * cellComments
28
+ # * copies
29
+ # * draft
30
+ # * errors
31
+ # * firstPageNumber
32
+ # * horizontalDpi
33
+ # * pageOrder
34
+ # * useFirstPageNumber
35
+ # * usePrinterDefaults
36
+ # * verticalDpi
37
+
38
+ # Number of vertical pages to fit on.
39
+ # @note PageSetup#fit_to is the recomended way to manage page fitting as only specifying one of fit_to_width/fit_to_height will result in the counterpart
40
+ # being set to 1.
41
+ # @return [Integer]
42
+ attr_reader :fit_to_height
43
+
44
+ # Number of horizontal pages to fit on.
45
+ # @note PageSetup#fit_to is the recomended way to manage page fitting as only specifying one of width/height will result in the counterpart
46
+ # being set to 1.
47
+ # @return [Integer]
48
+ attr_reader :fit_to_width
49
+
50
+ # Orientation of the page (:default, :landscape, :portrait)
51
+ # @return [Symbol]
52
+ attr_reader :orientation
53
+
54
+ # Height of paper (string containing a number followed by a unit identifier: "297mm", "11in")
55
+ # @return [String]
56
+ attr_reader :paper_height
57
+
58
+ # Width of paper (string containing a number followed by a unit identifier: "210mm", "8.5in")
59
+ # @return [String]
60
+ attr_reader :paper_width
61
+
62
+ # Print scaling (percent value, given as integer ranging from 10 to 400)
63
+ # @return [Integer]
64
+ attr_reader :scale
65
+
66
+ # The paper size to use in printing
67
+ # 1 = Letter paper (8.5 in. by 11 in.)
68
+ # 2 = Letter small paper (8.5 in. by 11 in.)
69
+ # 3 = Tabloid paper (11 in. by 17 in.)
70
+ # 4 = Ledger paper (17 in. by 11 in.)
71
+ # 5 = Legal paper (8.5 in. by 14 in.)
72
+ # 6 = Statement paper (5.5 in. by 8.5 in.)
73
+ # 7 = Executive paper (7.25 in. by 10.5 in.)
74
+ # 8 = A3 paper (297 mm by 420 mm)
75
+ # 9 = A4 paper (210 mm by 297 mm)
76
+ # 10 = A4 small paper (210 mm by 297 mm)
77
+ # 11 = A5 paper (148 mm by 210 mm)
78
+ # 12 = B4 paper (250 mm by 353 mm)
79
+ # 13 = B5 paper (176 mm by 250 mm)
80
+ # 14 = Folio paper (8.5 in. by 13 in.)
81
+ # 15 = Quarto paper (215 mm by 275 mm)
82
+ # 16 = Standard paper (10 in. by 14 in.)
83
+ # 17 = Standard paper (11 in. by 17 in.)
84
+ # 18 = Note paper (8.5 in. by 11 in.)
85
+ # 19 = #9 envelope (3.875 in. by 8.875 in.)
86
+ # 20 = #10 envelope (4.125 in. by 9.5 in.)
87
+ # 21 = #11 envelope (4.5 in. by 10.375 in.)
88
+ # 22 = #12 envelope (4.75 in. by 11 in.)
89
+ # 23 = #14 envelope (5 in. by 11.5 in.) 24 = C paper (17 in. by 22 in.)
90
+ # 25 = D paper (22 in. by 34 in.)
91
+ # 26 = E paper (34 in. by 44 in.)
92
+ # 27 = DL envelope (110 mm by 220 mm)
93
+ # 28 = C5 envelope (162 mm by 229 mm)
94
+ # 29 = C3 envelope (324 mm by 458 mm)
95
+ # 30 = C4 envelope (229 mm by 324 mm)
96
+ # 31 = C6 envelope (114 mm by 162 mm)
97
+ # 32 = C65 envelope (114 mm by 229 mm)
98
+ # 33 = B4 envelope (250 mm by 353 mm)
99
+ # 34 = B5 envelope (176 mm by 250 mm)
100
+ # 35 = B6 envelope (176 mm by 125 mm)
101
+ # 36 = Italy envelope (110 mm by 230 mm)
102
+ # 37 = Monarch envelope (3.875 in. by 7.5 in.). 38 = 6 3/4 envelope (3.625 in. by 6.5 in.)
103
+ # 39 = US standard fanfold (14.875 in. by 11 in.)
104
+ # 40 = German standard fanfold (8.5 in. by 12 in.)
105
+ # 41 = German legal fanfold (8.5 in. by 13 in.)
106
+ # 42 = ISO B4 (250 mm by 353 mm)
107
+ # 43 = Japanese double postcard (200 mm by 148 mm)
108
+ # 44 = Standard paper (9 in. by 11 in.)
109
+ # 45 = Standard paper (10 in. by 11 in.)
110
+ # 46 = Standard paper (15 in. by 11 in.)
111
+ # 47 = Invite envelope (220 mm by 220 mm)
112
+ # 50 = Letter extra paper (9.275 in. by 12 in.)
113
+ # 51 = Legal extra paper (9.275 in. by 15 in.)
114
+ # 52 = Tabloid extra paper (11.69 in. by 18 in.)
115
+ # 53 = A4 extra paper (236 mm by 322 mm)
116
+ # 54 = Letter transverse paper (8.275 in. by 11 in.)
117
+ # 55 = A4 transverse paper (210 mm by 297 mm)
118
+ # 56 = Letter extra transverse paper (9.275 in. by 12 in.)
119
+ # 57 = SuperA/SuperA/A4 paper (227 mm by 356 mm)
120
+ # 58 = SuperB/SuperB/A3 paper (305 mm by 487 mm)
121
+ # 59 = Letter plus paper (8.5 in. by 12.69 in.)
122
+ # 60 = A4 plus paper (210 mm by 330 mm)
123
+ # 61 = A5 transverse paper (148 mm by 210 mm)
124
+ # 62 = JIS B5 transverse paper (182 mm by 257 mm)
125
+ # 63 = A3 extra paper (322 mm by 445 mm)
126
+ # 64 = A5 extra paper (174 mm by 235 mm)
127
+ # 65 = ISO B5 extra paper (201 mm by 276 mm)
128
+ # 66 = A2 paper (420 mm by 594 mm)
129
+ # 67 = A3 transverse paper (297 mm by 420 mm)
130
+ # 68 = A3 extra transverse paper (322 mm by 445 mm)
131
+ # 69 = Japanese Double Postcard (200 mm x 148 mm)
132
+ # 70 = A6 (105 mm x 148 mm
133
+ # 71 = Japanese Envelope Kaku #2
134
+ # 72 = Japanese Envelope Kaku #3
135
+ # 73 = Japanese Envelope Chou #3
136
+ # 74 = Japanese Envelope Chou #4
137
+ # 75 = Letter Rotated (11in x 8 1/2 11 in)
138
+ # 76 = A3 Rotated (420 mm x 297 mm)
139
+ # 77 = A4 Rotated (297 mm x 210 mm)
140
+ # 78 = A5 Rotated (210 mm x 148 mm)
141
+ # 79 = B4 (JIS) Rotated (364 mm x 257 mm)
142
+ # 80 = B5 (JIS) Rotated (257 mm x 182 mm)
143
+ # 81 = Japanese Postcard Rotated (148 mm x 100 mm)
144
+ # 82 = Double Japanese Postcard Rotated (148 mm x 200 mm)
145
+ # 83 = A6 Rotated (148 mm x 105 mm)
146
+ # 84 = Japanese Envelope Kaku #2 Rotated
147
+ # 85 = Japanese Envelope Kaku #3 Rotated
148
+ # 86 = Japanese Envelope Chou #3 Rotated
149
+ # 87 = Japanese Envelope Chou #4 Rotated
150
+ # 88 = B6 (JIS) (128 mm x 182 mm)
151
+ # 89 = B6 (JIS) Rotated (182 mm x 128 mm)
152
+ # 90 = (12 in x 11 in)
153
+ # 91 = Japanese Envelope You #4
154
+ # 92 = Japanese Envelope You #4 Rotated
155
+ # 93 = PRC 16K (146 mm x 215 mm)
156
+ # 94 = PRC 32K (97 mm x 151 mm)
157
+ # 95 = PRC 32K(Big) (97 mm x 151 mm)
158
+ # 96 = PRC Envelope #1 (102 mm x 165 mm)
159
+ # 97 = PRC Envelope #2 (102 mm x 176 mm)
160
+ # 98 = PRC Envelope #3 (125 mm x 176 mm)
161
+ # 99 = PRC Envelope #4 (110 mm x 208 mm)
162
+ # 100 = PRC Envelope #5 (110 mm x 220 mm)
163
+ # 101 = PRC Envelope #6 (120 mm x 230 mm)
164
+ # 102 = PRC Envelope #7 (160 mm x 230 mm)
165
+ # 103 = PRC Envelope #8 (120 mm x 309 mm)
166
+ # 104 = PRC Envelope #9 (229 mm x 324 mm)
167
+ # 105 = PRC Envelope #10 (324 mm x 458 mm)
168
+ # 106 = PRC 16K Rotated
169
+ # 107 = PRC 32K Rotated
170
+ # 108 = PRC 32K(Big) Rotated
171
+ # 109 = PRC Envelope #1 Rotated (165 mm x 102 mm)
172
+ # 110 = PRC Envelope #2 Rotated (176 mm x 102 mm)
173
+ # 111 = PRC Envelope #3 Rotated (176 mm x 125 mm)
174
+ # 112 = PRC Envelope #4 Rotated (208 mm x 110 mm)
175
+ # 113 = PRC Envelope #5 Rotated (220 mm x 110 mm)
176
+ # 114 = PRC Envelope #6 Rotated (230 mm x 120 mm)
177
+ # 115 = PRC Envelope #7 Rotated (230 mm x 160 mm)
178
+ # 116 = PRC Envelope #8 Rotated (309 mm x 120 mm)
179
+ # 117 = PRC Envelope #9 Rotated (324 mm x 229 mm)
180
+ # 118 = PRC Envelope #10 Rotated (458 mm x 324 mm)
181
+ # @return [Integer]
182
+ attr_reader :paper_size
183
+
184
+ # Sets the paper size for printing.
185
+ # @see PageSetup#paper_size
186
+ # @return integer
187
+ def paper_size=(size)
188
+ RestrictionValidator.validate 'paper_size', (1..118), size
189
+ @paper_size = size
190
+ end
191
+
192
+ # Set some or all page settings at once.
193
+ # @param [Hash] options The page settings to set (possible keys are :fit_to_height, :fit_to_width, :orientation, :paper_height, :paper_width, and :scale).
194
+ def set(options)
195
+ parse_options options
196
+ end
197
+
198
+ # @see fit_to_height
199
+ def fit_to_height=(v); Axlsx::validate_unsigned_int(v); @fit_to_height = v; end
200
+ # @see fit_to_width
201
+ def fit_to_width=(v); Axlsx::validate_unsigned_int(v); @fit_to_width = v; end
202
+ # @see orientation
203
+ def orientation=(v); Axlsx::validate_page_orientation(v); @orientation = v; end
204
+ # @see paper_height
205
+ def paper_height=(v); Axlsx::validate_number_with_unit(v); @paper_height = v; end
206
+ # @see paper_width
207
+ def paper_width=(v); Axlsx::validate_number_with_unit(v); @paper_width = v; end
208
+ # @see scale
209
+ def scale=(v); Axlsx::validate_scale_10_400(v); @scale = v; end
210
+
211
+ # convenience method to achieve sanity when setting fit_to_width and fit_to_height
212
+ # as they both default to 1 if only their counterpart is specified.
213
+ # @note This method will overwrite any value you explicitly set via the fit_to_height or fit_to_width methods.
214
+ # @option options [Integer] width The number of pages to fit this worksheet on horizontally. Default 999
215
+ # @option options [Integer] height The number of pages to fit this worksheet on vertically. Default 999
216
+ def fit_to(options = {})
217
+ self.fit_to_width = options[:width] || 999
218
+ self.fit_to_height = options[:height] || 999
219
+ [@fit_to_width, @fit_to_height]
220
+ end
221
+
222
+ # helper method for worksheet to determine if the page setup is configured for fit to page printing
223
+ # We treat any page set up that has a value set for fit_to_width or fit_to_height value as fit_to_page.
224
+ # @return [Boolean]
225
+ def fit_to_page?
226
+ # is there some better what to express this?
227
+ (fit_to_width != nil || fit_to_height != nil)
228
+ end
229
+
230
+ # Serializes the page settings element.
231
+ # @param [String] str
232
+ # @return [String]
233
+ def to_xml_string(str = '')
234
+ serialized_tag('pageSetup', str)
235
+ end
236
+ end
237
+ end