Module: Axlsx

Defined in:
lib/axlsx.rb,
lib/axlsx/package.rb,
lib/axlsx/version.rb,
lib/axlsx/drawing/pic.rb,
lib/axlsx/drawing/axes.rb,
lib/axlsx/drawing/axis.rb,
lib/axlsx/util/storage.rb,
lib/axlsx/doc_props/app.rb,
lib/axlsx/drawing/chart.rb,
lib/axlsx/drawing/title.rb,
lib/axlsx/stylesheet/xf.rb,
lib/axlsx/doc_props/core.rb,
lib/axlsx/drawing/d_lbls.rb,
lib/axlsx/drawing/marker.rb,
lib/axlsx/drawing/series.rb,
lib/axlsx/stylesheet/dxf.rb,
lib/axlsx/util/accessors.rb,
lib/axlsx/util/constants.rb,
lib/axlsx/drawing/drawing.rb,
lib/axlsx/drawing/num_val.rb,
lib/axlsx/drawing/scaling.rb,
lib/axlsx/drawing/str_val.rb,
lib/axlsx/drawing/view_3D.rb,
lib/axlsx/stylesheet/fill.rb,
lib/axlsx/stylesheet/font.rb,
lib/axlsx/util/validators.rb,
lib/axlsx/drawing/cat_axis.rb,
lib/axlsx/drawing/num_data.rb,
lib/axlsx/drawing/ser_axis.rb,
lib/axlsx/drawing/str_data.rb,
lib/axlsx/drawing/val_axis.rb,
lib/axlsx/stylesheet/color.rb,
lib/axlsx/util/zip_command.rb,
lib/axlsx/drawing/bar_chart.rb,
lib/axlsx/drawing/hyperlink.rb,
lib/axlsx/drawing/pie_chart.rb,
lib/axlsx/drawing/vml_shape.rb,
lib/axlsx/rels/relationship.rb,
lib/axlsx/stylesheet/border.rb,
lib/axlsx/stylesheet/styles.rb,
lib/axlsx/workbook/workbook.rb,
lib/axlsx/drawing/area_chart.rb,
lib/axlsx/drawing/bar_series.rb,
lib/axlsx/drawing/line_chart.rb,
lib/axlsx/drawing/pie_series.rb,
lib/axlsx/rels/relationships.rb,
lib/axlsx/stylesheet/num_fmt.rb,
lib/axlsx/drawing/area_series.rb,
lib/axlsx/drawing/line_series.rb,
lib/axlsx/drawing/vml_drawing.rb,
lib/axlsx/util/options_parser.rb,
lib/axlsx/content_type/default.rb,
lib/axlsx/drawing/bar_3D_chart.rb,
lib/axlsx/drawing/bubble_chart.rb,
lib/axlsx/drawing/pie_3D_chart.rb,
lib/axlsx/drawing/series_title.rb,
lib/axlsx/stylesheet/border_pr.rb,
lib/axlsx/util/mime_type_utils.rb,
lib/axlsx/content_type/override.rb,
lib/axlsx/drawing/bubble_series.rb,
lib/axlsx/drawing/graphic_frame.rb,
lib/axlsx/drawing/line_3D_chart.rb,
lib/axlsx/drawing/scatter_chart.rb,
lib/axlsx/stylesheet/cell_style.rb,
lib/axlsx/workbook/defined_name.rb,
lib/axlsx/drawing/ax_data_source.rb,
lib/axlsx/drawing/scatter_series.rb,
lib/axlsx/stylesheet/table_style.rb,
lib/axlsx/util/simple_typed_list.rb,
lib/axlsx/workbook/defined_names.rb,
lib/axlsx/workbook/workbook_view.rb,
lib/axlsx/workbook/worksheet/col.rb,
lib/axlsx/workbook/worksheet/row.rb,
lib/axlsx/drawing/num_data_source.rb,
lib/axlsx/drawing/one_cell_anchor.rb,
lib/axlsx/drawing/picture_locking.rb,
lib/axlsx/drawing/two_cell_anchor.rb,
lib/axlsx/stylesheet/pattern_fill.rb,
lib/axlsx/stylesheet/table_styles.rb,
lib/axlsx/workbook/workbook_views.rb,
lib/axlsx/workbook/worksheet/cell.rb,
lib/axlsx/workbook/worksheet/cfvo.rb,
lib/axlsx/workbook/worksheet/cols.rb,
lib/axlsx/workbook/worksheet/pane.rb,
lib/axlsx/stylesheet/gradient_fill.rb,
lib/axlsx/stylesheet/gradient_stop.rb,
lib/axlsx/workbook/worksheet/break.rb,
lib/axlsx/workbook/worksheet/cfvos.rb,
lib/axlsx/workbook/worksheet/table.rb,
lib/axlsx/content_type/content_type.rb,
lib/axlsx/stylesheet/cell_alignment.rb,
lib/axlsx/workbook/worksheet/tables.rb,
lib/axlsx/stylesheet/cell_protection.rb,
lib/axlsx/util/serialized_attributes.rb,
lib/axlsx/workbook/worksheet/comment.rb,
lib/axlsx/workbook/worksheet/comments.rb,
lib/axlsx/workbook/worksheet/data_bar.rb,
lib/axlsx/workbook/worksheet/icon_set.rb,
lib/axlsx/workbook/worksheet/sheet_pr.rb,
lib/axlsx/workbook/worksheet/dimension.rb,
lib/axlsx/workbook/worksheet/rich_text.rb,
lib/axlsx/workbook/worksheet/selection.rb,
lib/axlsx/workbook/worksheet/worksheet.rb,
lib/axlsx/workbook/shared_strings_table.rb,
lib/axlsx/workbook/worksheet/col_breaks.rb,
lib/axlsx/workbook/worksheet/outline_pr.rb,
lib/axlsx/workbook/worksheet/page_setup.rb,
lib/axlsx/workbook/worksheet/row_breaks.rb,
lib/axlsx/workbook/worksheet/sheet_data.rb,
lib/axlsx/workbook/worksheet/sheet_view.rb,
lib/axlsx/stylesheet/table_style_element.rb,
lib/axlsx/workbook/worksheet/color_scale.rb,
lib/axlsx/workbook/worksheet/pivot_table.rb,
lib/axlsx/util/buffered_zip_output_stream.rb,
lib/axlsx/workbook/worksheet/merged_cells.rb,
lib/axlsx/workbook/worksheet/page_margins.rb,
lib/axlsx/workbook/worksheet/pivot_tables.rb,
lib/axlsx/workbook/worksheet/header_footer.rb,
lib/axlsx/workbook/worksheet/print_options.rb,
lib/axlsx/workbook/worksheet/rich_text_run.rb,
lib/axlsx/workbook/worksheet/sheet_calc_pr.rb,
lib/axlsx/workbook/worksheet/border_creator.rb,
lib/axlsx/workbook/worksheet/page_set_up_pr.rb,
lib/axlsx/content_type/abstract_content_type.rb,
lib/axlsx/workbook/worksheet/cell_serializer.rb,
lib/axlsx/workbook/worksheet/data_validation.rb,
lib/axlsx/workbook/worksheet/protected_range.rb,
lib/axlsx/workbook/worksheet/sheet_format_pr.rb,
lib/axlsx/workbook/worksheet/data_validations.rb,
lib/axlsx/workbook/worksheet/protected_ranges.rb,
lib/axlsx/workbook/worksheet/sheet_protection.rb,
lib/axlsx/workbook/worksheet/table_style_info.rb,
lib/axlsx/workbook/worksheet/worksheet_drawing.rb,
lib/axlsx/workbook/worksheet/worksheet_comments.rb,
lib/axlsx/workbook/worksheet/auto_filter/filters.rb,
lib/axlsx/workbook/worksheet/date_time_converter.rb,
lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb,
lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb,
lib/axlsx/workbook/worksheet/auto_filter/sort_state.rb,
lib/axlsx/workbook/worksheet/conditional_formatting.rb,
lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb,
lib/axlsx/workbook/worksheet/conditional_formattings.rb,
lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb,
lib/axlsx/workbook/worksheet/auto_filter/sort_condition.rb,
lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb,
lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb

