class Bayonet::Sheet

Attributes

name[R]
workbook[R]

Public Class Methods

new(name, workbook) click to toggle source
# File lib/bayonet/sheet.rb, line 4
def initialize(name, workbook)
  @name = name
  @workbook = workbook
end

Public Instance Methods

path() click to toggle source
# File lib/bayonet/sheet.rb, line 9
def path
  "xl/worksheets/sheet#{id}.xml"
end
set_cell(cell_row, cell_column, value, type = nil) click to toggle source
# File lib/bayonet/sheet.rb, line 25
def set_cell(cell_row, cell_column, value, type = nil)
  cell_node = get_or_create_cell_node(Cell.new(cell_row, cell_column))
  cell_node['t'] = type unless type.nil?
  set_value(cell_node, value)
end
set_typed_cell(cell_row, cell_column, value) click to toggle source
# File lib/bayonet/sheet.rb, line 31
def set_typed_cell(cell_row, cell_column, value)
  if (value.is_a?(Numeric))
    write_number(cell_row, cell_column, value)
  else
    write_string(cell_row, cell_column, value)
  end
end
write_number(cell_row, cell_column, value) click to toggle source
# File lib/bayonet/sheet.rb, line 21
def write_number(cell_row, cell_column, value)
  set_cell(cell_row, cell_column, value, :n)
end
write_string(cell_row, cell_column, value) click to toggle source
# File lib/bayonet/sheet.rb, line 17
def write_string(cell_row, cell_column, value)
  set_cell(cell_row, cell_column, value.to_s, :str)
end
xml() click to toggle source
# File lib/bayonet/sheet.rb, line 13
def xml
  @xml ||= read_and_parse_xml
end

Private Instance Methods

get_or_create_cell_node(cell) click to toggle source
# File lib/bayonet/sheet.rb, line 52
def get_or_create_cell_node(cell)
  Bayonet::NodeCreation.new(cell.label, self).get_or_create_cell_node
end
id() click to toggle source
# File lib/bayonet/sheet.rb, line 43
def id
  @id ||= workbook.xml.at_css("sheets sheet[name=\"#{name}\"]")["r:id"][3..-1]
end
read_and_parse_xml() click to toggle source
# File lib/bayonet/sheet.rb, line 47
def read_and_parse_xml
  entry = workbook.zip_file.find_entry(path)
  Nokogiri::XML.parse(entry.get_input_stream)
end
set_value(cell_node, value) click to toggle source
# File lib/bayonet/sheet.rb, line 56
def set_value(cell_node, value)
  if cell_node.children.nil? || cell_node.children.empty?
    value_node = Nokogiri::XML::Node.new('v', cell_node)
    value_node.content = value
    cell_node.add_child value_node
  else
    cell_node.at_css("v").content = value
  end
end