diff options
author | PJ Fanning <fanningpj@apache.org> | 2020-07-13 17:34:09 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2020-07-13 17:34:09 +0000 |
commit | af83fda6b896181da4a28b9ed8b4d8e5ee7242c1 (patch) | |
tree | f51d93e56d9561919f912f63318187bc08b07834 /src/ooxml/testcases | |
parent | abdd50a4d1a9fb4d82ceb9de0a1aa7475dd88fe0 (diff) | |
download | poi-af83fda6b896181da4a28b9ed8b4d8e5ee7242c1.tar.gz poi-af83fda6b896181da4a28b9ed8b4d8e5ee7242c1.zip |
[bug-64595] SXSSF: Missing quoting of pre-evaluated string values in formula cells causes corrupt files. Thanks to Bastian Isensee
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1879834 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases')
-rw-r--r-- | src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java index 174b1c4905..44d06dcd33 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java @@ -238,4 +238,30 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues { } } } + + @Test + public void test64595() throws Exception { + try (Workbook workbook = new SXSSFWorkbook(100)) { + Sheet sheet = workbook.createSheet("RawData"); + Row row = sheet.createRow(0); + Cell cell; + + cell = row.createCell(0); + cell.setCellValue("Ernie & Bert"); + + cell = row.createCell(1); + // Set a precalculated formula value containing a special character. + cell.setCellValue("Ernie & Bert are cool!"); + cell.setCellFormula("A1 & \" are cool!\""); + + // While unfixed reading the workbook would throw a POIXMLException + // since the file was corrupt due to missing quotation. + try (Workbook wbBack = SXSSFITestDataProvider.instance.writeOutAndReadBack(workbook)) { + assertNotNull(wbBack); + cell = wbBack.getSheetAt(0).getRow(0).getCell(1); + assertEquals("Ernie & Bert are cool!", cell.getStringCellValue()); + assertEquals("A1 & \" are cool!\"", cell.getCellFormula()); + } + } + } } |