Overview

Defined Under Namespace

Modules: Accessors, MimeTypeUtils, OptionsParser, SerializedAttributes Classes: AbstractContentType, App, AreaChart, AreaSeries, AutoFilter, AxDataSource, Axes, Axis, Bar3DChart, BarChart, BarSeries, Border, BorderCreator, BorderPr, Break, BubbleChart, BubbleSeries, BufferedZipOutputStream, CatAxis, Cell, CellAlignment, CellProtection, CellSerializer, CellStyle, Cfvo, Cfvos, Chart, Col, ColBreaks, Color, ColorScale, Cols, Comment, Comments, ConditionalFormatting, ConditionalFormattingRule, ConditionalFormattings, ContentType, Core, DLbls, DataBar, DataTypeValidator, DataValidation, DataValidations, DateTimeConverter, Default, DefinedName, DefinedNames, Dimension, Drawing, Dxf, Fill, FilterColumn, Filters, Font, GradientFill, GradientStop, GraphicFrame, HeaderFooter, Hyperlink, IconSet, Line3DChart, LineChart, LineSeries, Marker, MergedCells, NumData, NumDataSource, NumFmt, NumVal, OneCellAnchor, OutlinePr, Override, Package, PageMargins, PageSetUpPr, PageSetup, Pane, PatternFill, Pic, PictureLocking, Pie3DChart, PieChart, PieSeries, PivotTable, PivotTableCacheDefinition, PivotTables, PrintOptions, ProtectedRange, ProtectedRanges, RangeValidator, RegexValidator, Relationship, Relationships, RestrictionValidator, RichText, RichTextRun, Row, RowBreaks, Scaling, ScatterChart, ScatterSeries, Selection, SerAxis, Series, SeriesTitle, SharedStringsTable, SheetCalcPr, SheetData, SheetFormatPr, SheetPr, SheetProtection, SheetView, SortCondition, SortState, Storage, StrData, StrVal, Styles, Table, TableStyle, TableStyleElement, TableStyleInfo, TableStyles, Tables, Title, TwoCellAnchor, ValAxis, View3D, VmlDrawing, VmlShape, Workbook, WorkbookView, WorkbookViews, Worksheet, WorksheetComments, WorksheetDrawing, WorksheetHyperlink, WorksheetHyperlinks, Xf, ZipCommand

Constant Summary collapse

VERSION =

The current version

"4.0.0"
ENCODING =

XML Encoding

"UTF-8"
XML_NS =

spreadsheetML namespace

"http://schemas.openxmlformats.org/spreadsheetml/2006/main"
XML_NS_T =

content-types namespace

"http://schemas.openxmlformats.org/package/2006/content-types"
APP_NS =

extended-properties namespace

"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
APP_NS_VT =

doc props namespace

"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
CORE_NS =

core properties namespace

"http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
CORE_NS_DC =

dc elements (core) namespace

"http://purl.org/dc/elements/1.1/"
CORE_NS_DCMIT =

dcmit (core) namespcace

"http://purl.org/dc/dcmitype/"
CORE_NS_DCT =

dc terms namespace

"http://purl.org/dc/terms/"
CORE_NS_XSI =

xml schema namespace

"http://www.w3.org/2001/XMLSchema-instance"
DIGITAL_SIGNATURE_NS =

Digital signature namespace

"http://schemas.openxmlformats.org/package/2006/digital-signature"
XML_NS_XDR =

spreadsheet drawing namespace

"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
XML_NS_A =

drawing namespace

"http://schemas.openxmlformats.org/drawingml/2006/main"
XML_NS_C =

chart namespace

"http://schemas.openxmlformats.org/drawingml/2006/chart"
XML_NS_R =

relationships namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
RELS_R =

relationships name space

"http://schemas.openxmlformats.org/package/2006/relationships"
TABLE_R =

table rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"
PIVOT_TABLE_R =

pivot table rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable"
PIVOT_TABLE_CACHE_DEFINITION_R =

pivot table cache definition namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition"
WORKBOOK_R =

workbook rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
WORKSHEET_R =

worksheet rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"
APP_R =

app rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"
CORE_R =

