Class: Roo::Excelx::Workbook

Inherits:
Extractor show all
Defined in:
lib/roo/excelx/workbook.rb

Defined Under Namespace

Classes: Label

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Workbook

Returns a new instance of Workbook.



20
21
22
23
24
25
# File 'lib/roo/excelx/workbook.rb', line 20

def initialize(path)
  super
  if !doc_exists?
    raise ArgumentError, 'missing required workbook file'
  end
end

Instance Method Details

#base_dateObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/roo/excelx/workbook.rb', line 42

def base_date
  @base_date ||=
    begin
      # Default to 1900 (minus one day due to excel quirk) but use 1904 if
      # it's set in the Workbook's workbookPr
      # http://msdn.microsoft.com/en-us/library/ff530155(v=office.12).aspx
      result = Date.new(1899,12,30) # default
      doc.css("workbookPr[date1904]").each do |workbookPr|
        if workbookPr["date1904"] =~ /true|1/i
          result = Date.new(1904,01,01)
          break
        end
      end
      result
    end
end

#defined_namesObject

aka labels



32
33
34
35
36
37
38
39
40
# File 'lib/roo/excelx/workbook.rb', line 32

def defined_names
  Hash[doc.xpath("//definedName").map do |defined_name|
    # "Sheet1!$C$5"
    sheet, coordinates = defined_name.text.split('!$', 2)
    col,row = coordinates.split('$')
    name = defined_name['name']
    [name, Label.new(name, sheet,row,col)]
  end]
end

#sheetsObject



27
28
29
# File 'lib/roo/excelx/workbook.rb', line 27

def sheets
  doc.xpath("//sheet")
end