caxlsx 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -343
  5. data/LICENSE +21 -21
  6. data/README.md +168 -172
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -98
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +97 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +388 -388
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -71
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +494 -420
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +410 -401
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +395 -370
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -294
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -768
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -171
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -86
  186. data/test/drawing/tc_bar_chart.rb +86 -86
  187. data/test/drawing/tc_bar_series.rb +46 -46
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -10
  247. data/test/tc_package.rb +317 -314
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -143
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -62
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -160
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -77
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +101 -101
@@ -1,240 +1,240 @@
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
+
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