core rels namespace

"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"
DIGITAL_SIGNATURE_R =

digital signature rels namespace

"http://schemas.openxmlformats.org/package/2006/relationships/digital- signature/signature"
STYLES_R =

styles rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"
SHARED_STRINGS_R =

shared strings namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"
DRAWING_R =

drawing rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"
CHART_R =

chart rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"
IMAGE_R =

image rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
COMMENT_R =

comment rels namespace

"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"
COMMENT_R_NULL =

comment relation for nil target

"http://purl.oclc.org/ooxml/officeDocument/relationships/comments"
VML_DRAWING_R =

vml drawing relation namespace

'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing'
VML_DRAWING_CT =

VML Drawing content type

"application/vnd.openxmlformats-officedocument.vmlDrawing"
TABLE_CT =

table content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"
PIVOT_TABLE_CT =

pivot table content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml"
PIVOT_TABLE_CACHE_DEFINITION_CT =

pivot table cache definition content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml"
WORKBOOK_CT =

workbook content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"
APP_CT =

app content type

"application/vnd.openxmlformats-officedocument.extended-properties+xml"
RELS_CT =

rels content type

"application/vnd.openxmlformats-package.relationships+xml"
STYLES_CT =

styles content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"
XML_CT =

xml content type

"application/xml"
WORKSHEET_CT =

worksheet content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
SHARED_STRINGS_CT =

shared strings content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"
CORE_CT =

core content type

"application/vnd.openxmlformats-package.core-properties+xml"
DIGITAL_SIGNATURE_XML_CT =

digital signature xml content type

"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml"
DIGITAL_SIGNATURE_ORIGIN_CT =

digital signature origin content type

"application/vnd.openxmlformats-package.digital-signature-origin"
DIGITAL_SIGNATURE_CERTIFICATE_CT =

digital signature certificate content type

"application/vnd.openxmlformats-package.digital-signature-certificate"
CHART_CT =

chart content type

"application/vnd.openxmlformats-officedocument.drawingml.chart+xml"
COMMENT_CT =

comments content type

"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"
JPEG_CT =

jpeg content type

"image/jpeg"
GIF_CT =

gif content type

"image/gif"
PNG_CT =

png content type

"image/png"
DRAWING_CT =

drawing content type

"application/vnd.openxmlformats-officedocument.drawing+xml"
XML_EX =

xml content type extensions

"xml"
JPEG_EXS =

jpeg extensions

["jpeg", "jpg"].freeze
GIF_EX =

gif extension

"gif"
PNG_EX =

png extension

"png"
RELS_EX =

rels content type extension

"rels"
WORKBOOK_PN =

workbook part

"xl/workbook.xml"
STYLES_PN =

styles part

"styles.xml"
SHARED_STRINGS_PN =

shared_strings part

"sharedStrings.xml"
APP_PN =

app part

"docProps/app.xml"
CORE_PN =

core part

"docProps/core.xml"
CONTENT_TYPES_PN =

content types part

"[Content_Types].xml"
RELS_PN =

rels part

"_rels/.rels"
WORKBOOK_RELS_PN =

workbook rels part

"xl/_rels/workbook.xml.rels"
WORKSHEET_PN =

worksheet part

"worksheets/sheet%d.xml"
WORKSHEET_RELS_PN =

worksheet rels part

"worksheets/_rels/sheet%d.xml.rels"
DRAWING_PN =

drawing part

"drawings/drawing%d.xml"
DRAWING_RELS_PN =

drawing rels part

"drawings/_rels/drawing%d.xml.rels"
VML_DRAWING_PN =

vml drawing part

"drawings/vmlDrawing%d.vml"
TABLE_PN =

drawing part

"tables/table%d.xml"
PIVOT_TABLE_PN =

pivot table parts

"pivotTables/pivotTable%d.xml"
PIVOT_TABLE_CACHE_DEFINITION_PN =

pivot table cache definition part name

"pivotCache/pivotCacheDefinition%d.xml"
PIVOT_TABLE_RELS_PN =

pivot table rels parts

"pivotTables/_rels/pivotTable%d.xml.rels"
CHART_PN =

chart part

"charts/chart%d.xml"
IMAGE_PN =

chart part

"media/image%d.%s"
COMMENT_PN =

comment part

"comments%d.xml"
SCHEMA_BASE =

location of schema files for validation

"#{File.dirname(__FILE__)}/../../schema/"
APP_XSD =

App validation schema

"#{SCHEMA_BASE}shared-documentPropertiesExtended.xsd"
CORE_XSD =

core validation schema

"#{SCHEMA_BASE}opc-coreProperties.xsd"
CONTENT_TYPES_XSD =

content types validation schema

"#{SCHEMA_BASE}opc-contentTypes.xsd"
RELS_XSD =

rels validation schema

"#{SCHEMA_BASE}opc-relationships.xsd"
SML_XSD =

spreadsheetML validation schema

"#{SCHEMA_BASE}sml.xsd"
DRAWING_XSD =

drawing validation schema

"#{SCHEMA_BASE}dml-spreadsheetDrawing.xsd"
NUM_FMT_PERCENT =

number format id for pecentage formatting using the default formatting id.

9
NUM_FMT_YYYYMMDD =

number format id for date format like 2011/11/13

100
NUM_FMT_YYYYMMDDHHMMSS =

number format id for time format the creates 2011/11/13 12:23:10

101
STYLE_THIN_BORDER =

cellXfs id for thin borders around the cell

1
STYLE_DATE =

cellXfs id for default date styling

2
WORKSHEET_MAX_NAME_LENGTH =

worksheet maximum name length

31
WORKSHEET_NAME_FORBIDDEN_CHARS =

worksheet name forbidden characters

'[]*/\?:'.chars.freeze
ERR_RESTRICTION =

error messages RestrictionValidor

"Invalid Data: %s. %s must be one of %s."
ERR_TYPE =

error message DataTypeValidator

"Invalid Data %s for %s. must be %s."
ERR_REGEX =

error message for RegexValidator

"Invalid Data. %s does not match %s."
ERR_RANGE =

error message for RangeValidator

