Browse Source

59106: WorkdayFunction does not read the area with holidays correctly to calculate work days

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1753125 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_15_BETA3
Dominik Stadler 7 years ago
parent
commit
33d5189ff9

+ 3
- 1
src/java/org/apache/poi/ss/formula/atp/ArgumentsEvaluator.java View 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()];

+ 13
- 0
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java View 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);
}
}

BIN
test-data/spreadsheet/59106.xlsx View File


Loading…
Cancel
Save