Sha256: 170109af8ce7d5641034f29f0acc911a2cf9476593b33a6306ee6f64738928d2

Contents?: true

Size: 931 Bytes

Versions: 7

Compression:

Stored size: 931 Bytes

Contents

require 'nokogiri'
require 'tmpdir'

module RubyXL

  class Parser
    def self.parse(file_path, opts = {})
      self.new(opts).parse(file_path)
    end

    # +:data_only+ allows only the sheet data to be parsed, so as to speed up parsing.
    # However, using this option will result in date-formatted cells being interpreted as numbers.
    def initialize(opts = {})
      @opts = opts
    end

    def parse(xl_file_path)
      root = RubyXL::WorkbookRoot.parse_file(xl_file_path, @opts)

      wb = root.workbook

      wb.sheets.each_with_index { |sheet, i|
        sheet_obj = wb.relationship_container.related_files[sheet.r_id]

        wb.worksheets[i] = sheet_obj # Must be done first so the sheet becomes aware of its number
        sheet_obj.workbook = wb

        sheet_obj.sheet_name = sheet.name
        sheet_obj.sheet_id = sheet.sheet_id
        sheet_obj.state = sheet.state
      }

      wb
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rubyXL-3.2.7 lib/rubyXL/parser.rb
rubyXL-3.2.6 lib/rubyXL/parser.rb
rubyXL-3.2.5 lib/rubyXL/parser.rb
rubyXL-3.2.4 lib/rubyXL/parser.rb
rubyXL-3.2.3 lib/rubyXL/parser.rb
rubyXL-3.2.2 lib/rubyXL/parser.rb
rubyXL-3.2.1 lib/rubyXL/parser.rb