62815 -- some numeric values not correctly extracted from xlsb
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1843553 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ead92fbe9a
commit
fcbed10cfc
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
BIN
test-data/spreadsheet/62815.xlsb
Normal file
BIN
test-data/spreadsheet/62815.xlsb
Normal file
Binary file not shown.
284
test-data/spreadsheet/62815.xlsb.txt
Normal file
284
test-data/spreadsheet/62815.xlsb.txt
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user