"Invalid Data. %s must be between %s and %s, (inclusive:%s) you gave: %s"
ERR_SHEET_NAME_EMPTY =

error message for sheets that use explicit empty string name

"Your worksheet name is empty. Worksheet name can't be empty. Please assign name of your sheet or don't use name option at all."
ERR_SHEET_NAME_TOO_LONG =

error message for sheets that use a name which is longer than 31 bytes

"Your worksheet name '%s' is too long. Worksheet names must be #{WORKSHEET_MAX_NAME_LENGTH} characters (bytes) or less"
ERR_SHEET_NAME_CHARACTER_FORBIDDEN =

error message for sheets that use a name which include invalid characters

"Your worksheet name '%s' contains a character which is not allowed by MS Excel and will cause repair warnings. Please change the name of your sheet."
ERR_DUPLICATE_SHEET_NAME =

error message for duplicate sheet names

"There is already a worksheet in this workbook named '%s'. Please use a unique name"
ERR_INVALID_BORDER_OPTIONS =

error message when user does not provide color and or style options for border in Style#add_sytle

"border hash must include both style and color. e.g. :border => { :color => 'FF000000', :style => :thin }. You provided: %s"
ERR_INVALID_BORDER_ID =

error message for invalid border id reference

"The border id you specified (%s) does not exist. Please add a border with Style#add_style before referencing its index."
ERR_ANGLE =

error message for invalid angles

"Angles must be a value between -90 and 90. You provided: %s"
ERR_INTEGERISH =

error message for non 'integerish' value

"You value must be, or be castable via to_i, an Integer. You provided %s"
ERR_CELL_REFERENCE_INVALID =

error message for invalid cell reference

"Invalid cell definition `%s`"
ERR_CELL_REFERENCE_MISSING_CELL =

error message for cell reference with last cell missing

"Missing cell `%s` for the specified range `%s`"
CONTROL_CHARS =

The regular expression used to remove control characters from worksheets

pattern.freeze
ISO_8601_REGEX =

ISO 8601 date recognition

/\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?\Z/.freeze
SAFE_FLOAT_REGEX =

FLOAT recognition

/\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]{1,2})?\Z/.freeze
MAYBE_FLOAT_REGEX =
/\A[-+]?[0-9]*\.?[0-9]+[eE](?<exp>[-+]?[0-9]{3})\Z/.freeze
NUMERIC_REGEX =

Numeric recognition

/\A[+-]?\d+?\Z/.freeze
FORMULA_PREFIX =

Leading characters that indicate a formula. See: https://owasp.org/www-community/attacks/CSV_Injection

'='
ARRAY_FORMULA_PREFIX =

Leading characters that indicate an array formula.

'{='
ARRAY_FORMULA_SUFFIX =

Trailing character that indicates an array formula.

'}'
BOOLEAN_VALUES =
[true, false].freeze
UINT_VALIDATOR =

Validates an unsigned intger

->(arg) { arg.respond_to?(:>=) && arg >= 0 }
VALID_BOOLEAN_CLASSES =
[TrueClass, FalseClass, Integer, String, Symbol].freeze
VALID_BOOLEAN_VALUES =
[true, false, 1, 0, '1', '0', 'true', 'false', :true, :false].freeze
BOOLEAN_VALIDATOR =
->(arg) { VALID_BOOLEAN_VALUES.include?(arg) }
SCALE_10_400_VALIDATOR =
->(arg) { arg >= 10 && arg <= 400 }
SCALE_0_10_400_VALIDATOR =
->(arg) { arg == 0 || (arg >= 10 && arg <= 400) }
VALID_PAGE_ORIENTATION_VALUES =
[:default, :landscape, :portrait].freeze
VALID_CELL_U_VALUES =
[:none, :single, :double, :singleAccounting, :doubleAccounting].freeze
VALID_FAMILY_VALUES =
(1..5).freeze
VALID_PATTERN_TYPE_VALUES =
[:none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown, :darkUp, :darkGrid,
:darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, :gray0625].freeze
VALID_TIME_PERIOD_TYPE_VALUES =
[:today, :yesterday, :tomorrow, :last7Days, :thisMonth, :lastMonth, :nextMonth, :thisWeek, :lastWeek, :nextWeek].freeze
VALID_ICON_SET_VALUES =
["3Arrows", "3ArrowsGray", "3Flags", "3TrafficLights1", "3TrafficLights2", "3Signs", "3Symbols", "3Symbols2", "4Arrows", "4ArrowsGray", "4RedToBlack", "4Rating", "4TrafficLights", "5Arrows", "5ArrowsGray", "5Rating", "5Quarters"].freeze
VALID_CONDITIONAL_FORMATTING_TYPE_VALUES =
[:expression, :cellIs, :colorScale, :dataBar, :iconSet, :top10, :uniqueValues, :duplicateValues, :containsText, :notContainsText, :beginsWith, :endsWith, :containsBlanks, :notContainsBlanks, :containsErrors, :notContainsErrors, :timePeriod, :aboveAverage].freeze
VALID_CONDITION_FORMATTING_VALUE_OBJECT_TYPE_VALUES =
[:num, :percent, :max, :min, :formula, :percentile].freeze
VALID_CONDITIONAL_FORMATTING_OPERATOR_VALUES =
[:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween, :containsText, :notContains, :beginsWith, :endsWith].freeze
VALID_GRADIENT_TYPE_VALUES =
[:linear, :path].freeze
VALID_SCATTER_STYLE_VALUES =
[:none, :line, :lineMarker, :marker, :smooth, :smoothMarker].freeze
VALID_HORIZONTAL_ALIGNMENT_VALUES =
[:general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed].freeze
VALID_VERTICAL_ALIGNMENT_VALUES =
[:top, :center, :bottom, :justify, :distributed].freeze
VALID_CONTENT_TYPE_VALUES =
[TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, JPEG_CT, GIF_CT, PNG_CT, DRAWING_CT, COMMENT_CT, VML_DRAWING_CT, PIVOT_TABLE_CT, PIVOT_TABLE_CACHE_DEFINITION_CT].freeze
VALID_RELATIONSHIP_TYPE_VALUES =
[XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R, IMAGE_R, HYPERLINK_R, SHARED_STRINGS_R, COMMENT_R, VML_DRAWING_R, COMMENT_R_NULL, PIVOT_TABLE_R, PIVOT_TABLE_CACHE_DEFINITION_R].freeze
VALID_TABLE_ELEMENT_TYPE_VALUES =
[:wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues].freeze
VALID_DATA_VALIDATION_ERROR_STYLE_VALUES =
[:information, :stop, :warning].freeze
VALID_DATA_VALIDATION_OPERATOR_VALUES =
[:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween].freeze
VALID_DATA_VALIDATION_TYPE_VALUES =
[:custom, :data, :decimal, :list, :none, :textLength, :date, :time, :whole].freeze
VALID_SHEET_VIEW_TYPE_VALUES =
[:normal, :page_break_preview, :page_layout].freeze
VALID_PANE_TYPE_VALUES =
[:bottom_left, :bottom_right, :top_left, :top_right].freeze
VALID_SPLIT_STATE_TYPE_VALUES =
[:frozen, :frozen_split, :split].freeze
VALID_DISPLAY_BLANK_AS_VALUES =
[:gap, :span, :zero].freeze
VALID_VIEW_VISIBILITY_VALUES =
[:visible, :hidden, :very_hidden].freeze
VALID_MARKER_SYMBOL_VALUES =
[:default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x].freeze

