git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1843553 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_0_1
@@ -302,9 +302,8 @@ public class XSSFBSheetHandler extends XSSFBParser { | |||
} | |||
private double rkNumber(byte[] data, int offset) { | |||
//see 2.5.122 for this abomination | |||
//see 2.5.122 | |||
byte b0 = data[offset]; | |||
String s = Integer.toString(b0, 2); | |||
boolean numDivBy100 = ((b0 & 1) == 1); // else as is | |||
boolean floatingPoint = ((b0 >> 1 & 1) == 0); // else signed integer | |||
@@ -320,7 +319,8 @@ public class XSSFBSheetHandler extends XSSFBParser { | |||
if (floatingPoint) { | |||
d = LittleEndian.getDouble(rkBuffer); | |||
} else { | |||
d = LittleEndian.getInt(rkBuffer); | |||
int rawInt = LittleEndian.getInt(rkBuffer, 4); | |||
d = rawInt >> 2;//divide by 4/shift bits coz 30 bit int, not 32 | |||
} | |||
d = (numDivBy100) ? d/100 : d; | |||
return d; |
@@ -26,6 +26,10 @@ import static org.junit.Assert.assertTrue; | |||
import org.apache.poi.xssf.XSSFTestDataSamples; | |||
import org.junit.Test; | |||
import java.io.BufferedReader; | |||
import java.nio.charset.StandardCharsets; | |||
import java.nio.file.Files; | |||
/** | |||
* Tests for {@link XSSFBEventBasedExcelExtractor} | |||
*/ | |||
@@ -110,4 +114,23 @@ public class TestXSSFBEventBasedExcelExtractor { | |||
"This is an example spreadsheet created with Microsoft Excel 2007 Beta 2."); | |||
} | |||
@Test | |||
public void test62815() throws Exception { | |||
//test file based on http://oss.sheetjs.com/test_files/RkNumber.xlsb | |||
XSSFEventBasedExcelExtractor extractor = getExtractor("62815.xlsb"); | |||
extractor.setIncludeCellComments(true); | |||
String[] rows = extractor.getText().split("[\r\n]+"); | |||
assertEquals(283, rows.length); | |||
BufferedReader reader = Files.newBufferedReader(XSSFTestDataSamples.getSampleFile("62815.xlsb.txt").toPath(), | |||
StandardCharsets.UTF_8); | |||
String line = reader.readLine(); | |||
for (int i = 0; i < rows.length; i++) { | |||
assertEquals(line, rows[i]); | |||
line = reader.readLine(); | |||
while (line != null && line.startsWith("#")) { | |||
line = reader.readLine(); | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,284 @@ | |||
RkNumber | |||
10000000 | |||
1200455 | |||
0.01 | |||
12004.55 | |||
-10000000 | |||
-1200455 | |||
-0.01 | |||
-12004.55 | |||
10268609 | |||
1071427521 | |||
-1071427521 | |||
273214017855 | |||
69942788570880 | |||
17905353874145300 | |||
17835411085574400 | |||
273214017855 | |||
273214017856 | |||
273214017857 | |||
273214017858 | |||
273214017859 | |||
273214017860 | |||
273214017861 | |||
273214017862 | |||
273214017863 | |||
273214017864 | |||
273214017865 | |||
273214017866 | |||
273214017867 | |||
273214017868 | |||
273214017869 | |||
273214017870 | |||
273214017871 | |||
273214017872 | |||
273214017873 | |||
273214017874 | |||
273214017875 | |||
273214017876 | |||
273214017877 | |||
273214017878 | |||
273214017879 | |||
273214017880 | |||
273214017881 | |||
273214017882 | |||
273214017883 | |||
273214017884 | |||
273214017885 | |||
273214017886 | |||
273214017887 | |||
273214017888 | |||
273214017889 | |||
273214017890 | |||
273214017891 | |||
273214017892 | |||
273214017893 | |||
273214017894 | |||
273214017895 | |||
273214017896 | |||
273214017897 | |||
273214017898 | |||
273214017899 | |||
273214017900 | |||
273214017901 | |||
273214017902 | |||
273214017903 | |||
273214017904 | |||
273214017905 | |||
273214017906 | |||
273214017907 | |||
273214017908 | |||
273214017909 | |||
273214017910 | |||
273214017911 | |||
273214017912 | |||
273214017913 | |||
273214017914 | |||
273214017915 | |||
273214017916 | |||
273214017917 | |||
273214017918 | |||
273214017919 | |||
273214017920 | |||
273214017921 | |||
273214017922 | |||
273214017923 | |||
273214017924 | |||
273214017925 | |||
273214017926 | |||
273214017927 | |||
273214017928 | |||
273214017929 | |||
273214017930 | |||
273214017931 | |||
273214017932 | |||
273214017933 | |||
273214017934 | |||
273214017935 | |||
273214017936 | |||
273214017937 | |||
273214017938 | |||
273214017939 | |||
273214017940 | |||
273214017941 | |||
273214017942 | |||
273214017943 | |||
273214017944 | |||
273214017945 | |||
273214017946 | |||
273214017947 | |||
273214017948 | |||
273214017949 | |||
273214017950 | |||
273214017951 | |||
273214017952 | |||
273214017953 | |||
273214017954 | |||
273214017955 | |||
273214017956 | |||
273214017957 | |||
273214017958 | |||
273214017959 | |||
273214017960 | |||
273214017961 | |||
273214017962 | |||
273214017963 | |||
273214017964 | |||
273214017965 | |||
273214017966 | |||
273214017967 | |||
273214017968 | |||
273214017969 | |||
273214017970 | |||
273214017971 | |||
273214017972 | |||
273214017973 | |||
273214017974 | |||
273214017975 | |||
273214017976 | |||
273214017977 | |||
273214017978 | |||
273214017979 | |||
273214017980 | |||
273214017981 | |||
273214017982 | |||
273214017983 | |||
273214017984 | |||
273214017985 | |||
273214017986 | |||
273214017987 | |||
273214017988 | |||
273214017989 | |||
273214017990 | |||
273214017991 | |||
273214017992 | |||
273214017993 | |||
273214017994 | |||
273214017995 | |||
273214017996 | |||
273214017997 | |||
273214017998 | |||
273214017999 | |||
273214018000 | |||
273214018001 | |||
273214018002 | |||
273214018003 | |||
273214018004 | |||
273214018005 | |||
273214018006 | |||
273214018007 | |||
273214018008 | |||
273214018009 | |||
273214018010 | |||
273214018011 | |||
273214018012 | |||
273214018013 | |||
273214018014 | |||
273214018015 | |||
273214018016 | |||
273214018017 | |||
273214018018 | |||
273214018019 | |||
273214018020 | |||
273214018021 | |||
273214018022 | |||
273214018023 | |||
273214018024 | |||
273214018025 | |||
273214018026 | |||
273214018027 | |||
273214018028 | |||
273214018029 | |||
273214018030 | |||
273214018031 | |||
273214018032 | |||
273214018033 | |||
273214018034 | |||
273214018035 | |||
273214018036 | |||
273214018037 | |||
273214018038 | |||
273214018039 | |||
273214018040 | |||
273214018041 | |||
273214018042 | |||
273214018043 | |||
273214018044 | |||
273214018045 | |||
273214018046 | |||
273214018047 | |||
273214018048 | |||
273214018049 | |||
273214018050 | |||
273214018051 | |||
273214018052 | |||
273214018053 | |||
273214018054 | |||
273214018055 | |||
273214018056 | |||
273214018057 | |||
273214018058 | |||
273214018059 | |||
273214018060 | |||
273214018061 | |||
273214018062 | |||
273214018063 | |||
273214018064 | |||
273214018065 | |||
273214018066 | |||
273214018067 | |||
273214018068 | |||
273214018069 | |||
273214018070 | |||
273214018071 | |||
273214018072 | |||
273214018073 | |||
273214018074 | |||
273214018075 | |||
273214018076 | |||
273214018077 | |||
273214018078 | |||
273214018079 | |||
273214018080 | |||
273214018081 | |||
273214018082 | |||
273214018083 | |||
273214018084 | |||
273214018085 | |||
273214018086 | |||
273214018087 | |||
273214018088 | |||
273214018089 | |||
273214018090 | |||
273214018091 | |||
273214018092 | |||
273214018093 | |||
273214018094 | |||
273214018095 | |||
273214018096 | |||
273214018097 | |||
273214018098 | |||
273214018099 | |||
273214018100 | |||
273214018101 | |||
273214018102 | |||
273214018103 | |||
273214018104 | |||
273214018105 | |||
273214018106 | |||
273214018107 | |||
273214018108 | |||
273214018109 | |||
273214018110 | |||
273214018111 | |||
273214018112 | |||
273214018113 | |||
273214018114 | |||
273214018115 | |||
910713.3937166670 | |||
3.03571131238889 | |||
0.000010119037707963000 | |||
3.37E-11 | |||
1.12E-16 | |||
#excel doesn't display ...863, this was manually altered to get the test to work | |||
3.7477917436899863E-22 |