From f6cee2dbbfd18fb01e71b7761d641e4fc51b5d08 Mon Sep 17 00:00:00 2001 From: Edgars Beigarts Date: Mon, 24 Apr 2017 12:56:24 +0300 Subject: [PATCH] Make auto formatting/convert configurable and support rationals --- lib/saxlsx/rows_collection_parser.rb | 14 +++++++----- lib/saxlsx/workbook.rb | 8 ++++--- spec/data/SpecNumberFormat.xlsx | Bin 36931 -> 40336 bytes spec/sheet_spec.rb | 31 ++++++++++++++++++++++++++- 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/lib/saxlsx/rows_collection_parser.rb b/lib/saxlsx/rows_collection_parser.rb index 2b66453..697f449 100644 --- a/lib/saxlsx/rows_collection_parser.rb +++ b/lib/saxlsx/rows_collection_parser.rb @@ -14,8 +14,8 @@ class RowsCollectionParser < Ox::Sax 9 => :percentage, # 0% 10 => :percentage, # 0.00% 11 => :bignum, # 0.00E+00 - 12 => :unsupported, # # ?/? - 13 => :unsupported, # # ??/?? + 12 => :rational, # # ?/? + 13 => :rational, # # ??/?? 14 => :date, # mm-dd-yy 15 => :date, # d-mmm-yy 16 => :date, # d-mmm @@ -42,6 +42,7 @@ def self.parse(index, data, workbook, &block) def initialize(workbook, &block) @base_date = workbook.base_date + @auto_format = workbook.auto_format @shared_strings = workbook.shared_strings @number_formats = workbook.number_formats @block = block @@ -109,17 +110,20 @@ def value_of(text) date = @base_date + Rational((Float(text) * SECONDS_IN_DAY).round, SECONDS_IN_DAY) DateTime.new(date.year, date.month, date.day, date.hour, date.minute, date.second) when :fixnum - Integer(text) + Integer(text, 10) when :float, :percentage Float(text) + when :rational + Rational(text) when :bignum Float(text) # raises ArgumentError if text is not a number BigDecimal(text) # doesn't raise ArgumentError else if @current_type == 'n' Float(text) - elsif text =~ /\A-?\d+(\.\d+(?:e[+-]\d+)?)?\Z/i # Auto convert numbers - $1 ? Float(text) : Integer(text) + elsif @auto_format && text =~ /\A-?\d+(\.\d+(?:e[+-]\d+)?)?\Z/i + # Auto convert numbers + $1 ? Float(text) : Integer(text, 10) else CGI.unescapeHTML(text) end diff --git a/lib/saxlsx/workbook.rb b/lib/saxlsx/workbook.rb index c691341..fae970a 100644 --- a/lib/saxlsx/workbook.rb +++ b/lib/saxlsx/workbook.rb @@ -4,18 +4,20 @@ class Workbook DATE_SYSTEM_1904 = DateTime.new(1904, 1, 1) attr_accessor :date1904 + attr_reader :auto_format - def self.open(filename) + def self.open(*args) begin - workbook = self.new(filename) + workbook = self.new(*args) yield workbook ensure workbook.close end end - def initialize(filename) + def initialize(filename, auto_format: true) @file_system = FileSystem.new filename + @auto_format = auto_format end def close diff --git a/spec/data/SpecNumberFormat.xlsx b/spec/data/SpecNumberFormat.xlsx index 30ee36bfee059cbf11fa0485555c05ca9fe50464..4d474644d3764cd371be24356a26ed07d6c4aaa8 100644 GIT binary patch delta 22153 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