class POI::Cell

Constants

CELL
CELL_TYPE_BLANK
CELL_TYPE_BOOLEAN
CELL_TYPE_ERROR
CELL_TYPE_FORMULA
CELL_TYPE_NUMERIC
CELL_TYPE_STRING
CELL_VALUE
DATE_UTIL

Public Class Methods

new(cell, row) click to toggle source
# File lib/poi/workbook/cell.rb, line 36
def initialize(cell, row)
  @cell = cell
  @row  = row
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/poi/workbook/cell.rb, line 41
def <=> other
  return 1 if other.nil?
  return self.index <=> other.index
end
comment() click to toggle source
# File lib/poi/workbook/cell.rb, line 92
def comment
  poi_cell.cell_comment
end
error_value() click to toggle source

This is NOT an inexpensive operation. The purpose of this method is merely to get more information out of cell when one thinks the value returned is incorrect. It may have more value in development than in production.

# File lib/poi/workbook/cell.rb, line 49
def error_value
  if poi_cell.cell_type == CELL_TYPE_ERROR
    error_value_from(poi_cell.error_cell_value)
  elsif poi_cell.cell_type == CELL_TYPE_FORMULA && 
        poi_cell.cached_formula_result_type == CELL_TYPE_ERROR
        
    cell_value = formula_evaluator.evaluate(poi_cell)
    cell_value && error_value_from(cell_value.error_value)
  else
    nil
  end
end
formula() click to toggle source
# File lib/poi/workbook/cell.rb, line 78
def formula
  poi_cell.cell_formula
end
formula=(new_value) click to toggle source
# File lib/poi/workbook/cell.rb, line 72
def formula= new_value
  poi_cell.cell_formula = new_value
  @row.worksheet.workbook.on_formula_update self
  self
end
formula_value() click to toggle source

returns the formula for this Cell if it has one, otherwise nil

# File lib/poi/workbook/cell.rb, line 63
def formula_value
  poi_cell.cell_type == CELL_TYPE_FORMULA ? poi_cell.cell_formula : nil
end
index() click to toggle source
# File lib/poi/workbook/cell.rb, line 96
def index
  poi_cell.column_index 
end
poi_cell() click to toggle source

returns the underlying org.apache.poi.ss.usermodel.Cell

# File lib/poi/workbook/cell.rb, line 115
def poi_cell
  @cell
end
style!(options) click to toggle source
# File lib/poi/workbook/cell.rb, line 122
def style! options
  self.style = @row.worksheet.workbook.create_style(options)
end
to_s(evaluate_formulas=true) click to toggle source

Get the String representation of this Cell's value.

If this Cell is a formula you can pass a false to this method and get the formula instead of the String representation.

# File lib/poi/workbook/cell.rb, line 104
def to_s(evaluate_formulas=true)
  return '' if poi_cell.nil?

  if poi_cell.cell_type == CELL_TYPE_FORMULA && evaluate_formulas == false
    formula_value
  else
    value.to_s
  end
end
value() click to toggle source
# File lib/poi/workbook/cell.rb, line 67
def value
  return nil if poi_cell.nil?
  cast_value
end
value=(new_value) click to toggle source
# File lib/poi/workbook/cell.rb, line 82
def value= new_value
  set_cell_value new_value
  if new_value.nil?
    @row.worksheet.workbook.on_delete self
  else
    @row.worksheet.workbook.on_update self
  end
  self
end

Private Instance Methods

cast_value(type = cell_type) click to toggle source
# File lib/poi/workbook/cell.rb, line 127
def cast_value(type = cell_type)
  case type
  when CELL_TYPE_BLANK   then nil
  when CELL_TYPE_BOOLEAN then get_boolean_cell_value
  when CELL_TYPE_ERROR   then nil
  when CELL_TYPE_FORMULA then cast_value(poi_cell.cached_formula_result_type)
  when CELL_TYPE_STRING  then get_string_cell_value
  when CELL_TYPE_NUMERIC
    if DATE_UTIL.cell_date_formatted(poi_cell)
      Date.parse(get_date_cell_value.to_s)
    else
      get_numeric_cell_value
    end
  else
    raise "unhandled cell type[#{type}]"
  end
end
error_value_from(cell_value) click to toggle source
# File lib/poi/workbook/cell.rb, line 153
def error_value_from(cell_value)
  org.apache.poi.ss.usermodel.ErrorConstants.text(cell_value)
end
formula_evaluator() click to toggle source
# File lib/poi/workbook/cell.rb, line 149
def formula_evaluator
  workbook.formula_evaluator
end
workbook() click to toggle source
# File lib/poi/workbook/cell.rb, line 145
def workbook
  @row.worksheet.workbook
end