Class: Roo::Excelx::Workbook
- Defined in:
- lib/roo/excelx/workbook.rb
Defined Under Namespace
Classes: Label
Constant Summary
Constants inherited from Extractor
Instance Method Summary collapse
- #base_date ⇒ Object
- #base_timestamp ⇒ Object
-
#defined_names ⇒ Object
aka labels.
-
#initialize(path) ⇒ Workbook
constructor
A new instance of Workbook.
- #sheets ⇒ Object
Constructor Details
#initialize(path) ⇒ Workbook
Returns a new instance of Workbook.
21 22 23 24 |
# File 'lib/roo/excelx/workbook.rb', line 21 def initialize(path) super fail ArgumentError, 'missing required workbook file' unless doc_exists? end |
Instance Method Details
#base_date ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/roo/excelx/workbook.rb', line 46 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 |
#base_timestamp ⇒ Object
42 43 44 |
# File 'lib/roo/excelx/workbook.rb', line 42 def @base_timestamp ||= base_date.to_datetime.to_time.to_i end |
#defined_names ⇒ Object
aka labels
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/roo/excelx/workbook.rb', line 31 def defined_names doc.xpath('//definedName').each_with_object({}) do |defined_name, hash| # "Sheet1!$C$5" sheet, coordinates = defined_name.text.split('!$', 2) next unless coordinates col, row = coordinates.split('$') name = defined_name['name'] hash[name] = Label.new(name, sheet, row, col) end end |
#sheets ⇒ Object
26 27 28 |
# File 'lib/roo/excelx/workbook.rb', line 26 def sheets doc.xpath('//sheet') end |