Class Spreadsheet::Excel::Worksheet
In: lib/spreadsheet/excel/worksheet.rb
Parent: Spreadsheet::Worksheet
Column Format Row Font Enumerable Worksheet\n[lib/spreadsheet/excel.rb\nlib/spreadsheet/worksheet.rb] Link Workbook Workbook\n[lib/spreadsheet/excel.rb\nlib/spreadsheet/excel/workbook.rb] SstEntry String Row Array Worksheet ExcelCompatibleWorkbook Format Worksheet Workbook DelegateClassSpreadsheet::Format Writer Compatibility Formula Reader\n[lib/parseexcel/parseexcel.rb\nlib/spreadsheet/excel/reader.rb\nlib/spreadsheet/excel/reader/biff5.rb\nlib/spreadsheet/excel/reader/biff8.rb] Error lib/spreadsheet/excel.rb lib/spreadsheet/link.rb lib/spreadsheet/formula.rb lib/spreadsheet/workbook.rb lib/spreadsheet/font.rb lib/spreadsheet/column.rb lib/spreadsheet/format.rb lib/spreadsheet/writer.rb lib/spreadsheet/row.rb Encodings lib/spreadsheet/excel.rb lib/spreadsheet/excel/row.rb lib/spreadsheet/excel/reader/biff5.rb lib/spreadsheet/excel/worksheet.rb lib/spreadsheet/excel/sst_entry.rb lib/spreadsheet/excel/error.rb lib/spreadsheet/excel/workbook.rb lib/spreadsheet/excel/writer/format.rb lib/spreadsheet/excel/writer/workbook.rb lib/spreadsheet/excel/writer/worksheet.rb Biff8 Writer Biff5 Biff8 Internals Offset Excel Datatypes ParseExcel Compatibility Spreadsheet dot/m_34_0.png

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.

Methods

Included Modules

Spreadsheet::Excel::Offset

Attributes

links  [R] 
offset  [R] 
ole  [R] 

Public Class methods

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 15
15:   def initialize opts = {}
16:     @row_addresses = nil
17:     super
18:     @offset, @ole, @reader = opts[:offset], opts[:ole], opts[:reader]
19:     @dimensions = nil
20:     @links = {}
21:   end

Public Instance methods

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 22
22:   def add_link row, column, link
23:     @links.store [row, column], link
24:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 25
25:   def column idx
26:     ensure_rows_read
27:     super
28:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 29
29:   def date_base
30:     @workbook.date_base
31:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 32
32:   def each *args
33:     ensure_rows_read
34:     super
35:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 36
36:   def ensure_rows_read
37:     return if @row_addresses
38:     @dimensions = nil
39:     @row_addresses = []
40:     @reader.read_worksheet self, @offset if @reader
41:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 42
42:   def row idx
43:     @rows[idx] or begin
44:       ensure_rows_read
45:       if addr = @row_addresses[idx]
46:         row = @reader.read_row self, addr
47:         [:default_format, :height, :outline_level, :hidden, ].each do |key|
48:           row.send "unupdated_#{key}=", addr[key]
49:         end
50:         row.worksheet = self
51:         row
52:       else
53:         Row.new self, idx
54:       end
55:     end
56:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 57
57:   def row_updated idx, row
58:     res = super
59:     @workbook.changes.store self, true
60:     @workbook.changes.store :boundsheets, true
61:     @changes.store idx, true
62:     @changes.store :dimensions, true
63:     res
64:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 65
65:   def set_row_address idx, opts
66:     @offsets.store idx, opts[:row_block]
67:     @row_addresses[idx] = opts
68:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 69
69:   def shared_string idx
70:     @workbook.shared_string idx
71:   end

Private Instance methods

premature optimization?

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 74
74:   def have_set_dimensions value, pos, len
75:     if @row_addresses.size < row_count
76:       @row_addresses.concat Array.new(row_count - @row_addresses.size)
77:     end
78:   end

[Source]

    # File lib/spreadsheet/excel/worksheet.rb, line 79
79:   def recalculate_dimensions
80:     ensure_rows_read
81:     shorten @rows
82:     @dimensions = []
83:     @dimensions[0] = [ index_of_first(@rows),
84:                        index_of_first(@row_addresses) ].compact.min || 0
85:     @dimensions[1] = [ @rows.size, @row_addresses.size ].compact.max || 0
86:     compact = @rows.compact
87:     first_rows = compact.collect do |row| row.first_used end.compact.min
88:     first_addrs = @row_addresses.compact.collect do |addr|
89:       addr[:first_used] end.min
90:     @dimensions[2] = [ first_rows, first_addrs ].compact.min || 0
91:     last_rows = compact.collect do |row| row.first_unused end.max
92:     last_addrs = @row_addresses.compact.collect do |addr|
93:       addr[:first_unused] end.max
94:     @dimensions[3] = [last_rows, last_addrs].compact.max || 0
95:     @dimensions
96:   end

[Validate]