Class Method Summary collapse

Class Method Details

.booleanize(value) ⇒ Object

If value is boolean return 1 or 0 else return the value

Parameters:

  • value (Object)

    The value to process

Returns:

  • (Object)


183
184
185
186
187
188
189
# File 'lib/axlsx.rb', line 183

def self.booleanize(value)
  if BOOLEAN_VALUES.include?(value)
    value ? '1' : '0'
  else
    value
  end
end

.camel(s = "", all_caps = true) ⇒ String

performs the increadible feat of changing snake_case to CamelCase

Parameters:

  • s (String) (defaults to: "")

    The snake case string to camelize

Returns:

  • (String)


160
161
162
163
164
# File 'lib/axlsx.rb', line 160

def self.camel(s = "", all_caps = true)
  s = s.to_s
  s = s.capitalize if all_caps
  s.gsub(/_(.)/) { ::Regexp.last_match(1).upcase }
end

.cell_r(c_index, r_index) ⇒ String

Returns The alpha(column)numeric(row) reference for this sell.

Examples:

Relative Cell Reference

ws.rows.first.cells.first.r #=> "A1"

Returns:

  • (String)

    The alpha(column)numeric(row) reference for this sell.



139
140
141
# File 'lib/axlsx.rb', line 139

def self.cell_r(c_index, r_index)
  col_ref(c_index) + row_ref(r_index)
end

.cell_range(cells, absolute = true) ⇒ Object

determines the cell range for the items provided



57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/axlsx.rb', line 57

def self.cell_range(cells, absolute = true)
  return "" unless cells.first.is_a? Cell

  first_cell, last_cell = cells.minmax_by(&:pos)
  reference = "#{first_cell.reference(absolute)}:#{last_cell.reference(absolute)}"
  if absolute
    escaped_name = first_cell.row.worksheet.name.gsub '&apos;', "''"
    "'#{escaped_name}'!#{reference}"
  else
    reference
  end
end

.coderHtmlEntities

global reference html entity encoding

Returns:

  • (HtmlEntities)


80
81
82
# File 'lib/axlsx.rb', line 80

def self.coder
  @@coder ||= ::HTMLEntities.new
end

.col_ref(index) ⇒ String

Note:

This follows the standard spreadsheet convention of naming columns A to Z, followed by AA to AZ etc.

converts the column index into alphabetical values.

Returns:

  • (String)


111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/axlsx.rb', line 111

def self.col_ref(index)
  # Every row will call this for each column / cell and so we can cache result and avoid lots of small object
  # allocations.
  @col_ref ||= {}
  @col_ref[index] ||= begin
    i = index
    chars = +''
    while i >= 26
      i, char = i.divmod(26)
      chars.prepend((char + 65).chr)
      i -= 1
    end
    chars.prepend((i + 65).chr)
    chars.freeze
  end
end

.escape_formulasBoolean

Whether to treat values starting with an equals sign as formulas or as literal strings. Allowing user-generated data to be interpreted as formulas is a security risk. See https://www.owasp.org/index.php/CSV_Injection for details.

Returns:

  • (Boolean)


222
223
224
# File 'lib/axlsx.rb', line 222

def self.escape_formulas
  !defined?(@escape_formulas) || @escape_formulas.nil? ? true : @escape_formulas
end

.escape_formulas=(value) ⇒ Object

Sets whether to treat values starting with an equals sign as formulas or as literal strings.

Parameters:

  • value (Boolean)

    The value to set.



228
229
230
231
# File 'lib/axlsx.rb', line 228

def self.escape_formulas=(value)
  Axlsx.validate_boolean(value)
  @escape_formulas = value
end

.hash_deep_merge(first_hash, second_hash) ⇒ Object

utility method for performing a deep merge on a Hash

Parameters:

  • first_hash (Hash)

    Hash to merge into

  • second_hash (Hash)

    Hash to be added



194
195
196
197
198
199
200
201
202
# File 'lib/axlsx.rb', line 194

def self.hash_deep_merge(first_hash, second_hash)
  first_hash.merge(second_hash) do |_key, this_val, other_val|
    if this_val.is_a?(Hash) && other_val.is_a?(Hash)
      Axlsx.hash_deep_merge(this_val, other_val)
    else
      other_val
    end
  end
end

.instance_values_for(object) ⇒ Object

I am a very big fan of activesupports instance_values method, but do not want to require nor include the entire library just for this one method.

Defining as a class method on Axlsx to refrain from monkeypatching Object for all users of this gem.



52
53
54
# File 'lib/axlsx.rb', line 52

def self.instance_values_for(object)
  object.instance_variables.to_h { |name| [name.to_s[1..], object.instance_variable_get(name)] }
end

.name_to_indices(name) ⇒ Object

returns the x, y position of a cell

Raises:

  • (ArgumentError)


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/axlsx.rb', line 85

