]> source.dussan.org Git - poi.git/commitdiff
59106: WorkdayFunction does not read the area with holidays correctly to calculate...
authorDominik Stadler <centic@apache.org>
Sun, 17 Jul 2016 21:18:27 +0000 (21:18 +0000)
committerDominik Stadler <centic@apache.org>
Sun, 17 Jul 2016 21:18:27 +0000 (21:18 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1753125 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/formula/atp/ArgumentsEvaluator.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
test-data/spreadsheet/59106.xlsx [new file with mode: 0644]

index 012333f0b197ae341a09f9f6b9aa48e4da936fc7..fa5d50aee636f67e960f612ba19074f4be4c76a6 100644 (file)
@@ -86,7 +86,9 @@ final class ArgumentsEvaluator {
             AreaEvalBase area = (AreaEvalBase) arg;
             for (int i = area.getFirstRow(); i <= area.getLastRow(); i++) {
                 for (int j = area.getFirstColumn(); j <= area.getLastColumn(); j++) {
-                    valuesList.add(evaluateDateArg(area.getValue(i, j), i, j));
+                    // getValue() is replaced with getAbsoluteValue() because loop variables i, j are
+                    // absolute indexes values, but getValue() works with relative indexes values
+                    valuesList.add(evaluateDateArg(area.getAbsoluteValue(i, j), i, j));
                 }
             }
             double[] values = new double[valuesList.size()];
index ee07c4ef0a3b38208f59e5fdb0305d2b4b57cf39..3280a9121bd23cae14c487528b81f4c6fc86f8c7 100644 (file)
@@ -3078,4 +3078,17 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
         assertEquals(70, sheet.getLastRowNum());
         assertEquals(70, sheet.getRow(sheet.getLastRowNum()).getRowNum());
     }
+
+    @Test
+    public void testWorkdayFunction() throws IOException {
+        XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("59106.xlsx");
+        XSSFSheet sheet = workbook.getSheet("Test");
+        Row row = sheet.getRow(1);
+        Cell cell = row.getCell(0);
+        DataFormatter form = new DataFormatter();
+        FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();
+        String result = form.formatCellValue(cell, evaluator);
+
+        assertEquals("09 Mar 2016", result);
+    }
 }
diff --git a/test-data/spreadsheet/59106.xlsx b/test-data/spreadsheet/59106.xlsx
new file mode 100644 (file)
index 0000000..e47845a
Binary files /dev/null and b/test-data/spreadsheet/59106.xlsx differ