l_axlsx 2.0.1
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.
- 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,24 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# A simple, self serializing class for storing pivot tables
|
|
4
|
+
class PivotTables < SimpleTypedList
|
|
5
|
+
|
|
6
|
+
# creates a new Tables object
|
|
7
|
+
def initialize(worksheet)
|
|
8
|
+
raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
|
|
9
|
+
super PivotTable
|
|
10
|
+
@worksheet = worksheet
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# The worksheet that owns this collection of pivot tables
|
|
14
|
+
# @return [Worksheet]
|
|
15
|
+
attr_reader :worksheet
|
|
16
|
+
|
|
17
|
+
# returns the relationships required by this collection
|
|
18
|
+
def relationships
|
|
19
|
+
return [] if empty?
|
|
20
|
+
map{ |pivot_table| Relationship.new(pivot_table, PIVOT_TABLE_R, "../#{pivot_table.pn}") }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Options for printing a worksheet. All options are boolean and false by default.
|
|
3
|
+
#
|
|
4
|
+
# @note The recommended way to manage print options is via Worksheet#print_options
|
|
5
|
+
# @see Worksheet#print_options
|
|
6
|
+
# @see Worksheet#initialize
|
|
7
|
+
class PrintOptions
|
|
8
|
+
|
|
9
|
+
include Axlsx::OptionsParser
|
|
10
|
+
include Axlsx::SerializedAttributes
|
|
11
|
+
include Axlsx::Accessors
|
|
12
|
+
# Creates a new PrintOptions object
|
|
13
|
+
# @option options [Boolean] grid_lines Whether grid lines should be printed
|
|
14
|
+
# @option options [Boolean] headings Whether row and column headings should be printed
|
|
15
|
+
# @option options [Boolean] horizontal_centered Whether the content should be centered horizontally
|
|
16
|
+
# @option options [Boolean] vertical_centered Whether the content should be centered vertically
|
|
17
|
+
def initialize(options = {})
|
|
18
|
+
@grid_lines = @headings = @horizontal_centered = @vertical_centered = false
|
|
19
|
+
set(options)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
serializable_attributes :grid_lines, :headings, :horizontal_centered, :vertical_centered
|
|
23
|
+
boolean_attr_accessor :grid_lines, :headings, :horizontal_centered, :vertical_centered
|
|
24
|
+
|
|
25
|
+
# Set some or all options at once.
|
|
26
|
+
# @param [Hash] options The options to set (possible keys are :grid_lines, :headings, :horizontal_centered, and :vertical_centered).
|
|
27
|
+
def set(options)
|
|
28
|
+
parse_options options
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Serializes the page options element.
|
|
32
|
+
# @note As all attributes default to "false" according to the xml schema definition, the generated xml includes only those attributes that are set to true.
|
|
33
|
+
# @param [String] str
|
|
34
|
+
# @return [String]
|
|
35
|
+
def to_xml_string(str = '')
|
|
36
|
+
serialized_tag 'printOptions', str
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
# The Protected Range class represents a set of cells in the worksheet
|
|
3
|
+
# @note the recommended way to manage protected ranges with via Worksheet#protect_range
|
|
4
|
+
# @see Worksheet#protect_range
|
|
5
|
+
class ProtectedRange
|
|
6
|
+
|
|
7
|
+
include Axlsx::OptionsParser
|
|
8
|
+
include Axlsx::SerializedAttributes
|
|
9
|
+
|
|
10
|
+
# Initializes a new protected range object
|
|
11
|
+
# @option [String] sqref The cell range reference to protect. This can be an absolute or a relateve range however, it only applies to the current sheet.
|
|
12
|
+
# @option [String] name An optional name for the protected name.
|
|
13
|
+
def initialize(options={})
|
|
14
|
+
parse_options options
|
|
15
|
+
yield self if block_given?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
serializable_attributes :sqref, :name
|
|
19
|
+
# The reference for the protected range
|
|
20
|
+
# @return [String]
|
|
21
|
+
attr_reader :sqref
|
|
22
|
+
|
|
23
|
+
# The name of the protected range
|
|
24
|
+
# @return [String]
|
|
25
|
+
attr_reader :name
|
|
26
|
+
|
|
27
|
+
# @see sqref
|
|
28
|
+
def sqref=(v)
|
|
29
|
+
Axlsx.validate_string(v)
|
|
30
|
+
@sqref = v
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# @see name
|
|
34
|
+
def name=(v)
|
|
35
|
+
Axlsx.validate_string(v)
|
|
36
|
+
@name = v
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# serializes the proteted range
|
|
40
|
+
# @param [String] str if this string object is provided we append
|
|
41
|
+
# our output to that object. Use this - it helps limit the number of
|
|
42
|
+
# objects created during serialization
|
|
43
|
+
def to_xml_string(str="")
|
|
44
|
+
serialized_tag 'protectedRange', str
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# A self serializing collection of ranges that should be protected in
|
|
4
|
+
# the worksheet
|
|
5
|
+
class ProtectedRanges < SimpleTypedList
|
|
6
|
+
|
|
7
|
+
attr_reader :worksheet
|
|
8
|
+
|
|
9
|
+
def initialize(worksheet)
|
|
10
|
+
raise ArgumentError, 'You must provide a worksheet' unless worksheet.is_a?(Worksheet)
|
|
11
|
+
super ProtectedRange
|
|
12
|
+
@worksheet = worksheet
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Adds a protected range
|
|
16
|
+
# @param [Array|String] cells A string range reference or array of cells that will be protected
|
|
17
|
+
def add_range(cells)
|
|
18
|
+
sqref = if cells.is_a?(String)
|
|
19
|
+
cells
|
|
20
|
+
elsif cells.is_a?(SimpleTypedList) || cells.is_a?(Array)
|
|
21
|
+
Axlsx::cell_range(cells, false)
|
|
22
|
+
end
|
|
23
|
+
self << ProtectedRange.new(:sqref => sqref, :name => "Range#{size}")
|
|
24
|
+
last
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def to_xml_string(str = '')
|
|
28
|
+
return if empty?
|
|
29
|
+
str << '<protectedRanges>'
|
|
30
|
+
each { |range| range.to_xml_string(str) }
|
|
31
|
+
str << '</protectedRanges>'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
class RichText < SimpleTypedList
|
|
3
|
+
def initialize(text = nil, options={})
|
|
4
|
+
super(RichTextRun)
|
|
5
|
+
add_run(text, options) unless text.nil?
|
|
6
|
+
yield self if block_given?
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
attr_reader :cell
|
|
10
|
+
|
|
11
|
+
def cell=(cell)
|
|
12
|
+
@cell = cell
|
|
13
|
+
each { |run| run.cell = cell }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def autowidth
|
|
17
|
+
widtharray = [0] # Are arrays the best way of solving this problem?
|
|
18
|
+
each { |run| run.autowidth(widtharray) }
|
|
19
|
+
widtharray.max
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def add_run(text, options={})
|
|
23
|
+
self << RichTextRun.new(text, options)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def runs
|
|
27
|
+
self
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_xml_string(str='')
|
|
31
|
+
each{ |run| run.to_xml_string(str) }
|
|
32
|
+
str
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
module Axlsx
|
|
2
|
+
class RichTextRun
|
|
3
|
+
|
|
4
|
+
include Axlsx::OptionsParser
|
|
5
|
+
|
|
6
|
+
attr_reader :value
|
|
7
|
+
|
|
8
|
+
INLINE_STYLES = [:font_name, :charset,
|
|
9
|
+
:family, :b, :i, :strike, :outline,
|
|
10
|
+
:shadow, :condense, :extend, :u,
|
|
11
|
+
:vertAlign, :sz, :color, :scheme].freeze
|
|
12
|
+
|
|
13
|
+
def initialize(value, options={})
|
|
14
|
+
self.value = value
|
|
15
|
+
parse_options(options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def value=(value)
|
|
19
|
+
@value = value
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_accessor :cell
|
|
23
|
+
|
|
24
|
+
# The inline font_name property for the cell
|
|
25
|
+
# @return [String]
|
|
26
|
+
attr_reader :font_name
|
|
27
|
+
# @see font_name
|
|
28
|
+
def font_name=(v) set_run_style :validate_string, :font_name, v; end
|
|
29
|
+
|
|
30
|
+
# The inline charset property for the cell
|
|
31
|
+
# As far as I can tell, this is pretty much ignored. However, based on the spec it should be one of the following:
|
|
32
|
+
# 0  ANSI_CHARSET
|
|
33
|
+
# 1 DEFAULT_CHARSET
|
|
34
|
+
# 2 SYMBOL_CHARSET
|
|
35
|
+
# 77 MAC_CHARSET
|
|
36
|
+
# 128 SHIFTJIS_CHARSET
|
|
37
|
+
# 129  HANGUL_CHARSET
|
|
38
|
+
# 130  JOHAB_CHARSET
|
|
39
|
+
# 134  GB2312_CHARSET
|
|
40
|
+
# 136  CHINESEBIG5_CHARSET
|
|
41
|
+
# 161  GREEK_CHARSET
|
|
42
|
+
# 162  TURKISH_CHARSET
|
|
43
|
+
# 163  VIETNAMESE_CHARSET
|
|
44
|
+
# 177  HEBREW_CHARSET
|
|
45
|
+
# 178  ARABIC_CHARSET
|
|
46
|
+
# 186  BALTIC_CHARSET
|
|
47
|
+
# 204  RUSSIAN_CHARSET
|
|
48
|
+
# 222  THAI_CHARSET
|
|
49
|
+
# 238  EASTEUROPE_CHARSET
|
|
50
|
+
# 255  OEM_CHARSET
|
|
51
|
+
# @return [String]
|
|
52
|
+
attr_reader :charset
|
|
53
|
+
# @see charset
|
|
54
|
+
def charset=(v) set_run_style :validate_unsigned_int, :charset, v; end
|
|
55
|
+
|
|
56
|
+
# The inline family property for the cell
|
|
57
|
+
# @return [Integer]
|
|
58
|
+
# 1 Roman
|
|
59
|
+
# 2 Swiss
|
|
60
|
+
# 3 Modern
|
|
61
|
+
# 4 Script
|
|
62
|
+
# 5 Decorative
|
|
63
|
+
attr_reader :family
|
|
64
|
+
# @see family
|
|
65
|
+
def family=(v)
|
|
66
|
+
set_run_style :validate_family, :family, v.to_i
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# The inline bold property for the cell
|
|
70
|
+
# @return [Boolean]
|
|
71
|
+
attr_reader :b
|
|
72
|
+
# @see b
|
|
73
|
+
def b=(v) set_run_style :validate_boolean, :b, v; end
|
|
74
|
+
|
|
75
|
+
# The inline italic property for the cell
|
|
76
|
+
# @return [Boolean]
|
|
77
|
+
attr_reader :i
|
|
78
|
+
# @see i
|
|
79
|
+
def i=(v) set_run_style :validate_boolean, :i, v; end
|
|
80
|
+
|
|
81
|
+
# The inline strike property for the cell
|
|
82
|
+
# @return [Boolean]
|
|
83
|
+
attr_reader :strike
|
|
84
|
+
# @see strike
|
|
85
|
+
def strike=(v) set_run_style :validate_boolean, :strike, v; end
|
|
86
|
+
|
|
87
|
+
# The inline outline property for the cell
|
|
88
|
+
# @return [Boolean]
|
|
89
|
+
attr_reader :outline
|
|
90
|
+
# @see outline
|
|
91
|
+
def outline=(v) set_run_style :validate_boolean, :outline, v; end
|
|
92
|
+
|
|
93
|
+
# The inline shadow property for the cell
|
|
94
|
+
# @return [Boolean]
|
|
95
|
+
attr_reader :shadow
|
|
96
|
+
# @see shadow
|
|
97
|
+
def shadow=(v) set_run_style :validate_boolean, :shadow, v; end
|
|
98
|
+
|
|
99
|
+
# The inline condense property for the cell
|
|
100
|
+
# @return [Boolean]
|
|
101
|
+
attr_reader :condense
|
|
102
|
+
# @see condense
|
|
103
|
+
def condense=(v) set_run_style :validate_boolean, :condense, v; end
|
|
104
|
+
|
|
105
|
+
# The inline extend property for the cell
|
|
106
|
+
# @return [Boolean]
|
|
107
|
+
attr_reader :extend
|
|
108
|
+
# @see extend
|
|
109
|
+
def extend=(v) set_run_style :validate_boolean, :extend, v; end
|
|
110
|
+
|
|
111
|
+
# The inline underline property for the cell.
|
|
112
|
+
# It must be one of :none, :single, :double, :singleAccounting, :doubleAccounting, true
|
|
113
|
+
# @return [Boolean]
|
|
114
|
+
# @return [String]
|
|
115
|
+
# @note true is for backwards compatability and is reassigned to :single
|
|
116
|
+
attr_reader :u
|
|
117
|
+
# @see u
|
|
118
|
+
def u=(v)
|
|
119
|
+
v = :single if (v == true || v == 1 || v == :true || v == 'true')
|
|
120
|
+
set_run_style :validate_cell_u, :u, v
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# The inline color property for the cell
|
|
124
|
+
# @return [Color]
|
|
125
|
+
attr_reader :color
|
|
126
|
+
# @param [String] v The 8 character representation for an rgb color #FFFFFFFF"
|
|
127
|
+
def color=(v)
|
|
128
|
+
@color = v.is_a?(Color) ? v : Color.new(:rgb=>v)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# The inline sz property for the cell
|
|
132
|
+
# @return [Inteter]
|
|
133
|
+
attr_reader :sz
|
|
134
|
+
# @see sz
|
|
135
|
+
def sz=(v) set_run_style :validate_unsigned_int, :sz, v; end
|
|
136
|
+
|
|
137
|
+
# The inline vertical alignment property for the cell
|
|
138
|
+
# this must be one of [:baseline, :subscript, :superscript]
|
|
139
|
+
# @return [Symbol]
|
|
140
|
+
attr_reader :vertAlign
|
|
141
|
+
# @see vertAlign
|
|
142
|
+
def vertAlign=(v)
|
|
143
|
+
RestrictionValidator.validate :cell_vertAlign, [:baseline, :subscript, :superscript], v
|
|
144
|
+
set_run_style nil, :vertAlign, v
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# The inline scheme property for the cell
|
|
148
|
+
# this must be one of [:none, major, minor]
|
|
149
|
+
# @return [Symbol]
|
|
150
|
+
attr_reader :scheme
|
|
151
|
+
# @see scheme
|
|
152
|
+
def scheme=(v)
|
|
153
|
+
RestrictionValidator.validate :cell_scheme, [:none, :major, :minor], v
|
|
154
|
+
set_run_style nil, :scheme, v
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# The Shared Strings Table index for this cell
|
|
158
|
+
# @return [Integer]
|
|
159
|
+
attr_reader :ssti
|
|
160
|
+
|
|
161
|
+
# @return [Integer] The cellXfs item index applied to this cell.
|
|
162
|
+
# @raise [ArgumentError] Invalid cellXfs id if the value provided is not within cellXfs items range.
|
|
163
|
+
def style=(v)
|
|
164
|
+
Axlsx::validate_unsigned_int(v)
|
|
165
|
+
count = styles.cellXfs.size
|
|
166
|
+
raise ArgumentError, "Invalid cellXfs id" unless v < count
|
|
167
|
+
@style = v
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def autowidth(widtharray)
|
|
171
|
+
return if value.nil?
|
|
172
|
+
if styles.cellXfs[style].alignment && styles.cellXfs[style].alignment.wrap_text
|
|
173
|
+
first = true
|
|
174
|
+
value.to_s.split(/\r?\n/, -1).each do |line|
|
|
175
|
+
if first
|
|
176
|
+
first = false
|
|
177
|
+
else
|
|
178
|
+
widtharray << 0
|
|
179
|
+
end
|
|
180
|
+
widtharray[-1] += string_width(line, font_size)
|
|
181
|
+
end
|
|
182
|
+
else
|
|
183
|
+
widtharray[-1] += string_width(value.to_s, font_size)
|
|
184
|
+
end
|
|
185
|
+
widtharray
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Utility method for setting inline style attributes
|
|
189
|
+
def set_run_style(validator, attr, value)
|
|
190
|
+
return unless INLINE_STYLES.include?(attr.to_sym)
|
|
191
|
+
Axlsx.send(validator, value) unless validator.nil?
|
|
192
|
+
self.instance_variable_set :"@#{attr.to_s}", value
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def to_xml_string(str = '')
|
|
196
|
+
valid = RichTextRun::INLINE_STYLES
|
|
197
|
+
data = Hash[self.instance_values.map{ |k, v| [k.to_sym, v] }]
|
|
198
|
+
data = data.select { |key, value| valid.include?(key) && !value.nil? }
|
|
199
|
+
|
|
200
|
+
str << '<r><rPr>'
|
|
201
|
+
data.keys.each do |key|
|
|
202
|
+
case key
|
|
203
|
+
when :font_name
|
|
204
|
+
str << ('<rFont val="' << font_name << '"/>')
|
|
205
|
+
when :color
|
|
206
|
+
str << data[key].to_xml_string
|
|
207
|
+
else
|
|
208
|
+
str << ('<' << key.to_s << ' val="' << xml_value(data[key]) << '"/>')
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
clean_value = Axlsx::trust_input ? @value.to_s : ::CGI.escapeHTML(Axlsx::sanitize(@value.to_s))
|
|
212
|
+
str << ('</rPr><t>' << clean_value << '</t></r>')
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
private
|
|
216
|
+
|
|
217
|
+
# Returns the width of a string according to the current style
|
|
218
|
+
# This is still not perfect...
|
|
219
|
+
# - scaling is not linear as font sizes increase
|
|
220
|
+
def string_width(string, font_size)
|
|
221
|
+
font_scale = font_size / 10.0
|
|
222
|
+
string.count(Worksheet::THIN_CHARS) * font_scale
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# we scale the font size if bold style is applied to either the style font or
|
|
226
|
+
# the cell itself. Yes, it is a bit of a hack, but it is much better than using
|
|
227
|
+
# imagemagick and loading metrics for every character.
|
|
228
|
+
def font_size
|
|
229
|
+
return sz if sz
|
|
230
|
+
font = styles.fonts[styles.cellXfs[style].fontId] || styles.fonts[0]
|
|
231
|
+
(font.b || (defined?(@b) && @b)) ? (font.sz * 1.5) : font.sz
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def style
|
|
235
|
+
cell.style
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def styles
|
|
239
|
+
cell.row.worksheet.styles
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Converts the value to the correct XML representation (fixes issues with
|
|
243
|
+
# Numbers)
|
|
244
|
+
def xml_value value
|
|
245
|
+
if value == true
|
|
246
|
+
1
|
|
247
|
+
elsif value == false
|
|
248
|
+
0
|
|
249
|
+
else
|
|
250
|
+
value
|
|
251
|
+
end.to_s
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# A Row is a single row in a worksheet.
|
|
4
|
+
# @note The recommended way to manage rows and cells is to use Worksheet#add_row
|
|
5
|
+
# @see Worksheet#add_row
|
|
6
|
+
class Row < SimpleTypedList
|
|
7
|
+
include SerializedAttributes
|
|
8
|
+
include Accessors
|
|
9
|
+
|
|
10
|
+
# No support is provided for the following attributes
|
|
11
|
+
# spans
|
|
12
|
+
# thickTop
|
|
13
|
+
# thickBottom
|
|
14
|
+
|
|
15
|
+
# Creates a new row. New Cell objects are created based on the values, types and style options.
|
|
16
|
+
# A new cell is created for each item in the values array. style and types options are applied as follows:
|
|
17
|
+
# If the types option is defined and is a symbol it is applied to all the cells created.
|
|
18
|
+
# If the types option is an array, cell types are applied by index for each cell
|
|
19
|
+
# If the types option is not set, the cell will automatically determine its type.
|
|
20
|
+
# If the style option is defined and is an Integer, it is applied to all cells created.
|
|
21
|
+
# If the style option is an array, style is applied by index for each cell.
|
|
22
|
+
# If the style option is not defined, the default style (0) is applied to each cell.
|
|
23
|
+
# @param [Worksheet] worksheet
|
|
24
|
+
# @option options [Array] values
|
|
25
|
+
# @option options [Array, Symbol] types
|
|
26
|
+
# @option options [Array, Integer] style
|
|
27
|
+
# @option options [Float] height the row's height (in points)
|
|
28
|
+
# @see Row#array_to_cells
|
|
29
|
+
# @see Cell
|
|
30
|
+
def initialize(worksheet, values=[], options={})
|
|
31
|
+
self.worksheet = worksheet
|
|
32
|
+
super(Cell, nil, values.size)
|
|
33
|
+
self.height = options.delete(:height)
|
|
34
|
+
worksheet.rows << self
|
|
35
|
+
array_to_cells(values, options)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# A list of serializable attributes.
|
|
39
|
+
serializable_attributes :hidden, :outline_level, :collapsed, :custom_format, :s, :ph, :custom_height, :ht
|
|
40
|
+
|
|
41
|
+
# Boolean row attribute accessors
|
|
42
|
+
boolean_attr_accessor :hidden, :collapsed, :custom_format, :ph, :custom_height
|
|
43
|
+
|
|
44
|
+
# The worksheet this row belongs to
|
|
45
|
+
# @return [Worksheet]
|
|
46
|
+
attr_reader :worksheet
|
|
47
|
+
|
|
48
|
+
# Row height measured in point size. There is no margin padding on row height.
|
|
49
|
+
# @return [Float]
|
|
50
|
+
def height
|
|
51
|
+
defined?(@ht) ? @ht : nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Outlining level of the row, when outlining is on
|
|
55
|
+
# @return [Integer]
|
|
56
|
+
attr_reader :outline_level
|
|
57
|
+
alias :outlineLevel :outline_level
|
|
58
|
+
|
|
59
|
+
# The style applied ot the row. This affects the entire row.
|
|
60
|
+
# @return [Integer]
|
|
61
|
+
attr_reader :s
|
|
62
|
+
|
|
63
|
+
# @see Row#s
|
|
64
|
+
def s=(v)
|
|
65
|
+
Axlsx.validate_unsigned_numeric(v)
|
|
66
|
+
@custom_format = true
|
|
67
|
+
@s = v
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# @see Row#outline
|
|
71
|
+
def outline_level=(v)
|
|
72
|
+
Axlsx.validate_unsigned_numeric(v)
|
|
73
|
+
@outline_level = v
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
alias :outlineLevel= :outline_level=
|
|
77
|
+
|
|
78
|
+
# The index of this row in the worksheet
|
|
79
|
+
# @return [Integer]
|
|
80
|
+
def row_index
|
|
81
|
+
worksheet.rows.index(self)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Serializes the row
|
|
85
|
+
# @param [Integer] r_index The row index, 0 based.
|
|
86
|
+
# @param [String] str The string this rows xml will be appended to.
|
|
87
|
+
# @return [String]
|
|
88
|
+
def to_xml_string(r_index, str = '')
|
|
89
|
+
serialized_tag('row', str, :r => r_index + 1) do
|
|
90
|
+
tmp = '' # time / memory tradeoff, lots of calls to rubyzip costs more
|
|
91
|
+
# time..
|
|
92
|
+
each_with_index { |cell, c_index| cell.to_xml_string(r_index, c_index, tmp) }
|
|
93
|
+
str << tmp
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Adds a single sell to the row based on the data provided and updates the worksheet's autofit data.
|
|
98
|
+
# @return [Cell]
|
|
99
|
+
def add_cell(value = '', options = {})
|
|
100
|
+
c = Cell.new(self, value, options)
|
|
101
|
+
self << c
|
|
102
|
+
worksheet.send(:update_column_info, self, [])
|
|
103
|
+
c
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# sets the style for every cell in this row
|
|
107
|
+
def style=(style)
|
|
108
|
+
each_with_index do | cell, index |
|
|
109
|
+
cell.style = style.is_a?(Array) ? style[index] : style
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# @see height
|
|
114
|
+
def height=(v)
|
|
115
|
+
unless v.nil?
|
|
116
|
+
Axlsx::validate_unsigned_numeric(v)
|
|
117
|
+
@custom_height = true
|
|
118
|
+
@ht = v
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# return cells
|
|
123
|
+
def cells
|
|
124
|
+
self
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
private
|
|
128
|
+
|
|
129
|
+
# assigns the owning worksheet for this row
|
|
130
|
+
def worksheet=(v) DataTypeValidator.validate :row_worksheet, Worksheet, v; @worksheet=v; end
|
|
131
|
+
|
|
132
|
+
# Converts values, types, and style options into cells and associates them with this row.
|
|
133
|
+
# A new cell is created for each item in the values array.
|
|
134
|
+
# If value option is defined and is a symbol it is applied to all the cells created.
|
|
135
|
+
# If the value option is an array, cell types are applied by index for each cell
|
|
136
|
+
# If the style option is defined and is an Integer, it is applied to all cells created.
|
|
137
|
+
# If the style option is an array, style is applied by index for each cell.
|
|
138
|
+
# @option options [Array] values
|
|
139
|
+
# @option options [Array, Symbol] types
|
|
140
|
+
# @option options [Array, Integer] style
|
|
141
|
+
def array_to_cells(values, options={})
|
|
142
|
+
DataTypeValidator.validate :array_to_cells, Array, values
|
|
143
|
+
types, style, formula_values = options.delete(:types), options.delete(:style), options.delete(:formula_values)
|
|
144
|
+
values.each_with_index do |value, index|
|
|
145
|
+
options[:style] = style.is_a?(Array) ? style[index] : style if style
|
|
146
|
+
options[:type] = types.is_a?(Array) ? types[index] : types if types
|
|
147
|
+
options[:formula_value] = formula_values[index] if formula_values.is_a?(Array)
|
|
148
|
+
|
|
149
|
+
self[index] = Cell.new(self, value, options)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
end
|