lib/spreadsheet/excel/writer/worksheet.rb in spreadsheet-0.8.1 vs lib/spreadsheet/excel/writer/worksheet.rb in spreadsheet-0.8.2

- old
+ new

@@ -1,9 +1,10 @@ require 'stringio' require 'spreadsheet/excel/writer/biff8' require 'spreadsheet/excel/internals' require 'spreadsheet/excel/internals/biff8' +require 'bigdecimal' module Spreadsheet module Excel module Writer ## @@ -61,11 +62,11 @@ # 1 0x00000002 0 = Floating-point value 1 = Signed integer value # 31-2 0xFFFFFFFC Encoded value cent = 0 int = 2 higher = value * 100 - if higher.is_a?(Float) && higher < 0xfffffffc + if (higher.is_a?(BigDecimal) or higher.is_a?(Float)) && higher < 0xfffffffc cent = 1 if higher == higher.to_i value = higher.to_i else value = higher @@ -87,10 +88,10 @@ unicode_string @worksheet.name end def need_number? cell if cell.is_a?(Numeric) && cell.abs > 0x1fffffff true - elsif cell.is_a?(Float) and not cell.nan? + elsif (cell.is_a?(BigDecimal) or cell.is_a?(Float)) and not cell.nan? higher = cell * 100 if higher == higher.to_i need_number? higher.to_i else test1, test2 = [cell * 100].pack(EIGHT_BYTE_DOUBLE).unpack('V2')