class Spreadsheet::Excel::Worksheet
Excel-specific Worksheet
methods. These are mostly pertinent to the Excel
reader, and to recording changes to the Worksheet
. You should have no reason to use any of these.
Attributes
guts[R]
links[R]
notes[R]
offset[R]
ole[R]
Public Class Methods
new(opts = {})
click to toggle source
Calls superclass method
Spreadsheet::Excel::Offset::new
# File lib/spreadsheet/excel/worksheet.rb, line 15 def initialize opts = {} @row_addresses = nil super @offset, @ole, @reader = opts[:offset], opts[:ole], opts[:reader] @dimensions = nil @links = {} @guts = {} @notes = {} end
Public Instance Methods
add_link(row, column, link)
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 24 def add_link row, column, link @links.store [row, column], link end
add_note(row, column, note)
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 27 def add_note row, column, note @notes.store [row, column], note end
column(idx)
click to toggle source
Calls superclass method
Spreadsheet::Worksheet#column
# File lib/spreadsheet/excel/worksheet.rb, line 30 def column idx ensure_rows_read super end
date_base()
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 34 def date_base @workbook.date_base end
each(*args)
click to toggle source
Calls superclass method
Spreadsheet::Worksheet#each
# File lib/spreadsheet/excel/worksheet.rb, line 45 def each *args ensure_rows_read super end
ensure_rows_read()
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 49 def ensure_rows_read return if @row_addresses @dimensions = nil @row_addresses = [] @reader.read_worksheet self, @offset if @reader end
margins()
click to toggle source
Calls superclass method
# File lib/spreadsheet/excel/worksheet.rb, line 37 def margins ensure_rows_read super end
pagesetup()
click to toggle source
Calls superclass method
# File lib/spreadsheet/excel/worksheet.rb, line 41 def pagesetup ensure_rows_read super end
row(idx)
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 55 def row idx @rows[idx] or begin ensure_rows_read if addr = @row_addresses[idx] row = @reader.read_row self, addr [:default_format, :height, :outline_level, :hidden, ].each do |key| row.send "unupdated_#{key}=", addr[key] end row.worksheet = self row else Row.new self, idx end end end
row_updated(idx, row)
click to toggle source
Calls superclass method
Spreadsheet::Worksheet#row_updated
# File lib/spreadsheet/excel/worksheet.rb, line 73 def row_updated idx, row res = super @workbook.changes.store self, true @workbook.changes.store :boundsheets, true @changes.store idx, true @changes.store :dimensions, true res end
rows()
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 70 def rows self.to_a end
set_row_address(idx, opts)
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 81 def set_row_address idx, opts @offsets.store idx, opts[:row_block] @row_addresses[idx] = opts end
Private Instance Methods
have_set_dimensions(value, pos, len)
click to toggle source
premature optimization?
# File lib/spreadsheet/excel/worksheet.rb, line 90 def have_set_dimensions value, pos, len if @row_addresses.size < row_count @row_addresses.concat Array.new(row_count - @row_addresses.size) end end
recalculate_dimensions()
click to toggle source
# File lib/spreadsheet/excel/worksheet.rb, line 95 def recalculate_dimensions ensure_rows_read shorten @rows @dimensions = [] @dimensions[0] = [ index_of_first(@rows), index_of_first(@row_addresses) ].compact.min || 0 @dimensions[1] = [ @rows.size, @row_addresses.size ].compact.max || 0 compact = @rows.compact first_rows = compact.collect do |row| row.first_used end.compact.min first_addrs = @row_addresses.compact.collect do |addr| addr[:first_used] end.compact.min @dimensions[2] = [ first_rows, first_addrs ].compact.min || 0 last_rows = compact.collect do |row| row.first_unused end.max last_addrs = @row_addresses.compact.collect do |addr| addr[:first_unused] end.compact.max @dimensions[3] = [last_rows, last_addrs].compact.max || 0 @dimensions end