l_axlsx 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +9 -0
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +239 -0
- data/LICENSE +22 -0
- data/README.md +259 -0
- data/Rakefile +30 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/IMAGE1UP.JPEG +0 -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 +828 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/merge_cells.rb +17 -0
- data/examples/no_grid_with_borders.rb +18 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/pivot_test.rb +63 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/split.rb +16 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +166 -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 +190 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/bubble_chart.rb +59 -0
- data/lib/axlsx/drawing/bubble_series.rb +63 -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 +164 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +100 -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 +93 -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 +204 -0
- data/lib/axlsx/drawing/picture_locking.rb +42 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -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 +363 -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 +132 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
- data/lib/axlsx/stylesheet/cell_style.rb +72 -0
- data/lib/axlsx/stylesheet/color.rb +76 -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 +77 -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 +77 -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 +397 -0
- data/lib/axlsx/util/options_parser.rb +16 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +89 -0
- data/lib/axlsx/util/simple_typed_list.rb +179 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/string.rb +7 -0
- data/lib/axlsx/util/validators.rb +307 -0
- data/lib/axlsx/version.rb +5 -0
- data/lib/axlsx/workbook/defined_name.rb +128 -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 +361 -0
- data/lib/axlsx/workbook/workbook_view.rb +78 -0
- data/lib/axlsx/workbook/workbook_views.rb +22 -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 +244 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +471 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +154 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
- data/lib/axlsx/workbook/worksheet/col.rb +141 -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 +91 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -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 +129 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -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 +52 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +266 -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 +39 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/rich_text.rb +35 -0
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +254 -0
- data/lib/axlsx/workbook/worksheet/row.rb +154 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -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 +118 -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 +49 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +798 -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 +112 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -0
- data/test/drawing/tc_bubble_chart.rb +44 -0
- data/test/drawing/tc_bubble_series.rb +21 -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 +23 -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 +38 -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 +233 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +77 -0
- data/test/util/tc_validators.rb +186 -0
- data/test/workbook/tc_defined_name.rb +49 -0
- data/test/workbook/tc_shared_strings_table.rb +44 -0
- data/test/workbook/tc_workbook.rb +139 -0
- data/test/workbook/tc_workbook_view.rb +50 -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 +345 -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_rich_text.rb +44 -0
- data/test/workbook/worksheet/tc_rich_text_run.rb +172 -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 +563 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +583 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# A collection of break objects that define row breaks (page breaks) for printing and preview
|
4
|
+
|
5
|
+
class RowBreaks < SimpleTypedList
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
super Break
|
9
|
+
end
|
10
|
+
|
11
|
+
# Adds a row break
|
12
|
+
# @param [Hash] options The options for the break to be created.
|
13
|
+
# max and man values are fixed.
|
14
|
+
# @see Break
|
15
|
+
def add_break(options)
|
16
|
+
# force feed the excel default
|
17
|
+
self << Break.new(options.merge(:max => 16383, :man => true))
|
18
|
+
last
|
19
|
+
end
|
20
|
+
|
21
|
+
# <rowBreaks count="3" manualBreakCount="3">
|
22
|
+
# <brk id="1" max="16383" man="1"/>
|
23
|
+
# <brk id="7" max="16383" man="1"/>
|
24
|
+
# <brk id="13" max="16383" man="1"/>
|
25
|
+
# </rowBreaks>
|
26
|
+
def to_xml_string(str='')
|
27
|
+
return if empty?
|
28
|
+
str << ('<rowBreaks count="' << self.size.to_s << '" manualBreakCount="' << self.size.to_s << '">')
|
29
|
+
each { |brk| brk.to_xml_string(str) }
|
30
|
+
str << '</rowBreaks>'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Axlsx
|
3
|
+
# Selection options for worksheet panes.
|
4
|
+
#
|
5
|
+
# @note The recommended way to manage the selection pane options is via SheetView#add_selection
|
6
|
+
# @see SheetView#add_selection
|
7
|
+
class Selection
|
8
|
+
|
9
|
+
include Axlsx::OptionsParser
|
10
|
+
include Axlsx::SerializedAttributes
|
11
|
+
|
12
|
+
# Creates a new {Selection} object
|
13
|
+
# @option options [Cell, String] active_cell Active Cell Location
|
14
|
+
# @option options [Integer] active_cell_id Active Cell Index
|
15
|
+
# @option options [Symbol] pane Pane
|
16
|
+
# @option options [String] sqref Sequence of References
|
17
|
+
def initialize(options={})
|
18
|
+
@active_cell = @active_cell_id = @pane = @sqref = nil
|
19
|
+
parse_options options
|
20
|
+
end
|
21
|
+
|
22
|
+
serializable_attributes :active_cell, :active_cell_id, :pane, :sqref
|
23
|
+
# Active Cell Location
|
24
|
+
# Location of the active cell.
|
25
|
+
# @see type
|
26
|
+
# @return [String]
|
27
|
+
# default nil
|
28
|
+
attr_reader :active_cell
|
29
|
+
|
30
|
+
# Active Cell Index
|
31
|
+
# 0-based index of the range reference (in the array of references listed in sqref)
|
32
|
+
# containing the active cell. Only used when the selection in sqref is not contiguous.
|
33
|
+
# Therefore, this value needs to be aware of the order in which the range references are
|
34
|
+
# written in sqref.
|
35
|
+
# When this value is out of range then activeCell can be used.
|
36
|
+
# @see type
|
37
|
+
# @return [Integer]
|
38
|
+
# default nil
|
39
|
+
attr_reader :active_cell_id
|
40
|
+
|
41
|
+
# Pane
|
42
|
+
# The pane to which this selection belongs.
|
43
|
+
# Options are
|
44
|
+
# * bottom_left: Bottom left pane, when both vertical and horizontal
|
45
|
+
# splits are applied. This value is also used when only
|
46
|
+
# a horizontal split has been applied, dividing the pane
|
47
|
+
# into upper and lower regions. In that case, this value
|
48
|
+
# specifies the bottom pane.
|
49
|
+
# * bottom_right: Bottom right pane, when both vertical and horizontal
|
50
|
+
# splits are applied.
|
51
|
+
# * top_left: Top left pane, when both vertical and horizontal splits
|
52
|
+
# are applied. This value is also used when only a horizontal
|
53
|
+
# split has been applied, dividing the pane into upper and lower
|
54
|
+
# regions. In that case, this value specifies the top pane.
|
55
|
+
# This value is also used when only a vertical split has
|
56
|
+
# been applied, dividing the pane into right and left
|
57
|
+
# regions. In that case, this value specifies the left pane
|
58
|
+
# * top_right: Top right pane, when both vertical and horizontal
|
59
|
+
# splits are applied. This value is also used when only
|
60
|
+
# a vertical split has been applied, dividing the pane
|
61
|
+
# into right and left regions. In that case, this value
|
62
|
+
# specifies the right pane.
|
63
|
+
# @see type
|
64
|
+
# @return [Symbol]
|
65
|
+
# default nil
|
66
|
+
attr_reader :pane
|
67
|
+
|
68
|
+
# Sequence of References
|
69
|
+
# Range of the selection. Can be non-contiguous set of ranges.
|
70
|
+
# @see type
|
71
|
+
# @return [String]
|
72
|
+
# default nil
|
73
|
+
attr_reader :sqref
|
74
|
+
|
75
|
+
# @see active_cell
|
76
|
+
def active_cell=(v)
|
77
|
+
cell = (v.class == Axlsx::Cell ? v.r_abs : v)
|
78
|
+
Axlsx::validate_string(cell)
|
79
|
+
@active_cell = cell
|
80
|
+
end
|
81
|
+
|
82
|
+
# @see active_cell_id
|
83
|
+
def active_cell_id=(v); Axlsx::validate_unsigned_int(v); @active_cell_id = v end
|
84
|
+
|
85
|
+
# @see pane
|
86
|
+
def pane=(v)
|
87
|
+
Axlsx::validate_pane_type(v)
|
88
|
+
@pane = Axlsx::camel(v, false)
|
89
|
+
end
|
90
|
+
|
91
|
+
# @see sqref
|
92
|
+
def sqref=(v); Axlsx::validate_string(v); @sqref = v end
|
93
|
+
|
94
|
+
# Serializes the data validation
|
95
|
+
# @param [String] str
|
96
|
+
# @return [String]
|
97
|
+
def to_xml_string(str = '')
|
98
|
+
serialized_tag 'selection', str
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# the SheetCalcPr object for the worksheet
|
4
|
+
# This object contains calculation properties for the worksheet.
|
5
|
+
class SheetCalcPr
|
6
|
+
include Axlsx::OptionsParser
|
7
|
+
include Axlsx::SerializedAttributes
|
8
|
+
include Axlsx::Accessors
|
9
|
+
# creates a new SheetCalcPr
|
10
|
+
# @param [Hash] options Options for this object
|
11
|
+
# @option [Boolean] full_calc_on_load @see full_calc_on_load
|
12
|
+
def initialize(options={})
|
13
|
+
@full_calc_on_load = true
|
14
|
+
parse_options options
|
15
|
+
end
|
16
|
+
|
17
|
+
boolean_attr_accessor :full_calc_on_load
|
18
|
+
|
19
|
+
serializable_attributes :full_calc_on_load
|
20
|
+
|
21
|
+
# Serialize the object
|
22
|
+
# @param [String] str the string to append this objects serialized
|
23
|
+
# content to.
|
24
|
+
# @return [String]
|
25
|
+
def to_xml_string(str='')
|
26
|
+
str << "<sheetCalcPr #{serialized_attributes}/>"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# This class manages the serialization of rows for worksheets
|
4
|
+
class SheetData
|
5
|
+
|
6
|
+
# Creates a new SheetData object
|
7
|
+
# @param [Worksheet] worksheet The worksheet that owns this sheet data.
|
8
|
+
def initialize(worksheet)
|
9
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
10
|
+
@worksheet = worksheet
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :worksheet
|
14
|
+
|
15
|
+
# Serialize the sheet data
|
16
|
+
# @param [String] str the string this objects serializaton will be concacted to.
|
17
|
+
# @return [String]
|
18
|
+
def to_xml_string(str = '')
|
19
|
+
str << '<sheetData>'
|
20
|
+
worksheet.rows.each_with_index do |row, index|
|
21
|
+
row.to_xml_string(index, str)
|
22
|
+
end
|
23
|
+
str << '</sheetData>'
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
#Sheet formatting properties
|
4
|
+
# <xsd:complexType name="CT_SheetFormatPr">
|
5
|
+
# <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/>
|
6
|
+
# <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/>
|
7
|
+
# <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/>
|
8
|
+
# <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/>
|
9
|
+
# <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/>
|
10
|
+
# <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/>
|
11
|
+
# <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/>
|
12
|
+
# <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/>
|
13
|
+
# <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/>
|
14
|
+
#</xsd:complexType>
|
15
|
+
|
16
|
+
class SheetFormatPr
|
17
|
+
include Axlsx::SerializedAttributes
|
18
|
+
include Axlsx::OptionsParser
|
19
|
+
include Axlsx::Accessors
|
20
|
+
|
21
|
+
# creates a new sheet_format_pr object
|
22
|
+
# @param [Hash] options initialization options
|
23
|
+
# @option [Integer] base_col_width Specifies the number of characters of the maximum digit width of the normal style's font. This value does not include margin padding or extra padding for gridlines. It is only the number of characters.
|
24
|
+
# @option [Float] default_col_width Default column width measured as the number of characters of the maximum digit width of the normal style's font.
|
25
|
+
# @option [Float] default_row_height Default row height measured in point size. Optimization so we don't have to write the height on all rows. This can be written out if most rows have custom height, to achieve the optimization.
|
26
|
+
# @option [Boolean] custom_height 'True' if defaultRowHeight value has been manually set, or is different from the default value.
|
27
|
+
# @option [Boolean] zero_height 'True' if rows are hidden by default. This setting is an optimization used when most rows of the sheet are hidden.
|
28
|
+
# @option [Boolean] think_top 'True' if rows have a thick top border by default.
|
29
|
+
# @option [Boolean] thick_bottom 'True' if rows have a thick bottom border by default.
|
30
|
+
# @option [Integer] outline_level_row Highest number of outline level for rows in this sheet. These values shall be in synch with the actual sheet outline levels.
|
31
|
+
# @option [Integer] outline_level_col Highest number of outline levels for columns in this sheet. These values shall be in synch with the actual sheet outline levels.
|
32
|
+
def initialize(options={})
|
33
|
+
set_defaults
|
34
|
+
parse_options options
|
35
|
+
end
|
36
|
+
|
37
|
+
serializable_attributes :base_col_width, :default_col_width, :default_row_height,
|
38
|
+
:custom_height, :zero_height, :thick_top, :thick_bottom,
|
39
|
+
:outline_level_row, :outline_level_col
|
40
|
+
|
41
|
+
float_attr_accessor :default_col_width, :default_row_height
|
42
|
+
|
43
|
+
boolean_attr_accessor :custom_height, :zero_height, :thick_top, :thick_bottom
|
44
|
+
|
45
|
+
unsigned_int_attr_accessor :base_col_width, :outline_level_row, :outline_level_col
|
46
|
+
|
47
|
+
# serializes this object to an xml string
|
48
|
+
# @param [String] str The string this objects serialization will be appended to
|
49
|
+
# @return [String]
|
50
|
+
def to_xml_string(str='')
|
51
|
+
str << "<sheetFormatPr #{serialized_attributes}/>"
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def set_defaults
|
56
|
+
@base_col_width = 8
|
57
|
+
@default_row_height = 18
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Axlsx
|
2
|
+
|
3
|
+
# The SheetPr class manages serialization fo a worksheet's sheetPr element.
|
4
|
+
class SheetPr
|
5
|
+
include Axlsx::OptionsParser
|
6
|
+
include Axlsx::Accessors
|
7
|
+
include Axlsx::SerializedAttributes
|
8
|
+
|
9
|
+
serializable_attributes :sync_horizontal,
|
10
|
+
:sync_vertical,
|
11
|
+
:transtion_evaluation,
|
12
|
+
:transition_entry,
|
13
|
+
:published,
|
14
|
+
:filter_mode,
|
15
|
+
:enable_format_conditions_calculation,
|
16
|
+
:code_name,
|
17
|
+
:sync_ref
|
18
|
+
|
19
|
+
# These attributes are all boolean so I'm doing a bit of a hand
|
20
|
+
# waving magic show to set up the attriubte accessors
|
21
|
+
boolean_attr_accessor :sync_horizontal,
|
22
|
+
:sync_vertical,
|
23
|
+
:transtion_evaluation,
|
24
|
+
:transition_entry,
|
25
|
+
:published,
|
26
|
+
:filter_mode,
|
27
|
+
:enable_format_conditions_calculation
|
28
|
+
|
29
|
+
string_attr_accessor :code_name, :sync_ref
|
30
|
+
|
31
|
+
# Creates a new SheetPr object
|
32
|
+
# @param [Worksheet] worksheet The worksheet that owns this SheetPr object
|
33
|
+
def initialize(worksheet, options={})
|
34
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
35
|
+
@worksheet = worksheet
|
36
|
+
parse_options options
|
37
|
+
end
|
38
|
+
|
39
|
+
# The worksheet these properties apply to!
|
40
|
+
# @return [Worksheet]
|
41
|
+
attr_reader :worksheet
|
42
|
+
|
43
|
+
# Serialize the object
|
44
|
+
# @param [String] str serialized output will be appended to this object if provided.
|
45
|
+
# @return [String]
|
46
|
+
def to_xml_string(str = '')
|
47
|
+
update_properties
|
48
|
+
str << "<sheetPr #{serialized_attributes}>"
|
49
|
+
page_setup_pr.to_xml_string(str)
|
50
|
+
str << "</sheetPr>"
|
51
|
+
end
|
52
|
+
|
53
|
+
# The PageSetUpPr for this sheet pr object
|
54
|
+
# @return [PageSetUpPr]
|
55
|
+
def page_setup_pr
|
56
|
+
@page_setup_pr ||= PageSetUpPr.new
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def update_properties
|
62
|
+
page_setup_pr.fit_to_page = worksheet.fit_to_page?
|
63
|
+
if worksheet.auto_filter.columns.size > 0
|
64
|
+
self.filter_mode = 1
|
65
|
+
self.enable_format_conditions_calculation = 1
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Axlsx
|
3
|
+
|
4
|
+
# The SheetProtection object manages worksheet protection options per sheet.
|
5
|
+
class SheetProtection
|
6
|
+
|
7
|
+
include Axlsx::OptionsParser
|
8
|
+
include Axlsx::SerializedAttributes
|
9
|
+
include Axlsx::Accessors
|
10
|
+
|
11
|
+
# Creates a new SheetProtection instance
|
12
|
+
# @option options [Boolean] sheet @see SheetProtection#sheet
|
13
|
+
# @option options [Boolean] objects @see SheetProtection#objects
|
14
|
+
# @option options [Boolean] scenarios @see SheetProtection#scenarios
|
15
|
+
# @option options [Boolean] format_cells @see SheetProtection#objects
|
16
|
+
# @option options [Boolean] format_columns @see SheetProtection#format_columns
|
17
|
+
# @option options [Boolean] format_rows @see SheetProtection#format_rows
|
18
|
+
# @option options [Boolean] insert_columns @see SheetProtection#insert_columns
|
19
|
+
# @option options [Boolean] insert_rows @see SheetProtection#insert_rows
|
20
|
+
# @option options [Boolean] insert_hyperlinks @see SheetProtection#insert_hyperlinks
|
21
|
+
# @option options [Boolean] delete_columns @see SheetProtection#delete_columns
|
22
|
+
# @option options [Boolean] delete_rows @see SheetProtection#delete_rows
|
23
|
+
# @option options [Boolean] select_locked_cells @see SheetProtection#select_locked_cells
|
24
|
+
# @option options [Boolean] sort @see SheetProtection#sort
|
25
|
+
# @option options [Boolean] auto_filter @see SheetProtection#auto_filter
|
26
|
+
# @option options [Boolean] pivot_tables @see SheetProtection#pivot_tables
|
27
|
+
# @option options [Boolean] select_unlocked_cells @see SheetProtection#select_unlocked_cells
|
28
|
+
# @option options [String] password. The password required for unlocking. @see SheetProtection#password=
|
29
|
+
def initialize(options={})
|
30
|
+
@objects = @scenarios = @select_locked_cells = @select_unlocked_cells = false
|
31
|
+
@sheet = @format_cells = @format_rows = @format_columns = @insert_columns = @insert_rows = @insert_hyperlinks = @delete_columns = @delete_rows = @sort = @auto_filter = @pivot_tables = true
|
32
|
+
@password = nil
|
33
|
+
parse_options options
|
34
|
+
end
|
35
|
+
|
36
|
+
boolean_attr_accessor :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
|
37
|
+
:insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
|
38
|
+
:select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells
|
39
|
+
|
40
|
+
serializable_attributes :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
|
41
|
+
:insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
|
42
|
+
:select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells, :salt, :password
|
43
|
+
|
44
|
+
# Specifies the salt which was prepended to the user-supplied password before it was hashed using the hashing algorithm
|
45
|
+
# @return [String]
|
46
|
+
attr_reader :salt_value
|
47
|
+
|
48
|
+
# Password hash
|
49
|
+
# @return [String]
|
50
|
+
# default nil
|
51
|
+
attr_reader :password
|
52
|
+
|
53
|
+
# This block is intended to implement the salt_value, hash_value and spin count as per the ECMA-376 standard.
|
54
|
+
# However, it does not seem to actually work in EXCEL - instead they are using their old retro algorithm shown below
|
55
|
+
# defined in the transitional portion of the speck. I am leaving this code in in the hope that someday Ill be able to
|
56
|
+
# figure out why it does not work, and if Excel even supports it.
|
57
|
+
# def propper_password=(v)
|
58
|
+
# @algorithm_name = v == nil ? nil : 'SHA-1'
|
59
|
+
# @salt_value = @spin_count = @hash_value = v if v == nil
|
60
|
+
# return if v == nil
|
61
|
+
# require 'digest/sha1'
|
62
|
+
# @spin_count = 10000
|
63
|
+
# @salt_value = Digest::SHA1.hexdigest(rand(36**8).to_s(36))
|
64
|
+
# @spin_count.times do |count|
|
65
|
+
# @hash_value = Digest::SHA1.hexdigest((@hash_value ||= (@salt_value + v.to_s)) + Array(count).pack('V'))
|
66
|
+
# end
|
67
|
+
# end
|
68
|
+
|
69
|
+
# encodes password for protection locking
|
70
|
+
def password=(v)
|
71
|
+
return if v == nil
|
72
|
+
@password = create_password_hash(v)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Serialize the object
|
76
|
+
# @param [String] str
|
77
|
+
# @return [String]
|
78
|
+
def to_xml_string(str = '')
|
79
|
+
serialized_tag('sheetProtection', str)
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
# Creates a password hash for a given password
|
84
|
+
# @return [String]
|
85
|
+
def create_password_hash(password)
|
86
|
+
encoded_password = encode_password(password)
|
87
|
+
|
88
|
+
password_as_hex = [encoded_password].pack("v")
|
89
|
+
password_as_string = password_as_hex.unpack("H*").first.upcase
|
90
|
+
|
91
|
+
password_as_string[2..3] + password_as_string[0..1]
|
92
|
+
end
|
93
|
+
|
94
|
+
# Encodes a given password
|
95
|
+
# Based on the algorithm provided by Daniel Rentz of OpenOffice.
|
96
|
+
# http://www.openoffice.org/sc/excelfileformat.pdf, Revision 1.42, page 115 (21.05.2012)
|
97
|
+
# @return [String]
|
98
|
+
def encode_password(password)
|
99
|
+
i = 0
|
100
|
+
chars = password.split(//)
|
101
|
+
count = chars.size
|
102
|
+
|
103
|
+
chars.collect! do |char|
|
104
|
+
i += 1
|
105
|
+
char = char.unpack('c')[0] << i #ord << i
|
106
|
+
low_15 = char & 0x7fff
|
107
|
+
high_15 = char & 0x7fff << 15
|
108
|
+
high_15 = high_15 >> 15
|
109
|
+
char = low_15 | high_15
|
110
|
+
end
|
111
|
+
|
112
|
+
encoded_password = 0x0000
|
113
|
+
chars.each { |c| encoded_password ^= c }
|
114
|
+
encoded_password ^= count
|
115
|
+
encoded_password ^= 0xCE4B
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Axlsx
|
3
|
+
# View options for a worksheet.
|
4
|
+
#
|
5
|
+
# @note The recommended way to manage the sheet view is via Worksheet#sheet_view
|
6
|
+
# @see Worksheet#sheet_view
|
7
|
+
class SheetView
|
8
|
+
|
9
|
+
include Axlsx::OptionsParser
|
10
|
+
include Axlsx::Accessors
|
11
|
+
include Axlsx::SerializedAttributes
|
12
|
+
|
13
|
+
# Creates a new {SheetView} object
|
14
|
+
# @option options [Integer] color_id Color Id
|
15
|
+
# @option options [Boolean] default_grid_color Default Grid Color
|
16
|
+
# @option options [Boolean] right_to_left Right To Left
|
17
|
+
# @option options [Boolean] show_formulas Show Formulas
|
18
|
+
# @option options [Boolean] show_grid_lines Show Grid Lines
|
19
|
+
# @option options [Boolean] show_outline_symbols Show Outline Symbols
|
20
|
+
# @option options [Boolean] show_row_col_headers Show Headers
|
21
|
+
# @option options [Boolean] show_ruler Show Ruler
|
22
|
+
# @option options [Boolean] show_white_space Show White Space
|
23
|
+
# @option options [Boolean] show_zeros Show Zero Values
|
24
|
+
# @option options [Boolean] tab_selected Sheet Tab Selected
|
25
|
+
# @option options [String, Cell] top_left_cell Top Left Visible Cell
|
26
|
+
# @option options [Symbol] view View Type
|
27
|
+
# @option options [Boolean] window_protection Window Protection
|
28
|
+
# @option options [Integer] workbook_view_id Workbook View Index
|
29
|
+
# @option options [Integer] zoom_scale
|
30
|
+
# @option options [Integer] zoom_scale_normal Zoom Scale Normal View
|
31
|
+
# @option options [Integer] zoom_scale_page_layout_view Zoom Scale Page Layout View
|
32
|
+
# @option options [Integer] zoom_scale_sheet_layout_view Zoom Scale Page Break Preview
|
33
|
+
def initialize(options={})
|
34
|
+
#defaults
|
35
|
+
@color_id = @top_left_cell = @pane = nil
|
36
|
+
@right_to_left = @show_formulas = @show_outline_symbols = @show_white_space = @tab_selected = @window_protection = false
|
37
|
+
@default_grid_color = @show_grid_lines = @show_row_col_headers = @show_ruler = @show_zeros = true
|
38
|
+
@zoom_scale = 100
|
39
|
+
@zoom_scale_normal = @zoom_scale_page_layout_view = @zoom_scale_sheet_layout_view = @workbook_view_id = 0
|
40
|
+
@selections = {}
|
41
|
+
parse_options options
|
42
|
+
end
|
43
|
+
|
44
|
+
boolean_attr_accessor :default_grid_color, :right_to_left, :show_formulas, :show_grid_lines,
|
45
|
+
:show_row_col_headers, :show_ruler, :show_white_space, :show_zeros, :tab_selected, :window_protection, :show_outline_symbols
|
46
|
+
|
47
|
+
serializable_attributes :default_grid_color, :right_to_left, :show_formulas, :show_grid_lines,
|
48
|
+
:show_row_col_headers, :show_ruler, :show_white_space, :show_zeros, :tab_selected, :window_protection, :show_outline_symbols,
|
49
|
+
:zoom_scale_sheet_layout_view, :zoom_scale_page_layout_view, :zoom_scale_normal, :workbook_view_id,
|
50
|
+
:view, :top_left_cell, :color_id, :zoom_scale
|
51
|
+
|
52
|
+
|
53
|
+
# instance values that must be serialized as their own elements - e.g. not attributes.
|
54
|
+
CHILD_ELEMENTS = [ :pane, :selections ]
|
55
|
+
|
56
|
+
# The pane object for the sheet view
|
57
|
+
# @return [Pane]
|
58
|
+
# @see [Pane]
|
59
|
+
def pane
|
60
|
+
@pane ||= Pane.new
|
61
|
+
yield @pane if block_given?
|
62
|
+
@pane
|
63
|
+
end
|
64
|
+
|
65
|
+
# A hash of selection objects keyed by pane type associated with this sheet view.
|
66
|
+
# @return [Hash]
|
67
|
+
attr_reader :selections
|
68
|
+
|
69
|
+
#
|
70
|
+
# Color Id
|
71
|
+
# Index to the color value for row/column
|
72
|
+
# text headings and gridlines. This is an
|
73
|
+
# 'index color value' (ICV) rather than
|
74
|
+
# rgb value.
|
75
|
+
# @see type
|
76
|
+
# @return [Integer]
|
77
|
+
# default nil
|
78
|
+
attr_reader :color_id
|
79
|
+
|
80
|
+
# Top Left Visible Cell
|
81
|
+
# Location of the top left visible cell Location
|
82
|
+
# of the top left visible cell in the bottom right
|
83
|
+
# pane (when in Left-to-Right mode).
|
84
|
+
# @see type
|
85
|
+
# @return [String]
|
86
|
+
# default nil
|
87
|
+
attr_reader :top_left_cell
|
88
|
+
|
89
|
+
|
90
|
+
# View Type
|
91
|
+
# Indicates the view type.
|
92
|
+
# Options are
|
93
|
+
# * normal: Normal view
|
94
|
+
# * page_break_preview: Page break preview
|
95
|
+
# * page_layout: Page Layout View
|
96
|
+
# @see type
|
97
|
+
# @return [Symbol]
|
98
|
+
# default :normal
|
99
|
+
attr_reader :view
|
100
|
+
|
101
|
+
# Workbook View Index
|
102
|
+
# Zero-based index of this workbook view, pointing
|
103
|
+
# to a workbookView element in the bookViews collection.
|
104
|
+
# @see type
|
105
|
+
# @return [Integer]
|
106
|
+
# default 0
|
107
|
+
attr_reader :workbook_view_id
|
108
|
+
|
109
|
+
# Zoom Scale
|
110
|
+
# Window zoom magnification for current view
|
111
|
+
# representing percent values. This attribute
|
112
|
+
# is restricted to values ranging from 10 to 400.
|
113
|
+
# Horizontal & Vertical scale together.
|
114
|
+
# Current view can be Normal, Page Layout, or
|
115
|
+
# Page Break Preview.
|
116
|
+
# @see type
|
117
|
+
# @return [Integer]
|
118
|
+
# default 100
|
119
|
+
attr_reader :zoom_scale
|
120
|
+
|
121
|
+
|
122
|
+
# Zoom Scale Normal View
|
123
|
+
# Zoom magnification to use when in normal view,
|
124
|
+
# representing percent values. This attribute is
|
125
|
+
# restricted to values ranging from 10 to 400.
|
126
|
+
# Horizontal & Vertical scale together.
|
127
|
+
# Applies for worksheets only; zero implies the
|
128
|
+
# automatic setting.
|
129
|
+
# @see type
|
130
|
+
# @return [Integer]
|
131
|
+
# default 0
|
132
|
+
attr_reader :zoom_scale_normal
|
133
|
+
|
134
|
+
|
135
|
+
# Zoom Scale Page Layout View
|
136
|
+
# Zoom magnification to use when in page layout
|
137
|
+
# view, representing percent values. This attribute
|
138
|
+
# is restricted to values ranging from 10 to 400.
|
139
|
+
# Horizontal & Vertical scale together.
|
140
|
+
# Applies for worksheets only; zero implies
|
141
|
+
# the automatic setting.
|
142
|
+
# @see type
|
143
|
+
# @return [Integer]
|
144
|
+
# default 0
|
145
|
+
attr_reader :zoom_scale_page_layout_view
|
146
|
+
|
147
|
+
|
148
|
+
# Zoom Scale Page Break Preview
|
149
|
+
# Zoom magnification to use when in page break
|
150
|
+
# preview, representing percent values. This
|
151
|
+
# attribute is restricted to values ranging
|
152
|
+
# from 10 to 400. Horizontal & Vertical scale
|
153
|
+
# together.
|
154
|
+
# Applies for worksheet only; zero implies
|
155
|
+
# the automatic setting.
|
156
|
+
# @see type
|
157
|
+
# @return [Integer]
|
158
|
+
# default 0
|
159
|
+
attr_reader :zoom_scale_sheet_layout_view
|
160
|
+
|
161
|
+
# Adds a new selection
|
162
|
+
# param [Symbol] pane
|
163
|
+
# param [Hash] options
|
164
|
+
# return [Selection]
|
165
|
+
def add_selection(pane, options = {})
|
166
|
+
@selections[pane] = Selection.new(options.merge(:pane => pane))
|
167
|
+
end
|
168
|
+
|
169
|
+
# @see color_id
|
170
|
+
def color_id=(v); Axlsx::validate_unsigned_int(v); @color_id = v end
|
171
|
+
|
172
|
+
# @see top_left_cell
|
173
|
+
def top_left_cell=(v)
|
174
|
+
cell = (v.class == Axlsx::Cell ? v.r_abs : v)
|
175
|
+
Axlsx::validate_string(cell)
|
176
|
+
@top_left_cell = cell
|
177
|
+
end
|
178
|
+
|
179
|
+
# @see view
|
180
|
+
def view=(v); Axlsx::validate_sheet_view_type(v); @view = v end
|
181
|
+
|
182
|
+
# @see workbook_view_id
|
183
|
+
def workbook_view_id=(v); Axlsx::validate_unsigned_int(v); @workbook_view_id = v end
|
184
|
+
|
185
|
+
# @see zoom_scale
|
186
|
+
def zoom_scale=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale = v end
|
187
|
+
|
188
|
+
# @see zoom_scale_normal
|
189
|
+
def zoom_scale_normal=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale_normal = v end
|
190
|
+
|
191
|
+
# @see zoom_scale_page_layout_view
|
192
|
+
def zoom_scale_page_layout_view=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale_page_layout_view = v end
|
193
|
+
|
194
|
+
# @see zoom_scale_sheet_layout_view
|
195
|
+
def zoom_scale_sheet_layout_view=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale_sheet_layout_view = v end
|
196
|
+
|
197
|
+
# Serializes the data validation
|
198
|
+
# @param [String] str
|
199
|
+
# @return [String]
|
200
|
+
def to_xml_string(str = '')
|
201
|
+
str << '<sheetViews>'
|
202
|
+
str << '<sheetView '
|
203
|
+
serialized_attributes str
|
204
|
+
str << '>'
|
205
|
+
@pane.to_xml_string(str) if @pane
|
206
|
+
@selections.each do |key, selection|
|
207
|
+
selection.to_xml_string(str)
|
208
|
+
end
|
209
|
+
str << '</sheetView>'
|
210
|
+
str << '</sheetViews>'
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|