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