diff --git a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 9504b20ac8..762ef821a7 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -35,6 +35,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -2386,4 +2387,31 @@ public final class TestXSSFSheet extends BaseTestXSheet { sheet.addHyperlink(hyperlink); return wb; } + + @Test + void testSetBlankOnNestedSharedFormulas() throws IOException { + try (XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("testSharedFormulasSetBlank.xlsx")) { + XSSFSheet s1 = wb1.getSheetAt(0); + assertNotNull(s1); + Iterator rowIterator = s1.rowIterator(); + int count = 0; + StringBuilder sb = new StringBuilder(); + while (rowIterator.hasNext()) { + Row row = rowIterator.next(); + Iterator cellIterator = row.cellIterator(); + while (cellIterator.hasNext()) { + Cell cell = cellIterator.next(); + + // the toString is needed to exhibit the broken state + sb.append(cell.toString()).append(","); + count++; + + // breaks the sheet state + cell.setBlank(); + } + } + assertEquals(10, count); + assertEquals("2-1,2-1,1+2,2-1,2-1,3+3,3+3,3+3,2-1,2-1,", sb.toString()); + } + } } diff --git a/test-data/spreadsheet/testSharedFormulasRangeSetBlankBug.xlsx b/test-data/spreadsheet/testSharedFormulasRangeSetBlankBug.xlsx new file mode 100644 index 0000000000..92593b413a Binary files /dev/null and b/test-data/spreadsheet/testSharedFormulasRangeSetBlankBug.xlsx differ