Don't fail on row-nums larger than Integer.MAX_VALUE, we had one sample

file which triggered this

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1851211 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2019-01-13 17:14:31 +00:00
parent db14c353fc
commit 8c18d93a66
2 changed files with 7 additions and 4 deletions

View File

@ -350,8 +350,11 @@ public class CellReference {
* @throws NumberFormatException if rowStr is not parseable as an integer
*/
public static boolean isRowWithinRange(String rowStr, SpreadsheetVersion ssVersion) {
final int rowNum = Integer.parseInt(rowStr) - 1;
return isRowWithinRange(rowNum, ssVersion);
final long rowNum = Long.parseLong(rowStr) - 1;
if(rowNum > Integer.MAX_VALUE) {
return false;
}
return isRowWithinRange((int)rowNum, ssVersion);
}
/**

View File

@ -399,10 +399,10 @@ public final class TestCellReference {
assertFalse("1 beyond last row", CellReference.isRowWithinRange(1048576, ss));
}
@Test(expected=NumberFormatException.class)
@Test
public void isRowWithinRangeNonInteger_BigNumber() {
String rowNum = "4000000000";
CellReference.isRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007);
assertFalse(CellReference.isRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007));
}
@Test(expected=NumberFormatException.class)