def self.name_to_indices(name)
  raise ArgumentError, 'invalid cell name' unless name.size > 1

  letters_str = name[/[A-Z]+/]

  # capitalization?!?
  v = letters_str.reverse.chars.reduce({ base: 1, i: 0 }) do |val, c|
    val[:i] += ((c.bytes.first - 64) * val[:base])

    val[:base] *= 26

    next val
  end

  col_index = (v[:i] - 1)

  numbers_str = name[/[1-9][0-9]*/]

  row_index = (numbers_str.to_i - 1)

  [col_index, row_index]
end

.range_to_a(range) ⇒ Array

Creates an array of individual cell references based on an Excel reference range.

Parameters:

  • range (String)

    A cell range, for example A1:D5

Returns:

  • (Array)


146
147
148
149
150
151
152
153
154
155
# File 'lib/axlsx.rb', line 146

def self.range_to_a(range)
  range =~ /^(\w+?\d+):(\w+?\d+)$/
  start_col, start_row = name_to_indices(::Regexp.last_match(1))
  end_col,   end_row   = name_to_indices(::Regexp.last_match(2))
  (start_row..end_row).to_a.map do |row_num|
    (start_col..end_col).to_a.map do |col_num|
      cell_r(col_num, row_num)
    end
  end
end

.row_ref(index) ⇒ String

Note:

The spreadsheet rows are 1-based and the passed in index is 0-based, so we add 1.

converts the row index into string values.

Returns:

  • (String)


131
132
133
134
# File 'lib/axlsx.rb', line 131

def self.row_ref(index)
  @row_ref ||= {}
  @row_ref[index] ||= (index + 1).to_s.freeze
end

.sanitize(str) ⇒ String

returns the provided string with all invalid control charaters removed.

Parameters:

  • str (String)

    The string to process

Returns:

  • (String)


170
171
172
173
174
175
176
177
# File 'lib/axlsx.rb', line 170

def self.sanitize(str)
  if str.frozen?
    str.delete(CONTROL_CHARS)
  else
    str.delete!(CONTROL_CHARS)
    str
  end
end

.sort_cells(cells) ⇒ Array

sorts the array of cells provided to start from the minimum x,y to the maximum x.y#

Parameters:

  • cells (Array)

Returns:

  • (Array)


74
75
76
# File 'lib/axlsx.rb', line 74

def self.sort_cells(cells)
  cells.sort_by(&:pos)
end

.trust_inputObject

Instructs the serializer to not try to escape cell value input. This will give you a huge speed bonus, but if you content has <, > or other xml character data the workbook will be invalid and Excel will complain.



207
208
209
# File 'lib/axlsx.rb', line 207

def self.trust_input
  @trust_input ||= false
end

.trust_input=(trust_me) ⇒ Boolean

@param[Boolean] trust_me A boolean value indicating if the cell value content is to be trusted

Returns:

  • (Boolean)

See Also:

  • trust_input


214
215
216
# File 'lib/axlsx.rb', line 214

def self.trust_input=(trust_me)
  @trust_input = trust_me
end

.validate_angle(v) ⇒ Boolean

Requires that the value is between -54000000 and 54000000

Parameters:

  • v (Any)

    The value validated

Returns:

  • (Boolean)

    true if the data is valid

Raises:

  • (ArgumentError)

    raised if the value cannot be converted to an integer between the allowed angle values for chart label rotation.



80
81
82
# File 'lib/axlsx/util/validators.rb', line 80

def self.validate_angle(v)
  raise ArgumentError, format(ERR_ANGLE, v.inspect) unless v.to_i >= -5400000 && v.to_i <= 5400000
end

.validate_boolean(v) ⇒ Object

Requires that the value is a form that can be evaluated as a boolean in an xml document. The value must be an instance of String, Integer, Symbol, TrueClass or FalseClass and it must be one of 0, 1, "true", "false", :true, :false, true, false, "0", or "1"

Parameters:

  • v (Any)

    The value validated



117
118
119
# File 'lib/axlsx/util/validators.rb', line 117

def self.validate_boolean(v)
  DataTypeValidator.validate(:boolean, VALID_BOOLEAN_CLASSES, v, BOOLEAN_VALIDATOR)
end

.validate_cell_u(v) ⇒ Object

Requires that the value is one of :none, :single, :double, :singleAccounting, :doubleAccounting



163
164
165
# File 'lib/axlsx/util/validators.rb', line 163

def self.validate_cell_u(v)
  RestrictionValidator.validate "cell run style u", VALID_CELL_U_VALUES, v
end

.validate_conditional_formatting_operator(v) ⇒ Object

Requires that the value is valid conditional formatting operator. valid operators must be one of lessThan, lessThanOrEqual, equal, notEqual, greaterThanOrEqual, greaterThan, between, notBetween, containsText, notContains, beginsWith, endsWith

Parameters:

  • v (Any)

    The value validated



230
231
232
# File 'lib/axlsx/util/validators.rb', line 230

def self.validate_conditional_formatting_operator(v)
  RestrictionValidator.validate :conditional_formatting_type, VALID_CONDITIONAL_FORMATTING_OPERATOR_VALUES, v
end

.validate_conditional_formatting_type(v) ⇒ Object

Requires that the value is valid conditional formatting type. valid types must be one of expression, cellIs, colorScale, dataBar, iconSet, top10, uniqueValues, duplicateValues, containsText, notContainsText, beginsWith, endsWith, containsBlanks, notContainsBlanks, containsErrors, notContainsErrors, timePeriod, aboveAverage

Parameters:

  • v (Any)

    The value validated



211
212
213
# File 'lib/axlsx/util/validators.rb', line 211

def self.validate_conditional_formatting_type(v)
  RestrictionValidator.validate :conditional_formatting_type, VALID_CONDITIONAL_FORMATTING_TYPE_VALUES, v
end

.validate_conditional_formatting_value_object_type(v) ⇒ Object

Requires thatt he value is a valid conditional formatting value object type. valid types must be one of num, percent, max, min, formula and percentile



219
220
221
# File 'lib/axlsx/util/validators.rb', line 219

