From 6fc404c4a6956652c875f26afae439d85e5adf8e Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Sat, 21 Apr 2012 12:48:42 +0000 Subject: [PATCH] Bugzilla 53101: fixed evaluation of SUM over cell range > 255 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1328647 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/ss/formula/LazyAreaEval.java | 4 ++-- .../poi/xssf/usermodel/TestXSSFBugs.java | 22 ++++++++++++++++++ test-data/spreadsheet/53101.xlsx | Bin 0 -> 9448 bytes 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 test-data/spreadsheet/53101.xlsx diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index b0a09088e..d2a6d64e3 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 53101 - fixed evaluation of SUM over cell range > 255 49529 - avoid exception when cloning sheets with no drawing records and initialized drawing patriarch diff --git a/src/java/org/apache/poi/ss/formula/LazyAreaEval.java b/src/java/org/apache/poi/ss/formula/LazyAreaEval.java index 76f926879..2a9f94391 100644 --- a/src/java/org/apache/poi/ss/formula/LazyAreaEval.java +++ b/src/java/org/apache/poi/ss/formula/LazyAreaEval.java @@ -45,8 +45,8 @@ final class LazyAreaEval extends AreaEvalBase { public ValueEval getRelativeValue(int relativeRowIndex, int relativeColumnIndex) { - int rowIx = (relativeRowIndex + getFirstRow() ) & 0xFFFF; - int colIx = (relativeColumnIndex + getFirstColumn() ) & 0x00FF; + int rowIx = (relativeRowIndex + getFirstRow() ) ; + int colIx = (relativeColumnIndex + getFirstColumn() ) ; return _evaluator.getEvalForCell(rowIx, colIx); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index df88b4a90..4c55cca90 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1317,4 +1317,26 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { } } + /** + * Bug 53101: + */ + public void test5301(){ + Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("53101.xlsx"); + FormulaEvaluator evaluator = + workbook.getCreationHelper().createFormulaEvaluator(); + // A1: SUM(B1: IZ1) + double a1Value = + evaluator.evaluate(workbook.getSheetAt(0).getRow(0).getCell(0)).getNumberValue(); + + // Assert + assertEquals(259.0, a1Value, 0.0); + + // KY: SUM(B1: IZ1) + double ky1Value = + evaluator.evaluate(workbook.getSheetAt(0).getRow(0).getCell(310)).getNumberValue(); + + // Assert + assertEquals(259.0, a1Value, 0.0); + } + } diff --git a/test-data/spreadsheet/53101.xlsx b/test-data/spreadsheet/53101.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e52f424338ab157de1247d8df951c7bce0bebf02 GIT binary patch literal 9448 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 literal 0 HcmV?d00001