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')