def self.validate_conditional_formatting_value_object_type(v)
  RestrictionValidator.validate :conditional_formatting_value_object_type, VALID_CONDITION_FORMATTING_VALUE_OBJECT_TYPE_VALUES, v
end

.validate_content_type(v) ⇒ Object

Requires that the value is a valid content_type TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT, COMMENT_CT are allowed

Parameters:

  • v (Any)

    The value validated



276
277
278
# File 'lib/axlsx/util/validators.rb', line 276

def self.validate_content_type(v)
  RestrictionValidator.validate :content_type, VALID_CONTENT_TYPE_VALUES, v
end

.validate_data_validation_error_style(v) ⇒ Object

Requires that the value is a valid data_validation_error_style :information, :stop, :warning

Parameters:

  • v (Any)

    The value validated



303
304
305
# File 'lib/axlsx/util/validators.rb', line 303

def self.validate_data_validation_error_style(v)
  RestrictionValidator.validate :validate_data_validation_error_style, VALID_DATA_VALIDATION_ERROR_STYLE_VALUES, v
end

.validate_data_validation_operator(v) ⇒ Object

Requires that the value is valid data validation operator. valid operators must be one of lessThan, lessThanOrEqual, equal, notEqual, greaterThanOrEqual, greaterThan, between, notBetween

Parameters:

  • v (Any)

    The value validated



313
314
315
# File 'lib/axlsx/util/validators.rb', line 313

def self.validate_data_validation_operator(v)
  RestrictionValidator.validate :data_validation_operator, VALID_DATA_VALIDATION_OPERATOR_VALUES, v
end

.validate_data_validation_type(v) ⇒ Object

Requires that the value is valid data validation type. valid types must be one of custom, data, decimal, list, none, textLength, time, whole

Parameters:

  • v (Any)

    The value validated



322
323
324
# File 'lib/axlsx/util/validators.rb', line 322

def self.validate_data_validation_type(v)
  RestrictionValidator.validate :data_validation_type, VALID_DATA_VALIDATION_TYPE_VALUES, v
end

.validate_display_blanks_as(v) ⇒ Object

Requires that the value is a valid "display blanks as" type. valid types must be one of gap, span, zero

Parameters:

  • v (Any)

    The value validated



358
359
360
# File 'lib/axlsx/util/validators.rb', line 358

def self.validate_display_blanks_as(v)
  RestrictionValidator.validate :display_blanks_as, VALID_DISPLAY_BLANK_AS_VALUES, v
end

.validate_family(v) ⇒ Object

validates cell style family which must be between 1 and 5



170
171
172
# File 'lib/axlsx/util/validators.rb', line 170

def self.validate_family(v)
  RestrictionValidator.validate "cell run style family", VALID_FAMILY_VALUES, v
end

.validate_float(v) ⇒ Object

Requires that the value is a Float

Parameters:

  • v (Any)

    The value validated



129
130
131
# File 'lib/axlsx/util/validators.rb', line 129

def self.validate_float(v)
  DataTypeValidator.validate :float, Float, v
end

.validate_gradient_type(v) ⇒ Object

Requires that the value is a gradient_type. valid types are :linear and :path

Parameters:

  • v (Any)

    The value validated



239
240
241
# File 'lib/axlsx/util/validators.rb', line 239

def self.validate_gradient_type(v)
  RestrictionValidator.validate :gradient_type, VALID_GRADIENT_TYPE_VALUES, v
end

.validate_horizontal_alignment(v) ⇒ Object

Requires that the value is a valid horizontal_alignment :general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed are allowed

Parameters:

  • v (Any)

    The value validated



258
259
260
# File 'lib/axlsx/util/validators.rb', line 258

def self.validate_horizontal_alignment(v)
  RestrictionValidator.validate :horizontal_alignment, VALID_HORIZONTAL_ALIGNMENT_VALUES, v
end

.validate_icon_set(v) ⇒ Object

Requires that the value is one of the valid ST_IconSet types Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters



198
199
200
# File 'lib/axlsx/util/validators.rb', line 198

def self.validate_icon_set(v)
  RestrictionValidator.validate :iconSet, VALID_ICON_SET_VALUES, v
end

.validate_int(v) ⇒ Object

Requires that the value is a Integer

Parameters:

  • v (Any)

    The value validated



105
106
107
# File 'lib/axlsx/util/validators.rb', line 105

def self.validate_int(v)
  DataTypeValidator.validate :signed_int, Integer, v
end

.validate_integerish(v) ⇒ Object

Requires that the value can be converted to an integer @para, [Any] v the value to validate

Raises:

  • (ArgumentError)

    raised if the value cannot be converted to an integer



72
73
74
# File 'lib/axlsx/util/validators.rb', line 72

def self.validate_integerish(v)
  raise ArgumentError, format(ERR_INTEGERISH, v.inspect) unless v.respond_to?(:to_i) && v.to_i.is_a?(Integer)
end

.validate_marker_symbol(v) ⇒ Object

Requires that the value is one of :default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x



372
373
374
# File 'lib/axlsx/util/validators.rb', line 372

def self.validate_marker_symbol(v)
  RestrictionValidator.validate :marker_symbol, VALID_MARKER_SYMBOL_VALUES, v
end

.validate_number_with_unit(v) ⇒ Object

Requires that the value is a string containing a positive decimal number followed by one of the following units: "mm", "cm", "in", "pt", "pc", "pi"



135
136
137
# File 'lib/axlsx/util/validators.rb', line 135

def self.validate_number_with_unit(v)
  RegexValidator.validate "number_with_unit", /\A[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)\Z/, v
end

.validate_page_orientation(v) ⇒ Object

Requires that the value is one of :default, :landscape, or :portrait.



156
157
158
# File 'lib/axlsx/util/validators.rb', line 156

def self.validate_page_orientation(v)
  RestrictionValidator.validate "page_orientation", VALID_PAGE_ORIENTATION_VALUES, v
end

.validate_pane_type(v) ⇒ Object

Requires that the value is a valid active pane type. valid types must be one of bottom_left, bottom_right, top_left, top_right

Parameters:

  • v (Any)

    The value validated



340
341
342
# File 'lib/axlsx/util/validators.rb', line 340

