caxlsx 2.0.2
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.
- checksums.yaml +7 -0
- data/.yardopts +9 -0
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +239 -0
- data/LICENSE +22 -0
- data/README.md +256 -0
- data/Rakefile +31 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/auto_filter.rb +16 -0
- data/examples/basic_charts.rb +58 -0
- data/examples/chart_colors.rb +88 -0
- data/examples/colored_links.rb +59 -0
- data/examples/conditional_formatting/example_conditional_formatting.rb +74 -0
- data/examples/conditional_formatting/getting_barred.rb +37 -0
- data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
- data/examples/conditional_formatting/scaled_colors.rb +39 -0
- data/examples/conditional_formatting/stop_and_go.rb +37 -0
- data/examples/data_validation.rb +50 -0
- data/examples/example.rb +777 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +152 -0
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
- data/lib/axlsx/content_type/content_type.rb +26 -0
- data/lib/axlsx/content_type/default.rb +25 -0
- data/lib/axlsx/content_type/override.rb +25 -0
- data/lib/axlsx/doc_props/app.rb +235 -0
- data/lib/axlsx/doc_props/core.rb +39 -0
- data/lib/axlsx/drawing/ax_data_source.rb +26 -0
- data/lib/axlsx/drawing/axes.rb +61 -0
- data/lib/axlsx/drawing/axis.rb +187 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/cat_axis.rb +85 -0
- data/lib/axlsx/drawing/chart.rb +232 -0
- data/lib/axlsx/drawing/d_lbls.rb +90 -0
- data/lib/axlsx/drawing/drawing.rb +162 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +102 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
- data/lib/axlsx/drawing/line_chart.rb +99 -0
- data/lib/axlsx/drawing/line_series.rb +81 -0
- data/lib/axlsx/drawing/marker.rb +84 -0
- data/lib/axlsx/drawing/num_data.rb +52 -0
- data/lib/axlsx/drawing/num_data_source.rb +62 -0
- data/lib/axlsx/drawing/num_val.rb +32 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
- data/lib/axlsx/drawing/pic.rb +205 -0
- data/lib/axlsx/drawing/picture_locking.rb +44 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +48 -0
- data/lib/axlsx/drawing/pie_series.rb +74 -0
- data/lib/axlsx/drawing/scaling.rb +60 -0
- data/lib/axlsx/drawing/scatter_chart.rb +74 -0
- data/lib/axlsx/drawing/scatter_series.rb +65 -0
- data/lib/axlsx/drawing/ser_axis.rb +45 -0
- data/lib/axlsx/drawing/series.rb +69 -0
- data/lib/axlsx/drawing/series_title.rb +23 -0
- data/lib/axlsx/drawing/str_data.rb +42 -0
- data/lib/axlsx/drawing/str_val.rb +32 -0
- data/lib/axlsx/drawing/title.rb +78 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +92 -0
- data/lib/axlsx/drawing/val_axis.rb +37 -0
- data/lib/axlsx/drawing/view_3D.rb +115 -0
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +66 -0
- data/lib/axlsx/package.rb +352 -0
- data/lib/axlsx/rels/relationship.rb +129 -0
- data/lib/axlsx/rels/relationships.rb +29 -0
- data/lib/axlsx/stylesheet/border.rb +71 -0
- data/lib/axlsx/stylesheet/border_pr.rb +71 -0
- data/lib/axlsx/stylesheet/cell_alignment.rb +134 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +43 -0
- data/lib/axlsx/stylesheet/cell_style.rb +74 -0
- data/lib/axlsx/stylesheet/color.rb +78 -0
- data/lib/axlsx/stylesheet/dxf.rb +79 -0
- data/lib/axlsx/stylesheet/fill.rb +35 -0
- data/lib/axlsx/stylesheet/font.rb +148 -0
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
- data/lib/axlsx/stylesheet/num_fmt.rb +79 -0
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
- data/lib/axlsx/stylesheet/styles.rb +420 -0
- data/lib/axlsx/stylesheet/table_style.rb +54 -0
- data/lib/axlsx/stylesheet/table_style_element.rb +79 -0
- data/lib/axlsx/stylesheet/table_styles.rb +46 -0
- data/lib/axlsx/stylesheet/xf.rb +147 -0
- data/lib/axlsx/util/accessors.rb +64 -0
- data/lib/axlsx/util/constants.rb +392 -0
- data/lib/axlsx/util/options_parser.rb +15 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +79 -0
- data/lib/axlsx/util/simple_typed_list.rb +203 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/validators.rb +300 -0
- data/lib/axlsx/version.rb +5 -0
- data/lib/axlsx/workbook/defined_name.rb +129 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
- data/lib/axlsx/workbook/workbook.rb +354 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +246 -0
- data/lib/axlsx/workbook/worksheet/break.rb +37 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +416 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +144 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +62 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
- data/lib/axlsx/workbook/worksheet/col.rb +144 -0
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +92 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +85 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +131 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +244 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
- data/lib/axlsx/workbook/worksheet/header_footer.rb +54 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +83 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +99 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +242 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +141 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +273 -0
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +41 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +49 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/row.rb +172 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +103 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +120 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
- data/lib/axlsx/workbook/worksheet/table.rb +102 -0
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +51 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +769 -0
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
- data/lib/schema/dc.xsd +118 -0
- data/lib/schema/dcmitype.xsd +52 -0
- data/lib/schema/dcterms.xsd +331 -0
- data/lib/schema/dml-chart.xsd +1499 -0
- data/lib/schema/dml-chartDrawing.xsd +146 -0
- data/lib/schema/dml-compatibility.xsd +14 -0
- data/lib/schema/dml-diagram.xsd +1091 -0
- data/lib/schema/dml-lockedCanvas.xsd +11 -0
- data/lib/schema/dml-main.xsd +3048 -0
- data/lib/schema/dml-picture.xsd +23 -0
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
- data/lib/schema/opc-contentTypes.xsd +42 -0
- data/lib/schema/opc-coreProperties.xsd +54 -0
- data/lib/schema/opc-digSig.xsd +49 -0
- data/lib/schema/opc-relationships.xsd +33 -0
- data/lib/schema/pml.xsd +1676 -0
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
- data/lib/schema/shared-bibliography.xsd +144 -0
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
- data/lib/schema/shared-math.xsd +582 -0
- data/lib/schema/shared-relationshipReference.xsd +25 -0
- data/lib/schema/sml.xsd +4434 -0
- data/lib/schema/vml-main.xsd +569 -0
- data/lib/schema/vml-officeDrawing.xsd +509 -0
- data/lib/schema/vml-presentationDrawing.xsd +12 -0
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
- data/lib/schema/wml.xsd +3644 -0
- data/lib/schema/xml.xsd +116 -0
- data/test/benchmark.rb +72 -0
- data/test/content_type/tc_content_type.rb +76 -0
- data/test/content_type/tc_default.rb +16 -0
- data/test/content_type/tc_override.rb +14 -0
- data/test/doc_props/tc_app.rb +43 -0
- data/test/doc_props/tc_core.rb +42 -0
- data/test/drawing/tc_axes.rb +8 -0
- data/test/drawing/tc_axis.rb +85 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -0
- data/test/drawing/tc_cat_axis.rb +31 -0
- data/test/drawing/tc_cat_axis_data.rb +27 -0
- data/test/drawing/tc_chart.rb +110 -0
- data/test/drawing/tc_d_lbls.rb +57 -0
- data/test/drawing/tc_data_source.rb +17 -0
- data/test/drawing/tc_drawing.rb +80 -0
- data/test/drawing/tc_graphic_frame.rb +27 -0
- data/test/drawing/tc_hyperlink.rb +64 -0
- data/test/drawing/tc_line_3d_chart.rb +47 -0
- data/test/drawing/tc_line_chart.rb +39 -0
- data/test/drawing/tc_line_series.rb +30 -0
- data/test/drawing/tc_marker.rb +44 -0
- data/test/drawing/tc_named_axis_data.rb +27 -0
- data/test/drawing/tc_num_data.rb +31 -0
- data/test/drawing/tc_num_val.rb +29 -0
- data/test/drawing/tc_one_cell_anchor.rb +66 -0
- data/test/drawing/tc_pic.rb +107 -0
- data/test/drawing/tc_picture_locking.rb +72 -0
- data/test/drawing/tc_pie_3D_chart.rb +28 -0
- data/test/drawing/tc_pie_series.rb +32 -0
- data/test/drawing/tc_scaling.rb +36 -0
- data/test/drawing/tc_scatter_chart.rb +48 -0
- data/test/drawing/tc_scatter_series.rb +21 -0
- data/test/drawing/tc_ser_axis.rb +31 -0
- data/test/drawing/tc_series.rb +23 -0
- data/test/drawing/tc_series_title.rb +33 -0
- data/test/drawing/tc_str_data.rb +18 -0
- data/test/drawing/tc_str_val.rb +21 -0
- data/test/drawing/tc_title.rb +49 -0
- data/test/drawing/tc_two_cell_anchor.rb +36 -0
- data/test/drawing/tc_val_axis.rb +24 -0
- data/test/drawing/tc_view_3D.rb +54 -0
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +106 -0
- data/test/profile.rb +24 -0
- data/test/rels/tc_relationship.rb +44 -0
- data/test/rels/tc_relationships.rb +37 -0
- data/test/stylesheet/tc_border.rb +37 -0
- data/test/stylesheet/tc_border_pr.rb +32 -0
- data/test/stylesheet/tc_cell_alignment.rb +81 -0
- data/test/stylesheet/tc_cell_protection.rb +29 -0
- data/test/stylesheet/tc_cell_style.rb +57 -0
- data/test/stylesheet/tc_color.rb +43 -0
- data/test/stylesheet/tc_dxf.rb +81 -0
- data/test/stylesheet/tc_fill.rb +18 -0
- data/test/stylesheet/tc_font.rb +121 -0
- data/test/stylesheet/tc_gradient_fill.rb +72 -0
- data/test/stylesheet/tc_gradient_stop.rb +31 -0
- data/test/stylesheet/tc_num_fmt.rb +30 -0
- data/test/stylesheet/tc_pattern_fill.rb +43 -0
- data/test/stylesheet/tc_styles.rb +235 -0
- data/test/stylesheet/tc_table_style.rb +44 -0
- data/test/stylesheet/tc_table_style_element.rb +45 -0
- data/test/stylesheet/tc_table_styles.rb +29 -0
- data/test/stylesheet/tc_xf.rb +120 -0
- data/test/tc_axlsx.rb +72 -0
- data/test/tc_helper.rb +10 -0
- data/test/tc_package.rb +227 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +78 -0
- data/test/util/tc_validators.rb +186 -0
- data/test/workbook/tc_defined_name.rb +41 -0
- data/test/workbook/tc_shared_strings_table.rb +44 -0
- data/test/workbook/tc_workbook.rb +125 -0
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
- data/test/workbook/worksheet/tc_break.rb +49 -0
- data/test/workbook/worksheet/tc_cell.rb +319 -0
- data/test/workbook/worksheet/tc_cfvo.rb +31 -0
- data/test/workbook/worksheet/tc_col.rb +78 -0
- data/test/workbook/worksheet/tc_color_scale.rb +58 -0
- data/test/workbook/worksheet/tc_comment.rb +72 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
- data/test/workbook/worksheet/tc_data_bar.rb +46 -0
- data/test/workbook/worksheet/tc_data_validation.rb +265 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
- data/test/workbook/worksheet/tc_header_footer.rb +151 -0
- data/test/workbook/worksheet/tc_icon_set.rb +45 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
- data/test/workbook/worksheet/tc_page_setup.rb +143 -0
- data/test/workbook/worksheet/tc_pane.rb +54 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
- data/test/workbook/worksheet/tc_print_options.rb +72 -0
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_row.rb +117 -0
- data/test/workbook/worksheet/tc_selection.rb +55 -0
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
- data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
- data/test/workbook/worksheet/tc_table.rb +68 -0
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +538 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +546 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# This class manages the dimensions for a worksheet.
|
|
4
|
+
# While this node is optional in the specification some readers like
|
|
5
|
+
# LibraOffice require this node to render the sheet
|
|
6
|
+
class Dimension
|
|
7
|
+
|
|
8
|
+
# the default value for the first cell in the dimension
|
|
9
|
+
# @return [String]
|
|
10
|
+
def self.default_first
|
|
11
|
+
@@default_first ||= 'A1'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# the default value for the last cell in the dimension
|
|
15
|
+
# @return [String]
|
|
16
|
+
def self.default_last
|
|
17
|
+
@@default_last ||= 'AA200'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Creates a new dimension object
|
|
21
|
+
# @param[Worksheet] worksheet - the worksheet this dimension applies
|
|
22
|
+
# to.
|
|
23
|
+
def initialize(worksheet)
|
|
24
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
|
25
|
+
@worksheet = worksheet
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attr_reader :worksheet
|
|
29
|
+
|
|
30
|
+
# the full refernece for this dimension
|
|
31
|
+
# @return [String]
|
|
32
|
+
def sqref
|
|
33
|
+
"#{first_cell_reference}:#{last_cell_reference}"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# serialize the object
|
|
37
|
+
# @return [String]
|
|
38
|
+
def to_xml_string(str = '')
|
|
39
|
+
return if worksheet.rows.empty?
|
|
40
|
+
str << "<dimension ref=\"%s\"></dimension>" % sqref
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# The first cell in the dimension
|
|
44
|
+
# @return [String]
|
|
45
|
+
def first_cell_reference
|
|
46
|
+
dimension_reference(worksheet.rows.first.cells.first, Dimension.default_first)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# the last cell in the dimension
|
|
50
|
+
# @return [String]
|
|
51
|
+
def last_cell_reference
|
|
52
|
+
dimension_reference(worksheet.rows.last.cells.last, Dimension.default_last)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
# Returns the reference of a cell or the default specified
|
|
58
|
+
# @return [String]
|
|
59
|
+
def dimension_reference(cell, default)
|
|
60
|
+
return default unless cell.respond_to?(:r)
|
|
61
|
+
cell.r
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Header/Footer options for printing a worksheet. All settings are optional.
|
|
3
|
+
#
|
|
4
|
+
# Headers and footers are generated using a string which is a combination
|
|
5
|
+
# of plain text and control characters. A fairly comprehensive list of control
|
|
6
|
+
# characters can be found here:
|
|
7
|
+
# https://github.com/randym/axlsx/blob/master/notes_on_header_footer.md
|
|
8
|
+
#
|
|
9
|
+
# @note The recommended way of managing header/footers is via Worksheet#header_footer
|
|
10
|
+
# @see Worksheet#initialize
|
|
11
|
+
class HeaderFooter
|
|
12
|
+
|
|
13
|
+
include Axlsx::OptionsParser
|
|
14
|
+
include Axlsx::SerializedAttributes
|
|
15
|
+
include Axlsx::Accessors
|
|
16
|
+
|
|
17
|
+
# Creates a new HeaderFooter object
|
|
18
|
+
# @option options [String] odd_header The content for headers on odd numbered pages.
|
|
19
|
+
# @option options [String] odd_footer The content for footers on odd numbered pages.
|
|
20
|
+
# @option options [String] even_header The content for headers on even numbered pages.
|
|
21
|
+
# @option options [String] even_footer The content for footers on even numbered pages.
|
|
22
|
+
# @option options [String] first_header The content for headers on even numbered pages.
|
|
23
|
+
# @option options [String] first_footer The content for footers on even numbered pages.
|
|
24
|
+
# @option options [Boolean] different_odd_even Setting this to true will show different headers/footers on odd and even pages. When false, the odd headers/footers are used on each page. (Default: false)
|
|
25
|
+
# @option options [Boolean] different_first If true, will use the first header/footer on page 1. Otherwise, the odd header/footer is used.
|
|
26
|
+
def initialize(options = {})
|
|
27
|
+
parse_options options
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
serializable_attributes :different_odd_even, :different_first
|
|
31
|
+
serializable_element_attributes :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
|
|
32
|
+
string_attr_accessor :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer
|
|
33
|
+
boolean_attr_accessor :different_odd_even, :different_first
|
|
34
|
+
|
|
35
|
+
# Set some or all header/footers at once.
|
|
36
|
+
# @param [Hash] options The header/footer options to set (possible keys are :odd_header, :odd_footer, :even_header, :even_footer, :first_header, :first_footer, :different_odd_even, and :different_first).
|
|
37
|
+
def set(options)
|
|
38
|
+
parse_options options
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Serializes the header/footer object.
|
|
42
|
+
# @param [String] str
|
|
43
|
+
# @return [String]
|
|
44
|
+
def to_xml_string(str = '')
|
|
45
|
+
str << "<headerFooter "
|
|
46
|
+
serialized_attributes str
|
|
47
|
+
str << ">"
|
|
48
|
+
serialized_element_attributes(str) do |value|
|
|
49
|
+
value = ::CGI.escapeHTML(value)
|
|
50
|
+
end
|
|
51
|
+
str << "</headerFooter>"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Conditional Format Rule icon sets
|
|
3
|
+
# Describes an icon set conditional formatting rule.
|
|
4
|
+
|
|
5
|
+
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
6
|
+
# @see Worksheet#add_conditional_formatting
|
|
7
|
+
# @see ConditionalFormattingRule#initialize
|
|
8
|
+
class IconSet
|
|
9
|
+
|
|
10
|
+
include Axlsx::OptionsParser
|
|
11
|
+
include Axlsx::SerializedAttributes
|
|
12
|
+
|
|
13
|
+
# Creates a new icon set object
|
|
14
|
+
# @option options [String] iconSet
|
|
15
|
+
# @option options [Boolean] reverse
|
|
16
|
+
# @option options [Boolean] percent
|
|
17
|
+
# @option options [Boolean] showValue
|
|
18
|
+
def initialize(options = {})
|
|
19
|
+
@percent = @showValue = true
|
|
20
|
+
@reverse = false
|
|
21
|
+
@iconSet = "3TrafficLights1"
|
|
22
|
+
initialize_value_objects
|
|
23
|
+
parse_options options
|
|
24
|
+
yield self if block_given?
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
serializable_attributes :iconSet, :percent, :reverse, :showValue
|
|
28
|
+
|
|
29
|
+
# The icon set to display.
|
|
30
|
+
# Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters
|
|
31
|
+
# The default value is 3TrafficLights1
|
|
32
|
+
# @return [String]
|
|
33
|
+
attr_reader :iconSet
|
|
34
|
+
|
|
35
|
+
# Indicates whether the thresholds indicate percentile values, instead of number values.
|
|
36
|
+
# The default falue is true
|
|
37
|
+
# @return [Boolean]
|
|
38
|
+
attr_reader :percent
|
|
39
|
+
|
|
40
|
+
# If true, reverses the default order of the icons in this icon set.maxLength attribute
|
|
41
|
+
# The default value is false
|
|
42
|
+
# @return [Boolean]
|
|
43
|
+
attr_reader :reverse
|
|
44
|
+
|
|
45
|
+
# Indicates whether to show the values of the cells on which this data bar is applied.
|
|
46
|
+
# The default value is true
|
|
47
|
+
# @return [Boolean]
|
|
48
|
+
attr_reader :showValue
|
|
49
|
+
|
|
50
|
+
# @see iconSet
|
|
51
|
+
def iconSet=(v); Axlsx::validate_icon_set(v); @iconSet = v end
|
|
52
|
+
|
|
53
|
+
# @see showValue
|
|
54
|
+
def showValue=(v); Axlsx.validate_boolean(v); @showValue = v end
|
|
55
|
+
|
|
56
|
+
# @see percent
|
|
57
|
+
def percent=(v); Axlsx.validate_boolean(v); @percent = v end
|
|
58
|
+
|
|
59
|
+
# @see reverse
|
|
60
|
+
def reverse=(v); Axlsx.validate_boolean(v); @reverse = v end
|
|
61
|
+
|
|
62
|
+
# Serialize this object to an xml string
|
|
63
|
+
# @param [String] str
|
|
64
|
+
# @return [String]
|
|
65
|
+
def to_xml_string(str="")
|
|
66
|
+
str << '<iconSet '
|
|
67
|
+
serialized_attributes str
|
|
68
|
+
str << '>'
|
|
69
|
+
@value_objects.each { |cfvo| cfvo.to_xml_string(str) }
|
|
70
|
+
str << '</iconSet>'
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
# Initalize the simple typed list of value objects
|
|
76
|
+
# I am keeping this private for now as I am not sure what impact changes to the required two cfvo objects will do.
|
|
77
|
+
def initialize_value_objects
|
|
78
|
+
@value_objects = SimpleTypedList.new Cfvo
|
|
79
|
+
@value_objects.concat [Cfvo.new(:type => :percent, :val => 0), Cfvo.new(:type => :percent, :val => 33), Cfvo.new(:type => :percent, :val => 67)]
|
|
80
|
+
@value_objects.lock
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# A simple list of merged cells
|
|
4
|
+
class MergedCells < SimpleTypedList
|
|
5
|
+
|
|
6
|
+
# creates a new MergedCells object
|
|
7
|
+
# @param [Worksheet] worksheet
|
|
8
|
+
def initialize(worksheet)
|
|
9
|
+
raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
|
|
10
|
+
super String
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# adds cells to the merged cells collection
|
|
14
|
+
# @param [Array||String] cells The cells to add to the merged cells
|
|
15
|
+
# collection. This can be an array of actual cells or a string style
|
|
16
|
+
# range like 'A1:C1'
|
|
17
|
+
def add(cells)
|
|
18
|
+
@list << if cells.is_a?(String)
|
|
19
|
+
cells
|
|
20
|
+
elsif cells.is_a?(Array)
|
|
21
|
+
Axlsx::cell_range(cells, false)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# serialize the object
|
|
26
|
+
# @param [String] str
|
|
27
|
+
# @return [String]
|
|
28
|
+
def to_xml_string(str = '')
|
|
29
|
+
return if @list.empty?
|
|
30
|
+
str << "<mergeCells count='#{size}'>"
|
|
31
|
+
each { |merged_cell| str << "<mergeCell ref='#{merged_cell}'></mergeCell>" }
|
|
32
|
+
str << '</mergeCells>'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
# PageMargins specify the margins when printing a worksheet.
|
|
3
|
+
#
|
|
4
|
+
# For compatibility, PageMargins serialize to an empty string, unless at least one custom margin value
|
|
5
|
+
# has been specified. Otherwise, it serializes to a PageMargin element specifying all 6 margin values
|
|
6
|
+
# (using default values for margins that have not been specified explicitly).
|
|
7
|
+
#
|
|
8
|
+
# @note The recommended way to manage page margins is via Worksheet#page_margins
|
|
9
|
+
# @see Worksheet#page_margins
|
|
10
|
+
# @see Worksheet#initialize
|
|
11
|
+
class PageMargins
|
|
12
|
+
|
|
13
|
+
include Axlsx::OptionsParser
|
|
14
|
+
include Axlsx::SerializedAttributes
|
|
15
|
+
|
|
16
|
+
# Creates a new PageMargins object
|
|
17
|
+
# @option options [Numeric] left The left margin in inches
|
|
18
|
+
# @option options [Numeric] right The right margin in inches
|
|
19
|
+
# @option options [Numeric] bottom The bottom margin in inches
|
|
20
|
+
# @option options [Numeric] top The top margin in inches
|
|
21
|
+
# @option options [Numeric] header The header margin in inches
|
|
22
|
+
# @option options [Numeric] footer The footer margin in inches
|
|
23
|
+
def initialize(options={})
|
|
24
|
+
# Default values taken from MS Excel for Mac 2011
|
|
25
|
+
@left = @right = DEFAULT_LEFT_RIGHT
|
|
26
|
+
@top = @bottom = DEFAULT_TOP_BOTTOM
|
|
27
|
+
@header = @footer = DEFAULT_HEADER_FOOTER
|
|
28
|
+
parse_options options
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
serializable_attributes :left, :right, :bottom, :top, :header, :footer
|
|
32
|
+
|
|
33
|
+
# Default left and right margin (in inches)
|
|
34
|
+
DEFAULT_LEFT_RIGHT = 0.75
|
|
35
|
+
|
|
36
|
+
# Default top and bottom margins (in inches)
|
|
37
|
+
DEFAULT_TOP_BOTTOM = 1.00
|
|
38
|
+
|
|
39
|
+
# Default header and footer margins (in inches)
|
|
40
|
+
DEFAULT_HEADER_FOOTER = 0.50
|
|
41
|
+
|
|
42
|
+
# Left margin (in inches)
|
|
43
|
+
# @return [Float]
|
|
44
|
+
attr_reader :left
|
|
45
|
+
|
|
46
|
+
# Right margin (in inches)
|
|
47
|
+
# @return [Float]
|
|
48
|
+
attr_reader :right
|
|
49
|
+
|
|
50
|
+
# Top margin (in inches)
|
|
51
|
+
# @return [Float]
|
|
52
|
+
attr_reader :top
|
|
53
|
+
|
|
54
|
+
# Bottom margin (in inches)
|
|
55
|
+
# @return [Float]
|
|
56
|
+
attr_reader :bottom
|
|
57
|
+
|
|
58
|
+
# Header margin (in inches)
|
|
59
|
+
# @return [Float]
|
|
60
|
+
attr_reader :header
|
|
61
|
+
|
|
62
|
+
# Footer margin (in inches)
|
|
63
|
+
# @return [Float]
|
|
64
|
+
attr_reader :footer
|
|
65
|
+
|
|
66
|
+
# Set some or all margins at once.
|
|
67
|
+
# @param [Hash] margins the margins to set (possible keys are :left, :right, :top, :bottom, :header and :footer).
|
|
68
|
+
def set(margins)
|
|
69
|
+
margins.select do |k, v|
|
|
70
|
+
next unless [:left, :right, :top, :bottom, :header, :footer].include? k
|
|
71
|
+
send("#{k}=", v)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# @see left
|
|
76
|
+
def left=(v); Axlsx::validate_unsigned_numeric(v); @left = v end
|
|
77
|
+
# @see right
|
|
78
|
+
def right=(v); Axlsx::validate_unsigned_numeric(v); @right = v end
|
|
79
|
+
# @see top
|
|
80
|
+
def top=(v); Axlsx::validate_unsigned_numeric(v); @top = v end
|
|
81
|
+
# @see bottom
|
|
82
|
+
def bottom=(v); Axlsx::validate_unsigned_numeric(v); @bottom = v end
|
|
83
|
+
# @see header
|
|
84
|
+
def header=(v); Axlsx::validate_unsigned_numeric(v); @header = v end
|
|
85
|
+
# @see footer
|
|
86
|
+
def footer=(v); Axlsx::validate_unsigned_numeric(v); @footer = v end
|
|
87
|
+
|
|
88
|
+
# Serializes the page margins element
|
|
89
|
+
# @param [String] str
|
|
90
|
+
# @return [String]
|
|
91
|
+
# @note For compatibility, this is a noop unless custom margins have been specified.
|
|
92
|
+
# @see #custom_margins_specified?
|
|
93
|
+
def to_xml_string(str = '')
|
|
94
|
+
str << '<pageMargins '
|
|
95
|
+
serialized_attributes str
|
|
96
|
+
str << '/>'
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# Page setup properties of the worksheet
|
|
4
|
+
# This class name is not a typo, its spec.
|
|
5
|
+
class PageSetUpPr
|
|
6
|
+
|
|
7
|
+
include Axlsx::OptionsParser
|
|
8
|
+
include Axlsx::SerializedAttributes
|
|
9
|
+
|
|
10
|
+
# creates a new page setup properties object
|
|
11
|
+
# @param [Hash] options
|
|
12
|
+
# @option [Boolean] auto_page_breaks Flag indicating whether the sheet displays Automatic Page Breaks.
|
|
13
|
+
# @option [Boolean] fit_to_page Flag indicating whether the Fit to Page print option is enabled.
|
|
14
|
+
def initialize(options = {})
|
|
15
|
+
parse_options options
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
serializable_attributes :auto_page_breaks, :fit_to_page
|
|
19
|
+
|
|
20
|
+
attr_reader :auto_page_breaks
|
|
21
|
+
attr_reader :fit_to_page
|
|
22
|
+
|
|
23
|
+
# Flag indicating whether the Fit to Page print option is enabled.
|
|
24
|
+
# @param [Boolean] value
|
|
25
|
+
# @return [Boolean]
|
|
26
|
+
def fit_to_page=(value)
|
|
27
|
+
Axlsx.validate_boolean value
|
|
28
|
+
@fit_to_page = value
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Flag indicating whether the sheet displays Automatic Page Breaks.
|
|
32
|
+
# @param [Boolean] value
|
|
33
|
+
# @return [Boolean]
|
|
34
|
+
def auto_page_breaks=(value)
|
|
35
|
+
Axlsx.validate_boolean value
|
|
36
|
+
@auto_page_breaks = value
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# serialize to xml
|
|
40
|
+
def to_xml_string(str='')
|
|
41
|
+
str << '<pageSetUpPr ' << serialized_attributes << '/>'
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,242 @@
|
|
|
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 9999
|
|
217
|
+
# @option options [Integer] height The number of pages to fit this worksheet on vertically. Default 9999
|
|
218
|
+
def fit_to(options={})
|
|
219
|
+
self.fit_to_width = options[:width] || 9999
|
|
220
|
+
self.fit_to_height = options[:height] || 9999
|
|
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
|
+
str << '<pageSetup '
|
|
238
|
+
serialized_attributes str
|
|
239
|
+
str << '/>'
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|