From 147c034cfd44ae5a88a523ee909e5264908a2931 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 11 Jan 2025 09:23:39 +0000 Subject: [PATCH] Bug 58571: Add test which shows a workaround git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1923053 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/formula/eval/TestFormulaBugs.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/poi/src/test/java/org/apache/poi/ss/formula/eval/TestFormulaBugs.java b/poi/src/test/java/org/apache/poi/ss/formula/eval/TestFormulaBugs.java index 1e03fa8621..6692fc81b4 100644 --- a/poi/src/test/java/org/apache/poi/ss/formula/eval/TestFormulaBugs.java +++ b/poi/src/test/java/org/apache/poi/ss/formula/eval/TestFormulaBugs.java @@ -243,4 +243,30 @@ final class TestFormulaBugs { CellValue value = evaluateFormulaInCell(wb, cell, formula); assertEquals(expectedValue, value.getStringValue()); } + + @Test + public void testFormula_58571() throws IOException { + try (Workbook wb = new HSSFWorkbook()) { + FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); + + Sheet sheet = wb.createSheet("test"); + Row row = sheet.createRow(0); + Cell cell = row.createCell(0); + // it seems the two double-quotes are replaced with one double-quote when parsing the function + // this does not work: cell.setCellFormula("TEXT(B1, \"h\"\"h\"\" m\"\"m\"\"\")"); + cell.setCellFormula("TEXT(B1, \"h\"\"\"\"h\"\"\"\" m\"\"\"\"m\"\"\"\"\")"); + + Cell cellValue = row.createCell(1); + cellValue.setCellValue(0.0104166666666666); + + CellValue value = eval.evaluate(cell); + assertEquals(CellType.STRING, value.getCellType()); + assertEquals("0h 15m", value.getStringValue()); + + cellValue.setCellValue(1.123); + value = eval.evaluate(cell); + assertEquals(CellType.STRING, value.getCellType()); + assertEquals("0h 15m", value.getStringValue()); + } + } }