Hi guys,
I m working on parsing Excel xlsb files using Apache POI 3.17 version and
have problem for some numbers.
The problem is reading some numbers with 7 - 9 digits result as 0. This is
not the case for all 7 - 9 digits numbers.
for numbers like
1000000, 10000000, 1880000, 1880400 it works correct, but one example where
I get 0 is *1880450*.
---------------------------------- *GOOD *
-------------------------------------
With debug I found for *1880400* read as byte array
[0, 0, 0, 0, 80, -79, 60, 65]
this is correct I also checked with java code as:
System.out.println(
ByteBuffer.wrap(new byte[] { 65, 60, -79, 80, 0, 0, 0, 0 })
.getDouble());
and it outputs 1880400.0
also when read bytes like
ByteBuffer.allocate(8).putDouble(1880400).array()
[65, 60, -79, 80, 0, 0, 0, 0]
same as with *XSSFBParser*
---------------------------------- *BAD*
-------------------------------------
but *XSSFBParser* when read bytes for *1880450* returns array
[0, 0, 0, 0, 10, -58, 114, 0]
and when I check with
ByteBuffer.allocate(8).putDouble(1880450).array()
[65, 60, -79, -126, 0, 0, 0, 0]
and this is correct byte array, but we dont get these bytes when read from
InputStream
I guess this wrong read bytes comes from
LittleEndianInputStream in XSSFBParser
Just to mention that I saw you've released new Version 4.0.0 and tried it
as well and problem still exists. It reads 0 value for 1880450.
Any idea (advice, help) what could be problem and how I can fix this?
Many thanks in advance!!!
Cheers,
Dejan