class Axlsx::FilterColumn
The filterColumn collection identifies a particular column in the AutoFilter
range and specifies filter information that has been applied to this column. If a column in the AutoFilter
range has no criteria specified, then there is no corresponding filterColumn collection expressed for that column.
Constants
- FILTERS
Allowed filters
Attributes
Zero-based index indicating the AutoFilter
column to which this filter information applies. @return [Integer]
The actual filter being dealt with here This could be any one of the allowed filter types
Public Class Methods
Creates a new FilterColumn
object @note This class yeilds its filter object as that is where the vast majority of processing will be done @param [Integer|Cell] col_id
The zero based index for the column to which this filter will be applied @param [Symbol] filter_type The symbolized class name of the filter to apply to this column. @param [Hash] options options for this object and the filter @option [Boolean] hidden_button
@see hidden_button
@option [Boolean] show_button
@see show_button
# File lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb, line 18 def initialize(col_id, filter_type, options = {}) RestrictionValidator.validate 'FilterColumn.filter', FILTERS, filter_type #Axlsx::validate_unsigned_int(col_id) self.col_id = col_id parse_options options @filter = Axlsx.const_get(Axlsx.camel(filter_type)).new(options) yield @filter if block_given? end
Public Instance Methods
Apply the filters for this column @param [Array] row A row from a worksheet that needs to be filtered.
# File lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb, line 67 def apply(row, offset) row.hidden = @filter.apply(row.cells[offset+col_id.to_i]) end
Sets the col_id
attribute for this filter column. @param [Integer | Cell] column_index The zero based index of the column to which this filter applies.
When you specify a cell, the column index will be read off the cell
@return [Integer]
# File lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb, line 58 def col_id=(column_index) column_index = column_index.col if column_index.is_a?(Cell) Axlsx.validate_unsigned_int column_index @col_id = column_index end
Serialize the object to xml
# File lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb, line 88 def to_xml_string(str='') str << "<filterColumn #{serialized_attributes}>" @filter.to_xml_string(str) str << "</filterColumn>" end