def self.validate_pane_type(v)
  RestrictionValidator.validate :active_pane_type, VALID_PANE_TYPE_VALUES, v
end

.validate_pattern_type(v) ⇒ Object

Requires that the value is valid pattern type. valid pattern types must be one of :none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown, :darkUp, :darkGrid, :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, or :gray0625.

Parameters:

  • v (Any)

    The value validated



181
182
183
# File 'lib/axlsx/util/validators.rb', line 181

def self.validate_pattern_type(v)
  RestrictionValidator.validate :pattern_type, VALID_PATTERN_TYPE_VALUES, v
end

.validate_relationship_type(v) ⇒ Object

Requires that the value is a valid relationship_type XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R, IMAGE_R, HYPERLINK_R, SHARED_STRINGS_R are allowed

Parameters:

  • v (Any)

    The value validated



285
286
287
# File 'lib/axlsx/util/validators.rb', line 285

def self.validate_relationship_type(v)
  RestrictionValidator.validate :relationship_type, VALID_RELATIONSHIP_TYPE_VALUES, v
end

.validate_scale_0_10_400(v) ⇒ Object

Requires that the value is an integer ranging from 10 to 400 or 0.



149
150
151
# File 'lib/axlsx/util/validators.rb', line 149

def self.validate_scale_0_10_400(v)
  DataTypeValidator.validate "page_scale", Integer, v, SCALE_0_10_400_VALIDATOR
end

.validate_scale_10_400(v) ⇒ Object

Requires that the value is an integer ranging from 10 to 400.



142
143
144
# File 'lib/axlsx/util/validators.rb', line 142

def self.validate_scale_10_400(v)
  DataTypeValidator.validate "page_scale", Integer, v, SCALE_10_400_VALIDATOR
end

.validate_scatter_style(v) ⇒ Object

Requires that the value is a valid scatterStyle must be one of :none | :line | :lineMarker | :marker | :smooth | :smoothMarker must be one of "none" | "line" | "lineMarker" | "marker" | "smooth" | "smoothMarker"

Parameters:

  • v (Symbol|String)

    the value to validate



249
250
251
# File 'lib/axlsx/util/validators.rb', line 249

def self.validate_scatter_style(v)
  Axlsx::RestrictionValidator.validate "ScatterChart.scatterStyle", VALID_SCATTER_STYLE_VALUES, v.to_sym
end

.validate_sheet_view_type(v) ⇒ Object

Requires that the value is a valid sheet view type. valid types must be one of normal, page_break_preview, page_layout

Parameters:

  • v (Any)

    The value validated



331
332
333
# File 'lib/axlsx/util/validators.rb', line 331

def self.validate_sheet_view_type(v)
  RestrictionValidator.validate :sheet_view_type, VALID_SHEET_VIEW_TYPE_VALUES, v
end

.validate_split_state_type(v) ⇒ Object

Requires that the value is a valid split state type. valid types must be one of frozen, frozen_split, split

Parameters:

  • v (Any)

    The value validated



349
350
351
# File 'lib/axlsx/util/validators.rb', line 349

def self.validate_split_state_type(v)
  RestrictionValidator.validate :split_state_type, VALID_SPLIT_STATE_TYPE_VALUES, v
end

.validate_string(v) ⇒ Object

Requires that the value is a String

Parameters:

  • v (Any)

    The value validated



123
124
125
# File 'lib/axlsx/util/validators.rb', line 123

def self.validate_string(v)
  DataTypeValidator.validate :string, String, v
end

.validate_table_element_type(v) ⇒ Object

Requires that the value is a valid table element type :wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues are allowed

Parameters:

  • v (Any)

    The value validated



294
295
296
# File 'lib/axlsx/util/validators.rb', line 294

def self.validate_table_element_type(v)
  RestrictionValidator.validate :table_element_type, VALID_TABLE_ELEMENT_TYPE_VALUES, v
end

.validate_time_period_type(v) ⇒ Object

Requires that the value is one of the ST_TimePeriod types valid time period types are today, yesterday, tomorrow, last7Days, thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek



190
191
192
# File 'lib/axlsx/util/validators.rb', line 190

def self.validate_time_period_type(v)
  RestrictionValidator.validate :time_period_type, VALID_TIME_PERIOD_TYPE_VALUES, v
end

.validate_unsigned_int(v) ⇒ Boolean

Requires that the value is a Integer and is greater or equal to 0

Parameters:

  • v (Any)

    The value validated

Returns:

  • (Boolean)

    true if the data is valid

Raises:

  • (ArgumentError)

    raised if the value is not a Integer value greater or equal to 0



91
92
93
# File 'lib/axlsx/util/validators.rb', line 91

def self.validate_unsigned_int(v)
  DataTypeValidator.validate(:unsigned_int, Integer, v, UINT_VALIDATOR)
end

.validate_unsigned_numeric(v) ⇒ Boolean

Requires that the value is a Integer or Float and is greater or equal to 0

Parameters:

  • v (Any)

    The value validated

Returns:

  • (Boolean)

    true if the data is valid

Raises:

  • (ArgumentError)

    raised if the value is not a Integer, Float value greater or equal to 0



99
100
101
# File 'lib/axlsx/util/validators.rb', line 99

def self.validate_unsigned_numeric(v)
  DataTypeValidator.validate(:unsigned_numeric, Numeric, v, UINT_VALIDATOR)
end

.validate_vertical_alignment(v) ⇒ Object

Requires that the value is a valid vertical_alignment :top, :center, :bottom, :justify, :distributed are allowed

Parameters:

  • v (Any)

    The value validated



267
268
269
# File 'lib/axlsx/util/validators.rb', line 267

def self.validate_vertical_alignment(v)
  RestrictionValidator.validate :vertical_alignment, VALID_VERTICAL_ALIGNMENT_VALUES, v
end

.validate_view_visibility(v) ⇒ Object

Requires that the value is one of :visible, :hidden, :very_hidden



365
366
367
# File 'lib/axlsx/util/validators.rb', line 365

def self.validate_view_visibility(v)
  RestrictionValidator.validate :visibility, VALID_VIEW_VISIBILITY_VALUES, v
end