class AxlsxRad::Worksheet

Attributes

oAxlsx[RW]
oAxlsxWorksheet[RW]

Public Class Methods

new(oAxlsx=nil,sName=nil,oWsConfig=nil) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 42
def initialize(oAxlsx=nil,sName=nil,oWsConfig=nil)
  @oAxlsx          = oAxlsx
  unless oWsConfig.is_a?(AxlsxRad::Config)
    raise ArgumentError, 'E_NO_AXLSX_RAD_WORKSHEET_CONFIG'
  end
  @oAxlsxWorksheet = @oAxlsx.workbook.add_worksheet(:name => sName)
  @oWsConfig       = oWsConfig
  self.loadWsConfig( oWsConfig )
  @bHasHead        = false
  @dKeysUnique     = {}
end

Public Instance Methods

addDocument(oJsondoc=nil) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 61
def addDocument(oJsondoc=nil)
  unless @bHasHead
    aStyles = getStylesForHeader
    aValues = oJsondoc.getDescArrayForProperties( @aColumns )
    if aStyles.is_a?(Fixnum) || aStyles.is_a?(Array)
      @oAxlsxWorksheet.add_row aValues, :style => aStyles
    else
      @oAxlsxWorksheet.add_row aValues
    end
    @bHasHead = true
  end
  unless @oWsConfig.xxKeyUnique.nil?
    xxKeyUniqueValue = oJsondoc.getProp( @oWsConfig.xxKeyUnique )
    if @dKeysUnique.has_key?( xxKeyUniqueValue )
      return
    else
      @dKeysUnique[ xxKeyUniqueValue ] = 1
    end
  end
  aValues = oJsondoc.getValArrayForProperties( @aColumns )
  aStyles = getStylesForDocument( oJsondoc )
  if aStyles.is_a?(Fixnum) || aStyles.is_a?(Array)
    @oAxlsxWorksheet.add_row aValues, :style => aStyles
  else
    @oAxlsxWorksheet.add_row aValues
  end
end
loadWsConfig(oWsConfig=nil) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 54
def loadWsConfig(oWsConfig=nil)
  @aColumns       = oWsConfig.aColumns || []
  @dStylesCfg     = oWsConfig.dStylesCfg.is_a?(Hash) ? oWsConfig.dStylesCfg : {}
  @dStylesAxlsx   = getStylesAxlsx( @oAxlsxWorksheet, @dStylesCfg )
  @dStylesColumns = getStylesColumns( @dStylesAxlsx, @aColumns )
end

Private Instance Methods

getStylesArrayForHash(dStyles={}) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 136
def getStylesArrayForHash(dStyles={})
  if dStyles.is_a?(Hash) && dStyles.keys.length == 0
    return nil
  elsif ! dStyles.is_a?(Hash)
    return nil
  end
  yStyleBg = dStyles.has_key?(:bgstyle) ? dStyles[:bgstyle] : nil
  yStyleBg = yStyleBg.to_sym if yStyleBg.is_a?(String)
  aStyles  = []
  if dStyles.has_key?(:properties) && dStyles[:properties].is_a?(Hash) \
  && dStyles[:properties].keys.length > 0
    @aColumns.each do |yColumn|
      if dStyles[:properties].has_key?(yColumn)
        yStyleCell = dStyles[:properties][yColumn]
        yStyleCell = yStyleCell.to_sym if yStyleCell.is_a?(String)
        aStyles.push( @dStylesAxlsx[ yStyleCell ] )
      elsif yStyleBg
        aStyles.push( @dStylesAxlsx[ yStyleBg ] ) 
      else
        aStyles.push( nil )
      end
    end
  elsif yStyleBg
    aStyles = @dStylesColumns[yStyleBg]
  else
    aStyles = nil
  end
  return aStyles
end
getStylesAxlsx(oAxlsxWorksheet=nil,dStylesCfg=nil) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 98
def getStylesAxlsx(oAxlsxWorksheet=nil,dStylesCfg=nil)
  dStylesAxlsx = {}
  dStylesCfg.keys.each do |yStyle|
    dStylesAxlsx[ yStyle ] = oAxlsxWorksheet.styles.add_style( @dStylesCfg[ yStyle ] )
  end
  return dStylesAxlsx
end
getStylesColumns(dStylesAxlsx=nil,aColumns=nil) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 106
def getStylesColumns(dStylesAxlsx=nil,aColumns=nil)
  dStylesColumns = {}
  dStylesAxlsx.keys.each do |yStyle|
    dStylesColumns[yStyle] ||= []
    oStyleAxlsx = dStylesAxlsx[yStyle]
    (0..aColumns.length-1).each do |i|
      dStylesColumns[yStyle].push( oStyleAxlsx )
    end
  end
  return dStylesColumns
end
getStylesForDocument(oJsondoc=nil) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 127
def getStylesForDocument(oJsondoc=nil)
  aStyle = nil
  if @oWsConfig.is_a?(AxlsxRad::Config)
    dStyle = @oWsConfig.getStylesForDocument(oJsondoc)
    aStyle = getStylesArrayForHash( dStyle )
  end
  return aStyle
end
getStylesForHeader() click to toggle source
# File lib/axlsx_rad/workbook.rb, line 118
def getStylesForHeader()
  aStyles = nil
  if @oWsConfig.is_a?(AxlsxRad::Config)
    dStyles = @oWsConfig.getStylesForHeader
    aStyles = getStylesArrayForHash( dStyles )
  end
  return aStyles
end
symbolizeArray(aAny=[]) click to toggle source
# File lib/axlsx_rad/workbook.rb, line 91
def symbolizeArray(aAny=[])
  (0..aAny.length-1).each do |i|
    aAny[i] = aAny[i].to_sym if aAny[i].is_a?(String)
  end
  return aAny
end