You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2021/05/14 00:37:53 UTC

svn commit: r1889871 [6/17] - in /poi: site/src/documentation/content/xdocs/ site/src/documentation/content/xdocs/components/ trunk/ trunk/maven/ trunk/osgi/ trunk/osgi/src/test/java/org/apache/poi/osgi/ trunk/poi-examples/src/main/java/org/apache/poi/...

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java Fri May 14 00:37:50 2021
@@ -19,20 +19,20 @@ package org.apache.poi.xssf.usermodel;
 
 import static java.time.Duration.between;
 import static java.time.Instant.now;
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
 import static org.apache.logging.log4j.util.Unbox.box;
 import static org.apache.poi.extractor.ExtractorFactory.OOXML_PACKAGE;
 import static org.apache.poi.openxml4j.opc.TestContentType.isOldXercesActive;
+import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
+import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.util.Arrays;
@@ -47,6 +47,7 @@ import java.util.TreeMap;
 
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipFile;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.poi.POIDataSamples;
@@ -99,7 +100,7 @@ import org.apache.poi.ss.util.CellRangeA
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.ss.util.CellUtil;
 import org.apache.poi.util.LocaleUtil;
-import org.apache.poi.util.NullOutputStream;
+import org.apache.commons.io.output.NullOutputStream;
 import org.apache.poi.util.TempFile;
 import org.apache.poi.util.XMLHelper;
 import org.apache.poi.xssf.SXSSFITestDataProvider;
@@ -115,6 +116,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.EnumSource;
+import org.junit.jupiter.params.provider.ValueSource;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCalcCell;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
@@ -140,7 +142,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug45430() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45430.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("45430.xlsx")) {
             assertFalse(wb.isMacroEnabled());
             assertEquals(3, wb.getNumberOfNames());
 
@@ -160,7 +162,7 @@ public final class TestXSSFBugs extends
             assertEquals("SheetC", wb.getName("SheetCA1").getSheetName());
 
             // Save and re-load, still there
-            try (XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb)) {
+            try (XSSFWorkbook nwb = writeOutAndReadBack(wb)) {
                 assertEquals(3, nwb.getNumberOfNames());
                 assertEquals("SheetA!$A$1", nwb.getName("SheetAA1").getRefersToFormula());
             }
@@ -172,79 +174,74 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug45431() throws IOException, InvalidFormatException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("45431.xlsm");
-        OPCPackage pkg1 = wb1.getPackage();
-        assertTrue(wb1.isMacroEnabled());
+        try (XSSFWorkbook wb1 = openSampleWorkbook("45431.xlsm");
+             OPCPackage pkg1 = wb1.getPackage()) {
+            assertTrue(wb1.isMacroEnabled());
 
-        // Check the various macro related bits can be found
-        PackagePart vba = pkg1.getPart(
+            // Check the various macro related bits can be found
+            PackagePart vba = pkg1.getPart(
                 PackagingURIHelper.createPartName("/xl/vbaProject.bin")
-        );
-        assertNotNull(vba);
-        // And the drawing bit
-        PackagePart drw = pkg1.getPart(
+            );
+            assertNotNull(vba);
+            // And the drawing bit
+            PackagePart drw = pkg1.getPart(
                 PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
-        );
-        assertNotNull(drw);
+            );
+            assertNotNull(drw);
 
 
-        // Save and re-open, both still there
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        pkg1.close();
-        wb1.close();
-
-        OPCPackage pkg2 = wb2.getPackage();
-        assertTrue(wb2.isMacroEnabled());
-
-        vba = pkg2.getPart(
-                PackagingURIHelper.createPartName("/xl/vbaProject.bin")
-        );
-        assertNotNull(vba);
-        drw = pkg2.getPart(
-                PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
-        );
-        assertNotNull(drw);
-
-        // And again, just to be sure
-        XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2);
-        pkg2.close();
-        wb2.close();
-        OPCPackage pkg3 = wb3.getPackage();
-        assertTrue(wb3.isMacroEnabled());
-
-        vba = pkg3.getPart(
-                PackagingURIHelper.createPartName("/xl/vbaProject.bin")
-        );
-        assertNotNull(vba);
-        drw = pkg3.getPart(
-                PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
-        );
-        assertNotNull(drw);
-
-        pkg3.close();
-        wb3.close();
+            // Save and re-open, both still there
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1);
+                 OPCPackage pkg2 = wb2.getPackage()) {
+                assertTrue(wb2.isMacroEnabled());
+
+                vba = pkg2.getPart(
+                    PackagingURIHelper.createPartName("/xl/vbaProject.bin")
+                );
+                assertNotNull(vba);
+                drw = pkg2.getPart(
+                    PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
+                );
+                assertNotNull(drw);
+
+                // And again, just to be sure
+                try (XSSFWorkbook wb3 = writeOutAndReadBack(wb2);
+                     OPCPackage pkg3 = wb3.getPackage()) {
+                    assertTrue(wb3.isMacroEnabled());
+
+                    vba = pkg3.getPart(
+                        PackagingURIHelper.createPartName("/xl/vbaProject.bin")
+                    );
+                    assertNotNull(vba);
+                    drw = pkg3.getPart(
+                        PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
+                    );
+                    assertNotNull(drw);
+                }
+            }
+        }
     }
 
     @Test
     void bug47504() throws IOException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("47504.xlsx");
-        assertEquals(1, wb1.getNumberOfSheets());
-        XSSFSheet sh = wb1.getSheetAt(0);
-        XSSFDrawing drawing = sh.createDrawingPatriarch();
-        List<RelationPart> rels = drawing.getRelationParts();
-        assertEquals(1, rels.size());
-        assertEquals("Sheet1!A1", rels.get(0).getRelationship().getTargetURI().getFragment());
-
-        // And again, just to be sure
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-        assertEquals(1, wb2.getNumberOfSheets());
-        sh = wb2.getSheetAt(0);
-        drawing = sh.createDrawingPatriarch();
-        rels = drawing.getRelationParts();
-        assertEquals(1, rels.size());
-        assertEquals("Sheet1!A1", rels.get(0).getRelationship().getTargetURI().getFragment());
-        wb2.close();
+        try (XSSFWorkbook wb1 = openSampleWorkbook("47504.xlsx")) {
+            assertEquals(1, wb1.getNumberOfSheets());
+            XSSFSheet sh = wb1.getSheetAt(0);
+            XSSFDrawing drawing = sh.createDrawingPatriarch();
+            List<RelationPart> rels = drawing.getRelationParts();
+            assertEquals(1, rels.size());
+            assertEquals("Sheet1!A1", rels.get(0).getRelationship().getTargetURI().getFragment());
+
+            // And again, just to be sure
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                assertEquals(1, wb2.getNumberOfSheets());
+                sh = wb2.getSheetAt(0);
+                drawing = sh.createDrawingPatriarch();
+                rels = drawing.getRelationParts();
+                assertEquals(1, rels.size());
+                assertEquals("Sheet1!A1", rels.get(0).getRelationship().getTargetURI().getFragment());
+            }
+        }
     }
 
     /**
@@ -255,7 +252,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49020() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("BrNotClosed.xlsx")) {
             assertNotNull(wb);
         }
     }
@@ -265,7 +262,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49325() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49325.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("49325.xlsx")) {
             CTWorksheet sh = wb.getSheetAt(0).getCTWorksheet();
             assertNotNull(sh.getPhoneticPr());
         }
@@ -277,7 +274,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug48923() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("48923.xlsx")) {
             assertEquals(4, wb.getNumberOfNames());
 
             Name b1 = wb.getName("NameB1");
@@ -321,7 +318,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug48539() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48539.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("48539.xlsx")) {
             assertEquals(3, wb.getNumberOfSheets());
             assertEquals(0, wb.getNumberOfNames());
 
@@ -358,7 +355,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug48779() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48779.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("48779.xlsx")) {
             XSSFCell cell = wb.getSheetAt(0).getRow(0).getCell(0);
             XSSFCellStyle cs = cell.getCellStyle();
 
@@ -396,7 +393,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug47490() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("GeneralFormatTests.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("GeneralFormatTests.xlsx")) {
             Sheet s = wb.getSheetAt(1);
             Row r;
             DataFormatter df = new DataFormatter();
@@ -434,7 +431,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49609() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49609.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("49609.xlsx")) {
             assertEquals("FAM", wb.getSheetName(0));
             assertEquals("Cycle", wb.getSheetAt(0).getRow(0).getCell(1).getStringCellValue());
         }
@@ -443,7 +440,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug49783() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("49783.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("49783.xlsx")) {
             Sheet sheet = wb.getSheetAt(0);
             FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
             Cell cell;
@@ -476,78 +473,77 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49941() throws IOException {
-        XSSFWorkbook wb1 = new XSSFWorkbook();
-        XSSFSheet s = wb1.createSheet();
-        XSSFRow r = s.createRow(0);
-        XSSFCell c = r.createCell(0);
+        try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
+            XSSFSheet s = wb1.createSheet();
+            XSSFRow r = s.createRow(0);
+            XSSFCell c = r.createCell(0);
 
-        // First without fonts
-        c.setCellValue(
+            // First without fonts
+            c.setCellValue(
                 new XSSFRichTextString(" with spaces ")
-        );
-        assertEquals(" with spaces ", c.getRichStringCellValue().toString());
-        assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray());
-        assertTrue(c.getRichStringCellValue().getCTRst().isSetT());
-        // Should have the preserve set
-        assertEquals(
+            );
+            assertEquals(" with spaces ", c.getRichStringCellValue().toString());
+            assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray());
+            assertTrue(c.getRichStringCellValue().getCTRst().isSetT());
+            // Should have the preserve set
+            assertEquals(
                 1,
                 c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength()
-        );
-        assertEquals(
+            );
+            assertEquals(
                 "preserve",
                 c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().item(0).getNodeValue()
-        );
-
-        // Save and check
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-        s = wb2.getSheetAt(0);
-        r = s.getRow(0);
-        c = r.getCell(0);
-        assertEquals(" with spaces ", c.getRichStringCellValue().toString());
-        assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray());
-        assertTrue(c.getRichStringCellValue().getCTRst().isSetT());
-
-        // Change the string
-        c.setCellValue(
-                new XSSFRichTextString("hello world")
-        );
-        assertEquals("hello world", c.getRichStringCellValue().toString());
-        // Won't have preserve
-        assertEquals(
-                0,
-                c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength()
-        );
+            );
 
-        // Apply a font
-        XSSFFont f = wb2.createFont();
-        f.setBold(true);
-        c.getRichStringCellValue().applyFont(0, 5, f);
-        assertEquals("hello world", c.getRichStringCellValue().toString());
-        // Does need preserving on the 2nd part
-        assertEquals(2, c.getRichStringCellValue().getCTRst().sizeOfRArray());
-        assertEquals(
-                0,
-                c.getRichStringCellValue().getCTRst().getRArray(0).xgetT().getDomNode().getAttributes().getLength()
-        );
-        assertEquals(
-                1,
-                c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().getLength()
-        );
-        assertEquals(
-                "preserve",
-                c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().item(0).getNodeValue()
-        );
-
-        // Save and check
-        XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2);
-        wb2.close();
-
-        s = wb3.getSheetAt(0);
-        r = s.getRow(0);
-        c = r.getCell(0);
-        assertEquals("hello world", c.getRichStringCellValue().toString());
-        wb3.close();
+            // Save and check
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                s = wb2.getSheetAt(0);
+                r = s.getRow(0);
+                c = r.getCell(0);
+                assertEquals(" with spaces ", c.getRichStringCellValue().toString());
+                assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray());
+                assertTrue(c.getRichStringCellValue().getCTRst().isSetT());
+
+                // Change the string
+                c.setCellValue(
+                    new XSSFRichTextString("hello world")
+                );
+                assertEquals("hello world", c.getRichStringCellValue().toString());
+                // Won't have preserve
+                assertEquals(
+                    0,
+                    c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength()
+                );
+
+                // Apply a font
+                XSSFFont f = wb2.createFont();
+                f.setBold(true);
+                c.getRichStringCellValue().applyFont(0, 5, f);
+                assertEquals("hello world", c.getRichStringCellValue().toString());
+                // Does need preserving on the 2nd part
+                assertEquals(2, c.getRichStringCellValue().getCTRst().sizeOfRArray());
+                assertEquals(
+                    0,
+                    c.getRichStringCellValue().getCTRst().getRArray(0).xgetT().getDomNode().getAttributes().getLength()
+                );
+                assertEquals(
+                    1,
+                    c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().getLength()
+                );
+                assertEquals(
+                    "preserve",
+                    c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().item(0).getNodeValue()
+                );
+
+                // Save and check
+                try (XSSFWorkbook wb3 = writeOutAndReadBack(wb2)) {
+                    s = wb3.getSheetAt(0);
+                    r = s.getRow(0);
+                    c = r.getCell(0);
+                    assertEquals("hello world", c.getRichStringCellValue().toString());
+                }
+            }
+        }
     }
 
     /**
@@ -555,25 +551,15 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49940() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("styles.xlsx")) {
             assertEquals(3, wb.getNumberOfSheets());
             assertEquals(10, wb.getStylesSource().getNumCellStyles());
 
-            ByteArrayOutputStream b1 = new ByteArrayOutputStream();
-            ByteArrayOutputStream b2 = new ByteArrayOutputStream();
-            ByteArrayOutputStream b3 = new ByteArrayOutputStream();
-            wb.write(b1);
-            wb.write(b2);
-            wb.write(b3);
-
-            for (byte[] data : new byte[][]{
-                    b1.toByteArray(), b2.toByteArray(), b3.toByteArray()
-            }) {
-                ByteArrayInputStream bais = new ByteArrayInputStream(data);
-                XSSFWorkbook wb2 = new XSSFWorkbook(bais);
-                assertEquals(3, wb2.getNumberOfSheets());
-                assertEquals(10, wb2.getStylesSource().getNumCellStyles());
-                wb2.close();
+            for (int i=0; i<3; i++) {
+                try (XSSFWorkbook wb2 = writeOutAndReadBack(wb)) {
+                    assertEquals(3, wb2.getNumberOfSheets());
+                    assertEquals(10, wb2.getStylesSource().getNumCellStyles());
+                }
             }
         }
     }
@@ -584,11 +570,10 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49966() throws IOException {
-        try (XSSFWorkbook wb1 = XSSFTestDataSamples
-                .openSampleWorkbook("shared_formulas.xlsx")) {
+        try (XSSFWorkbook wb1 = openSampleWorkbook("shared_formulas.xlsx")) {
             XSSFSheet sheet = wb1.getSheetAt(0);
 
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             // CalcChain has lots of entries
             CalculationChain cc = wb1.getCalculationChain();
@@ -601,7 +586,7 @@ public final class TestXSSFBugs extends
             assertEquals("A8", cc.getCTCalcChain().getCArray(6).getR());
             assertEquals(40, cc.getCTCalcChain().sizeOfCArray());
 
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             // Try various ways of changing the formulas
             // If it stays a formula, chain entry should remain
@@ -609,25 +594,25 @@ public final class TestXSSFBugs extends
             sheet.getRow(1).getCell(0).setCellFormula("A1"); // stay
             sheet.getRow(2).getCell(0).setCellFormula(null); // go
             sheet.getRow(3).getCell(0).setCellFormula("14"); // stay
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             sheet.getRow(4).getCell(0).setBlank(); // go
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             validateCells(sheet);
             sheet.getRow(5).removeCell(sheet.getRow(5).getCell(0)); // go
             validateCells(sheet);
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             sheet.getRow(6).getCell(0).setBlank(); // go
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             sheet.getRow(7).getCell(0).setCellValue((String) null); // go
 
-            XSSFTestDataSamples.writeOutAndReadBack(wb1).close();
+            writeOutAndReadBack(wb1).close();
 
             // Save and check
-            try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1)) {
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
                 wb1.close();
                 assertEquals(35, cc.getCTCalcChain().sizeOfCArray());
 
@@ -641,8 +626,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug49966Row() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples
-                .openSampleWorkbook("shared_formulas.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("shared_formulas.xlsx")) {
             XSSFSheet sheet = wb.getSheetAt(0);
 
             validateCells(sheet);
@@ -660,7 +644,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug49156() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("49156.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("49156.xlsx")) {
             FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();
 
             Sheet sheet = wb.getSheetAt(0);
@@ -680,7 +664,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50440And51875() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("NewlineInFormulas.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("NewlineInFormulas.xlsx")) {
             Sheet s = wb.getSheetAt(0);
             Cell c = s.getRow(0).getCell(0);
 
@@ -706,58 +690,55 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50795() throws IOException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("50795.xlsx");
-        XSSFSheet sheet = wb1.getSheetAt(0);
-        XSSFRow row = sheet.getRow(0);
-
-        XSSFCell cellWith = row.getCell(0);
-        XSSFCell cellWithoutComment = row.getCell(1);
-
-        assertNotNull(cellWith.getCellComment());
-        assertNull(cellWithoutComment.getCellComment());
-
-        String exp = "\u0410\u0432\u0442\u043e\u0440:\ncomment";
-        XSSFComment comment = cellWith.getCellComment();
-        assertEquals(exp, comment.getString().getString());
+        try (XSSFWorkbook wb1 = openSampleWorkbook("50795.xlsx")) {
+            XSSFSheet sheet = wb1.getSheetAt(0);
+            XSSFRow row = sheet.getRow(0);
 
+            XSSFCell cellWith = row.getCell(0);
+            XSSFCell cellWithoutComment = row.getCell(1);
 
-        // Check we can write it out and read it back as-is
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
+            assertNotNull(cellWith.getCellComment());
+            assertNull(cellWithoutComment.getCellComment());
 
-        sheet = wb2.getSheetAt(0);
-        row = sheet.getRow(0);
-        cellWith = row.getCell(0);
-        cellWithoutComment = row.getCell(1);
+            String exp = "\u0410\u0432\u0442\u043e\u0440:\ncomment";
+            XSSFComment comment = cellWith.getCellComment();
+            assertEquals(exp, comment.getString().getString());
 
-        // Double check things are as expected
-        assertNotNull(cellWith.getCellComment());
-        assertNull(cellWithoutComment.getCellComment());
-        comment = cellWith.getCellComment();
-        assertEquals(exp, comment.getString().getString());
 
+            // Check we can write it out and read it back as-is
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                sheet = wb2.getSheetAt(0);
+                row = sheet.getRow(0);
+                cellWith = row.getCell(0);
+                cellWithoutComment = row.getCell(1);
 
-        // Move the comment
-        cellWithoutComment.setCellComment(comment);
+                // Double check things are as expected
+                assertNotNull(cellWith.getCellComment());
+                assertNull(cellWithoutComment.getCellComment());
+                comment = cellWith.getCellComment();
+                assertEquals(exp, comment.getString().getString());
 
 
-        // Write out and re-check
-        XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2);
-        wb2.close();
+                // Move the comment
+                cellWithoutComment.setCellComment(comment);
 
-        sheet = wb3.getSheetAt(0);
-        row = sheet.getRow(0);
 
-        // Ensure it swapped over
-        cellWith = row.getCell(0);
-        cellWithoutComment = row.getCell(1);
-        assertNull(cellWith.getCellComment());
-        assertNotNull(cellWithoutComment.getCellComment());
+                // Write out and re-check
+                try (XSSFWorkbook wb3 = writeOutAndReadBack(wb2)) {
+                    sheet = wb3.getSheetAt(0);
+                    row = sheet.getRow(0);
 
-        comment = cellWithoutComment.getCellComment();
-        assertEquals(exp, comment.getString().getString());
+                    // Ensure it swapped over
+                    cellWith = row.getCell(0);
+                    cellWithoutComment = row.getCell(1);
+                    assertNull(cellWith.getCellComment());
+                    assertNotNull(cellWithoutComment.getCellComment());
 
-        wb3.close();
+                    comment = cellWithoutComment.getCellComment();
+                    assertEquals(exp, comment.getString().getString());
+                }
+            }
+        }
     }
 
     /**
@@ -768,7 +749,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50299() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("50299.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("50299.xlsx")) {
 
             // Check all the colours
             for (int sn = 0; sn < wb.getNumberOfSheets(); sn++) {
@@ -799,7 +780,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50786() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50786-indexed_colours.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("50786-indexed_colours.xlsx")) {
             XSSFSheet s = wb.getSheetAt(0);
             XSSFRow r = s.getRow(2);
 
@@ -822,7 +803,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50846() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50846-border_colours.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("50846-border_colours.xlsx")) {
 
             XSSFSheet sheet = wb.getSheetAt(0);
             XSSFRow row = sheet.getRow(0);
@@ -852,7 +833,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50784() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50784-font_theme_colours.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("50784-font_theme_colours.xlsx")) {
             XSSFSheet s = wb.getSheetAt(0);
             XSSFRow r = s.getRow(0);
 
@@ -886,69 +867,65 @@ public final class TestXSSFBugs extends
         String text = "Use \n with word wrap on to create a new line.\n" +
                 "This line finishes with two trailing spaces.  ";
 
-        XSSFWorkbook wb1 = new XSSFWorkbook();
-        XSSFSheet sheet = wb1.createSheet();
+        try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
+            XSSFSheet sheet = wb1.createSheet();
 
-        Font font1 = wb1.createFont();
-        font1.setColor((short) 20);
-        Font font2 = wb1.createFont();
-        font2.setColor(Font.COLOR_RED);
-        Font font3 = wb1.getFontAt(0);
+            Font font1 = wb1.createFont();
+            font1.setColor((short) 20);
+            Font font2 = wb1.createFont();
+            font2.setColor(Font.COLOR_RED);
+            Font font3 = wb1.getFontAt(0);
 
-        XSSFRow row = sheet.createRow(2);
-        XSSFCell cell = row.createCell(2);
+            XSSFRow row = sheet.createRow(2);
+            XSSFCell cell = row.createCell(2);
 
-        XSSFRichTextString richTextString =
+            XSSFRichTextString richTextString =
                 wb1.getCreationHelper().createRichTextString(text);
 
-        // Check the text has the newline
-        assertEquals(text, richTextString.getString());
+            // Check the text has the newline
+            assertEquals(text, richTextString.getString());
 
-        // Apply the font
-        richTextString.applyFont(font3);
-        richTextString.applyFont(0, 3, font1);
-        cell.setCellValue(richTextString);
-
-        // To enable newlines you need set a cell styles with wrap=true
-        CellStyle cs = wb1.createCellStyle();
-        cs.setWrapText(true);
-        cell.setCellStyle(cs);
-
-        // Check the text has the
-        assertEquals(text, cell.getStringCellValue());
-
-        // Save the file and re-read it
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-        sheet = wb2.getSheetAt(0);
-        row = sheet.getRow(2);
-        cell = row.getCell(2);
-        assertEquals(text, cell.getStringCellValue());
-
-        // Now add a 2nd, and check again
-        int fontAt = text.indexOf('\n', 6);
-        cell.getRichStringCellValue().applyFont(10, fontAt + 1, font2);
-        assertEquals(text, cell.getStringCellValue());
-
-        assertEquals(4, cell.getRichStringCellValue().numFormattingRuns());
-        assertEquals("Use", cell.getRichStringCellValue().getCTRst().getRArray(0).getT());
-
-        String r3 = cell.getRichStringCellValue().getCTRst().getRArray(2).getT();
-        assertEquals("line.\n", r3.substring(r3.length() - 6));
-
-        // Save and re-check
-        XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2);
-        wb2.close();
-
-        sheet = wb3.getSheetAt(0);
-        row = sheet.getRow(2);
-        cell = row.getCell(2);
-        assertEquals(text, cell.getStringCellValue());
-        wb3.close();
-
-        // FileOutputStream out = new FileOutputStream("/tmp/test48877.xlsx");
-        // wb.write(out);
-        // out.close();
+            // Apply the font
+            richTextString.applyFont(font3);
+            richTextString.applyFont(0, 3, font1);
+            cell.setCellValue(richTextString);
+
+            // To enable newlines you need set a cell styles with wrap=true
+            CellStyle cs = wb1.createCellStyle();
+            cs.setWrapText(true);
+            cell.setCellStyle(cs);
+
+            // Check the text has the
+            assertEquals(text, cell.getStringCellValue());
+
+            // Save the file and re-read it
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                sheet = wb2.getSheetAt(0);
+                row = sheet.getRow(2);
+                cell = row.getCell(2);
+                assertEquals(text, cell.getStringCellValue());
+
+                // Now add a 2nd, and check again
+                int fontAt = text.indexOf('\n', 6);
+                cell.getRichStringCellValue().applyFont(10, fontAt + 1, font2);
+                assertEquals(text, cell.getStringCellValue());
+
+                assertEquals(4, cell.getRichStringCellValue().numFormattingRuns());
+                assertEquals("Use", cell.getRichStringCellValue().getCTRst().getRArray(0).getT());
+
+                String r3 = cell.getRichStringCellValue().getCTRst().getRArray(2).getT();
+                assertEquals("line.\n", r3.substring(r3.length() - 6));
+
+                // Save and re-check
+                try (XSSFWorkbook wb3 = writeOutAndReadBack(wb2)) {
+
+                    sheet = wb3.getSheetAt(0);
+                    row = sheet.getRow(2);
+                    cell = row.getCell(2);
+                    assertEquals(text, cell.getStringCellValue());
+                }
+            }
+        }
     }
 
     /**
@@ -956,119 +933,118 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug50867() throws IOException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("50867_with_table.xlsx");
-        assertEquals(3, wb1.getNumberOfSheets());
+        try (XSSFWorkbook wb1 = openSampleWorkbook("50867_with_table.xlsx")) {
+            assertEquals(3, wb1.getNumberOfSheets());
 
-        XSSFSheet s1 = wb1.getSheetAt(0);
-        XSSFSheet s2 = wb1.getSheetAt(1);
-        XSSFSheet s3 = wb1.getSheetAt(2);
-        assertEquals(1, s1.getTables().size());
-        assertEquals(0, s2.getTables().size());
-        assertEquals(0, s3.getTables().size());
-
-        XSSFTable t = s1.getTables().get(0);
-        assertEquals("Tabella1", t.getName());
-        assertEquals("Tabella1", t.getDisplayName());
-        assertEquals("A1:C3", t.getCTTable().getRef());
-
-        // Add a sheet and re-order
-        XSSFSheet s4 = wb1.createSheet("NewSheet");
-        wb1.setSheetOrder(s4.getSheetName(), 0);
-
-        // Check on tables
-        assertEquals(1, s1.getTables().size());
-        assertEquals(0, s2.getTables().size());
-        assertEquals(0, s3.getTables().size());
-        assertEquals(0, s4.getTables().size());
-
-        // Refetch to get the new order
-        s1 = wb1.getSheetAt(0);
-        s2 = wb1.getSheetAt(1);
-        s3 = wb1.getSheetAt(2);
-        s4 = wb1.getSheetAt(3);
-        assertEquals(0, s1.getTables().size());
-        assertEquals(1, s2.getTables().size());
-        assertEquals(0, s3.getTables().size());
-        assertEquals(0, s4.getTables().size());
-
-        // Save and re-load
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-
-        s1 = wb2.getSheetAt(0);
-        s2 = wb2.getSheetAt(1);
-        s3 = wb2.getSheetAt(2);
-        s4 = wb2.getSheetAt(3);
-        assertEquals(0, s1.getTables().size());
-        assertEquals(1, s2.getTables().size());
-        assertEquals(0, s3.getTables().size());
-        assertEquals(0, s4.getTables().size());
-
-        t = s2.getTables().get(0);
-        assertEquals("Tabella1", t.getName());
-        assertEquals("Tabella1", t.getDisplayName());
-        assertEquals("A1:C3", t.getCTTable().getRef());
-
-
-        // Add some more tables, and check
-        t = s2.createTable(null);
-        t.setName("New 2");
-        t.setDisplayName("New 2");
-        t = s3.createTable(null);
-        t.setName("New 3");
-        t.setDisplayName("New 3");
-
-        XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2);
-        wb2.close();
-        s1 = wb3.getSheetAt(0);
-        s2 = wb3.getSheetAt(1);
-        s3 = wb3.getSheetAt(2);
-        s4 = wb3.getSheetAt(3);
-        assertEquals(0, s1.getTables().size());
-        assertEquals(2, s2.getTables().size());
-        assertEquals(1, s3.getTables().size());
-        assertEquals(0, s4.getTables().size());
-
-        t = s2.getTables().get(0);
-        assertEquals("Tabella1", t.getName());
-        assertEquals("Tabella1", t.getDisplayName());
-        assertEquals("A1:C3", t.getCTTable().getRef());
-
-        t = s2.getTables().get(1);
-        assertEquals("New 2", t.getName());
-        assertEquals("New 2", t.getDisplayName());
-
-        t = s3.getTables().get(0);
-        assertEquals("New 3", t.getName());
-        assertEquals("New 3", t.getDisplayName());
-
-        // Check the relationships
-        assertEquals(0, s1.getRelations().size());
-        assertEquals(3, s2.getRelations().size());
-        assertEquals(1, s3.getRelations().size());
-        assertEquals(0, s4.getRelations().size());
-
-        assertEquals(
-                XSSFRelation.PRINTER_SETTINGS.getContentType(),
-                s2.getRelations().get(0).getPackagePart().getContentType()
-        );
-        assertEquals(
-                XSSFRelation.TABLE.getContentType(),
-                s2.getRelations().get(1).getPackagePart().getContentType()
-        );
-        assertEquals(
-                XSSFRelation.TABLE.getContentType(),
-                s2.getRelations().get(2).getPackagePart().getContentType()
-        );
-        assertEquals(
-                XSSFRelation.TABLE.getContentType(),
-                s3.getRelations().get(0).getPackagePart().getContentType()
-        );
-        assertEquals(
-                "/xl/tables/table3.xml",
-                s3.getRelations().get(0).getPackagePart().getPartName().toString()
-        );
-        wb3.close();
+            XSSFSheet s1 = wb1.getSheetAt(0);
+            XSSFSheet s2 = wb1.getSheetAt(1);
+            XSSFSheet s3 = wb1.getSheetAt(2);
+            assertEquals(1, s1.getTables().size());
+            assertEquals(0, s2.getTables().size());
+            assertEquals(0, s3.getTables().size());
+
+            XSSFTable t = s1.getTables().get(0);
+            assertEquals("Tabella1", t.getName());
+            assertEquals("Tabella1", t.getDisplayName());
+            assertEquals("A1:C3", t.getCTTable().getRef());
+
+            // Add a sheet and re-order
+            XSSFSheet s4 = wb1.createSheet("NewSheet");
+            wb1.setSheetOrder(s4.getSheetName(), 0);
+
+            // Check on tables
+            assertEquals(1, s1.getTables().size());
+            assertEquals(0, s2.getTables().size());
+            assertEquals(0, s3.getTables().size());
+            assertEquals(0, s4.getTables().size());
+
+            // Refetch to get the new order
+            s1 = wb1.getSheetAt(0);
+            s2 = wb1.getSheetAt(1);
+            s3 = wb1.getSheetAt(2);
+            s4 = wb1.getSheetAt(3);
+            assertEquals(0, s1.getTables().size());
+            assertEquals(1, s2.getTables().size());
+            assertEquals(0, s3.getTables().size());
+            assertEquals(0, s4.getTables().size());
+
+            // Save and re-load
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                s1 = wb2.getSheetAt(0);
+                s2 = wb2.getSheetAt(1);
+                s3 = wb2.getSheetAt(2);
+                s4 = wb2.getSheetAt(3);
+                assertEquals(0, s1.getTables().size());
+                assertEquals(1, s2.getTables().size());
+                assertEquals(0, s3.getTables().size());
+                assertEquals(0, s4.getTables().size());
+
+                t = s2.getTables().get(0);
+                assertEquals("Tabella1", t.getName());
+                assertEquals("Tabella1", t.getDisplayName());
+                assertEquals("A1:C3", t.getCTTable().getRef());
+
+
+                // Add some more tables, and check
+                t = s2.createTable(null);
+                t.setName("New 2");
+                t.setDisplayName("New 2");
+                t = s3.createTable(null);
+                t.setName("New 3");
+                t.setDisplayName("New 3");
+
+                try (XSSFWorkbook wb3 = writeOutAndReadBack(wb2)) {
+                    s1 = wb3.getSheetAt(0);
+                    s2 = wb3.getSheetAt(1);
+                    s3 = wb3.getSheetAt(2);
+                    s4 = wb3.getSheetAt(3);
+                    assertEquals(0, s1.getTables().size());
+                    assertEquals(2, s2.getTables().size());
+                    assertEquals(1, s3.getTables().size());
+                    assertEquals(0, s4.getTables().size());
+
+                    t = s2.getTables().get(0);
+                    assertEquals("Tabella1", t.getName());
+                    assertEquals("Tabella1", t.getDisplayName());
+                    assertEquals("A1:C3", t.getCTTable().getRef());
+
+                    t = s2.getTables().get(1);
+                    assertEquals("New 2", t.getName());
+                    assertEquals("New 2", t.getDisplayName());
+
+                    t = s3.getTables().get(0);
+                    assertEquals("New 3", t.getName());
+                    assertEquals("New 3", t.getDisplayName());
+
+                    // Check the relationships
+                    assertEquals(0, s1.getRelations().size());
+                    assertEquals(3, s2.getRelations().size());
+                    assertEquals(1, s3.getRelations().size());
+                    assertEquals(0, s4.getRelations().size());
+
+                    assertEquals(
+                        XSSFRelation.PRINTER_SETTINGS.getContentType(),
+                        s2.getRelations().get(0).getPackagePart().getContentType()
+                    );
+                    assertEquals(
+                        XSSFRelation.TABLE.getContentType(),
+                        s2.getRelations().get(1).getPackagePart().getContentType()
+                    );
+                    assertEquals(
+                        XSSFRelation.TABLE.getContentType(),
+                        s2.getRelations().get(2).getPackagePart().getContentType()
+                    );
+                    assertEquals(
+                        XSSFRelation.TABLE.getContentType(),
+                        s3.getRelations().get(0).getPackagePart().getContentType()
+                    );
+                    assertEquals(
+                        "/xl/tables/table3.xml",
+                        s3.getRelations().get(0).getPackagePart().getPartName().toString()
+                    );
+                }
+            }
+        }
     }
 
     /**
@@ -1077,45 +1053,43 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug49253() throws IOException {
-        XSSFWorkbook wb1 = new XSSFWorkbook();
-        XSSFWorkbook wb2 = new XSSFWorkbook();
-        CellRangeAddress cra = CellRangeAddress.valueOf("C2:D3");
-
-        // No print settings before repeating
-        XSSFSheet s1 = wb1.createSheet();
-        assertFalse(s1.getCTWorksheet().isSetPageSetup());
-        assertTrue(s1.getCTWorksheet().isSetPageMargins());
-        s1.setRepeatingColumns(cra);
-        s1.setRepeatingRows(cra);
-
-        assertTrue(s1.getCTWorksheet().isSetPageSetup());
-        assertTrue(s1.getCTWorksheet().isSetPageMargins());
-
-        PrintSetup ps1 = s1.getPrintSetup();
-        assertFalse(ps1.getValidSettings());
-        assertFalse(ps1.getLandscape());
-
-
-        // Had valid print settings before repeating
-        XSSFSheet s2 = wb2.createSheet();
-        PrintSetup ps2 = s2.getPrintSetup();
-        assertTrue(s2.getCTWorksheet().isSetPageSetup());
-        assertTrue(s2.getCTWorksheet().isSetPageMargins());
-
-        ps2.setLandscape(false);
-        assertTrue(ps2.getValidSettings());
-        assertFalse(ps2.getLandscape());
-        s2.setRepeatingColumns(cra);
-        s2.setRepeatingRows(cra);
-
-        ps2 = s2.getPrintSetup();
-        assertTrue(s2.getCTWorksheet().isSetPageSetup());
-        assertTrue(s2.getCTWorksheet().isSetPageMargins());
-        assertTrue(ps2.getValidSettings());
-        assertFalse(ps2.getLandscape());
-
-        wb1.close();
-        wb2.close();
+        try (XSSFWorkbook wb1 = new XSSFWorkbook();
+             XSSFWorkbook wb2 = new XSSFWorkbook()) {
+            CellRangeAddress cra = CellRangeAddress.valueOf("C2:D3");
+
+            // No print settings before repeating
+            XSSFSheet s1 = wb1.createSheet();
+            assertFalse(s1.getCTWorksheet().isSetPageSetup());
+            assertTrue(s1.getCTWorksheet().isSetPageMargins());
+            s1.setRepeatingColumns(cra);
+            s1.setRepeatingRows(cra);
+
+            assertTrue(s1.getCTWorksheet().isSetPageSetup());
+            assertTrue(s1.getCTWorksheet().isSetPageMargins());
+
+            PrintSetup ps1 = s1.getPrintSetup();
+            assertFalse(ps1.getValidSettings());
+            assertFalse(ps1.getLandscape());
+
+
+            // Had valid print settings before repeating
+            XSSFSheet s2 = wb2.createSheet();
+            PrintSetup ps2 = s2.getPrintSetup();
+            assertTrue(s2.getCTWorksheet().isSetPageSetup());
+            assertTrue(s2.getCTWorksheet().isSetPageMargins());
+
+            ps2.setLandscape(false);
+            assertTrue(ps2.getValidSettings());
+            assertFalse(ps2.getLandscape());
+            s2.setRepeatingColumns(cra);
+            s2.setRepeatingRows(cra);
+
+            ps2 = s2.getPrintSetup();
+            assertTrue(s2.getCTWorksheet().isSetPageSetup());
+            assertTrue(s2.getCTWorksheet().isSetPageMargins());
+            assertTrue(ps2.getValidSettings());
+            assertFalse(ps2.getLandscape());
+        }
     }
 
     /**
@@ -1123,77 +1097,77 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug51037() throws IOException {
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet s = wb.createSheet();
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            XSSFSheet s = wb.createSheet();
 
-        CellStyle defaultStyle = wb.getCellStyleAt((short) 0);
-        assertEquals(0, defaultStyle.getIndex());
+            CellStyle defaultStyle = wb.getCellStyleAt((short) 0);
+            assertEquals(0, defaultStyle.getIndex());
 
-        CellStyle blueStyle = wb.createCellStyle();
-        blueStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex());
-        blueStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
-        assertEquals(1, blueStyle.getIndex());
-
-        CellStyle pinkStyle = wb.createCellStyle();
-        pinkStyle.setFillForegroundColor(IndexedColors.PINK.getIndex());
-        pinkStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
-        assertEquals(2, pinkStyle.getIndex());
-
-        // Starts empty
-        assertEquals(1, s.getCTWorksheet().sizeOfColsArray());
-        CTCols cols = s.getCTWorksheet().getColsArray(0);
-        assertEquals(0, cols.sizeOfColArray());
-
-        // Add some rows and columns
-        XSSFRow r1 = s.createRow(0);
-        XSSFRow r2 = s.createRow(1);
-        r1.createCell(0);
-        r1.createCell(2);
-        r2.createCell(0);
-        r2.createCell(3);
-
-        // Check no style is there
-        assertEquals(1, s.getCTWorksheet().sizeOfColsArray());
-        assertEquals(0, cols.sizeOfColArray());
-
-        assertEquals(defaultStyle, s.getColumnStyle(0));
-        assertEquals(defaultStyle, s.getColumnStyle(2));
-        assertEquals(defaultStyle, s.getColumnStyle(3));
-
-
-        // Apply the styles
-        s.setDefaultColumnStyle(0, pinkStyle);
-        s.setDefaultColumnStyle(3, blueStyle);
-
-        // Check
-        assertEquals(pinkStyle, s.getColumnStyle(0));
-        assertEquals(defaultStyle, s.getColumnStyle(2));
-        assertEquals(blueStyle, s.getColumnStyle(3));
-
-        assertEquals(1, s.getCTWorksheet().sizeOfColsArray());
-        assertEquals(2, cols.sizeOfColArray());
-
-        assertEquals(1, cols.getColArray(0).getMin());
-        assertEquals(1, cols.getColArray(0).getMax());
-        assertEquals(pinkStyle.getIndex(), cols.getColArray(0).getStyle());
-
-        assertEquals(4, cols.getColArray(1).getMin());
-        assertEquals(4, cols.getColArray(1).getMax());
-        assertEquals(blueStyle.getIndex(), cols.getColArray(1).getStyle());
-
-
-        // Save, re-load and re-check
-        XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
-        wb.close();
-        s = wbBack.getSheetAt(0);
-        defaultStyle = wbBack.getCellStyleAt(defaultStyle.getIndex());
-        blueStyle = wbBack.getCellStyleAt(blueStyle.getIndex());
-        pinkStyle = wbBack.getCellStyleAt(pinkStyle.getIndex());
-
-        assertEquals(pinkStyle, s.getColumnStyle(0));
-        assertEquals(defaultStyle, s.getColumnStyle(2));
-        assertEquals(blueStyle, s.getColumnStyle(3));
-        wbBack.close();
+            CellStyle blueStyle = wb.createCellStyle();
+            blueStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex());
+            blueStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            assertEquals(1, blueStyle.getIndex());
+
+            CellStyle pinkStyle = wb.createCellStyle();
+            pinkStyle.setFillForegroundColor(IndexedColors.PINK.getIndex());
+            pinkStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            assertEquals(2, pinkStyle.getIndex());
+
+            // Starts empty
+            assertEquals(1, s.getCTWorksheet().sizeOfColsArray());
+            CTCols cols = s.getCTWorksheet().getColsArray(0);
+            assertEquals(0, cols.sizeOfColArray());
+
+            // Add some rows and columns
+            XSSFRow r1 = s.createRow(0);
+            XSSFRow r2 = s.createRow(1);
+            r1.createCell(0);
+            r1.createCell(2);
+            r2.createCell(0);
+            r2.createCell(3);
+
+            // Check no style is there
+            assertEquals(1, s.getCTWorksheet().sizeOfColsArray());
+            assertEquals(0, cols.sizeOfColArray());
+
+            assertEquals(defaultStyle, s.getColumnStyle(0));
+            assertEquals(defaultStyle, s.getColumnStyle(2));
+            assertEquals(defaultStyle, s.getColumnStyle(3));
+
+
+            // Apply the styles
+            s.setDefaultColumnStyle(0, pinkStyle);
+            s.setDefaultColumnStyle(3, blueStyle);
+
+            // Check
+            assertEquals(pinkStyle, s.getColumnStyle(0));
+            assertEquals(defaultStyle, s.getColumnStyle(2));
+            assertEquals(blueStyle, s.getColumnStyle(3));
+
+            assertEquals(1, s.getCTWorksheet().sizeOfColsArray());
+            assertEquals(2, cols.sizeOfColArray());
+
+            assertEquals(1, cols.getColArray(0).getMin());
+            assertEquals(1, cols.getColArray(0).getMax());
+            assertEquals(pinkStyle.getIndex(), cols.getColArray(0).getStyle());
+
+            assertEquals(4, cols.getColArray(1).getMin());
+            assertEquals(4, cols.getColArray(1).getMax());
+            assertEquals(blueStyle.getIndex(), cols.getColArray(1).getStyle());
+
+
+            // Save, re-load and re-check
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(wb)) {
+                s = wbBack.getSheetAt(0);
+                defaultStyle = wbBack.getCellStyleAt(defaultStyle.getIndex());
+                blueStyle = wbBack.getCellStyleAt(blueStyle.getIndex());
+                pinkStyle = wbBack.getCellStyleAt(pinkStyle.getIndex());
+
+                assertEquals(pinkStyle, s.getColumnStyle(0));
+                assertEquals(defaultStyle, s.getColumnStyle(2));
+                assertEquals(blueStyle, s.getColumnStyle(3));
+            }
+        }
     }
 
     /**
@@ -1203,9 +1177,9 @@ public final class TestXSSFBugs extends
     @Test
     void bug46662() throws IOException {
         for (int i=0; i<2; i++) {
-            try (XSSFWorkbook wb1 = (i == 0) ? new XSSFWorkbook() : XSSFTestDataSamples.openSampleWorkbook("sample.xlsx")) {
+            try (XSSFWorkbook wb1 = (i == 0) ? new XSSFWorkbook() : openSampleWorkbook("sample.xlsx")) {
                 for (int j=0; j<3; j++) {
-                    try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1)) {
+                    try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
                         assertEquals(wb1.getNumberOfSheets(), wb2.getNumberOfSheets());
                     }
                 }
@@ -1220,7 +1194,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug51222() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51222.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("51222.xlsx")) {
             XSSFSheet s = wb.getSheetAt(0);
 
             XSSFCell cA4_EEECE1 = s.getRow(3).getCell(0);
@@ -1260,7 +1234,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug51470() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51470.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("51470.xlsx")) {
             XSSFSheet sh0 = wb.getSheetAt(0);
             XSSFSheet sh1 = wb.cloneSheet(0);
             List<RelationPart> rels0 = sh0.getRelationParts();
@@ -1286,64 +1260,64 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug51850() throws IOException {
-        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("51850.xlsx");
-        XSSFSheet sh1 = wb1.getSheetAt(0);
-        XSSFSheet sh2 = wb1.getSheetAt(1);
-
-        // Sheet 2 has comments
-        assertNotNull(sh2.getCommentsTable(false));
-        assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments());
-
-        // Sheet 1 doesn't (yet)
-        assertNull(sh1.getCommentsTable(false));
-
-        // Try to add comments to Sheet 1
-        CreationHelper factory = wb1.getCreationHelper();
-        Drawing<?> drawing = sh1.createDrawingPatriarch();
-
-        ClientAnchor anchor = factory.createClientAnchor();
-        anchor.setCol1(0);
-        anchor.setCol2(4);
-        anchor.setRow1(0);
-        anchor.setRow2(1);
+        try (XSSFWorkbook wb1 = openSampleWorkbook("51850.xlsx")) {
+            XSSFSheet sh1 = wb1.getSheetAt(0);
+            XSSFSheet sh2 = wb1.getSheetAt(1);
+
+            // Sheet 2 has comments
+            assertNotNull(sh2.getCommentsTable(false));
+            assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments());
+
+            // Sheet 1 doesn't (yet)
+            assertNull(sh1.getCommentsTable(false));
+
+            // Try to add comments to Sheet 1
+            CreationHelper factory = wb1.getCreationHelper();
+            Drawing<?> drawing = sh1.createDrawingPatriarch();
+
+            ClientAnchor anchor = factory.createClientAnchor();
+            anchor.setCol1(0);
+            anchor.setCol2(4);
+            anchor.setRow1(0);
+            anchor.setRow2(1);
 
-        Comment comment1 = drawing.createCellComment(anchor);
-        comment1.setString(
+            Comment comment1 = drawing.createCellComment(anchor);
+            comment1.setString(
                 factory.createRichTextString("I like this cell. It's my favourite."));
-        comment1.setAuthor("Bob T. Fish");
+            comment1.setAuthor("Bob T. Fish");
 
-        anchor = factory.createClientAnchor();
-        anchor.setCol1(0);
-        anchor.setCol2(4);
-        anchor.setRow1(1);
-        anchor.setRow2(1);
-        Comment comment2 = drawing.createCellComment(anchor);
-        comment2.setString(
+            anchor = factory.createClientAnchor();
+            anchor.setCol1(0);
+            anchor.setCol2(4);
+            anchor.setRow1(1);
+            anchor.setRow2(1);
+            Comment comment2 = drawing.createCellComment(anchor);
+            comment2.setString(
                 factory.createRichTextString("This is much less fun..."));
-        comment2.setAuthor("Bob T. Fish");
+            comment2.setAuthor("Bob T. Fish");
+
+            Cell c1 = sh1.getRow(0).createCell(4);
+            c1.setCellValue(2.3);
+            c1.setCellComment(comment1);
 
-        Cell c1 = sh1.getRow(0).createCell(4);
-        c1.setCellValue(2.3);
-        c1.setCellComment(comment1);
-
-        Cell c2 = sh1.getRow(0).createCell(5);
-        c2.setCellValue(2.1);
-        c2.setCellComment(comment2);
-
-
-        // Save and re-load
-        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
-        wb1.close();
-        sh1 = wb2.getSheetAt(0);
-        sh2 = wb2.getSheetAt(1);
-
-        // Check the comments
-        assertNotNull(sh2.getCommentsTable(false));
-        assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments());
-
-        assertNotNull(sh1.getCommentsTable(false));
-        assertEquals(2, sh1.getCommentsTable(false).getNumberOfComments());
-        wb2.close();
+            Cell c2 = sh1.getRow(0).createCell(5);
+            c2.setCellValue(2.1);
+            c2.setCellComment(comment2);
+
+
+            // Save and re-load
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+                sh1 = wb2.getSheetAt(0);
+                sh2 = wb2.getSheetAt(1);
+
+                // Check the comments
+                assertNotNull(sh2.getCommentsTable(false));
+                assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments());
+
+                assertNotNull(sh1.getCommentsTable(false));
+                assertEquals(2, sh1.getCommentsTable(false).getNumberOfComments());
+            }
+        }
     }
 
     /**
@@ -1351,7 +1325,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug51963() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51963.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("51963.xlsx")) {
             Sheet sheet = wb.getSheetAt(0);
             assertEquals("Abc,1", sheet.getSheetName());
 
@@ -1372,7 +1346,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug48703() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48703.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("48703.xlsx")) {
             XSSFSheet sheet = wb.getSheetAt(0);
 
             // Contains two forms, one with a range and one a list
@@ -1402,7 +1376,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug51710() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("51710.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("51710.xlsx")) {
 
             final String[] columns = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"};
             final int rowMax = 500; // bug triggers on row index 59
@@ -1434,7 +1408,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug5301() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("53101.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("53101.xlsx")) {
             FormulaEvaluator evaluator =
                     wb.getCreationHelper().createFormulaEvaluator();
             // A1: SUM(B1: IZ1)
@@ -1455,7 +1429,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug54436() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("54436.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("54436.xlsx")) {
             if (!WorkbookEvaluator.getSupportedFunctionNames().contains("GETPIVOTDATA")) {
                 Function func = (args, srcRowIndex, srcColumnIndex) -> ErrorEval.NA;
 
@@ -1507,7 +1481,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug53282() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("53282b.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("53282b.xlsx")) {
             Cell c = wb.getSheetAt(0).getRow(1).getCell(0);
             assertEquals("#@_#", c.getStringCellValue());
             assertEquals("http://invalid.uri", c.getHyperlink().getAddress());
@@ -1521,11 +1495,11 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug56278() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56278.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("56278.xlsx")) {
             assertEquals(0, wb.getSheetIndex("Market Rates"));
 
             // Save and re-check
-            Workbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb);
+            Workbook nwb = writeOutAndReadBack(wb);
             assertEquals(0, nwb.getSheetIndex("Market Rates"));
             nwb.close();
         }
@@ -1533,7 +1507,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug56315() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56315.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("56315.xlsx")) {
             Cell c = wb.getSheetAt(0).getRow(1).getCell(0);
             CellValue cv = wb.getCreationHelper().createFormulaEvaluator().evaluate(c);
             double rounded = cv.getNumberValue();
@@ -1558,7 +1532,7 @@ public final class TestXSSFBugs extends
                 Thread.sleep(10);
             }
 
-            ByteArrayOutputStream bos = new ByteArrayOutputStream(8096);
+            UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(8096);
             wb.write(bos);
             byte[] firstSave = bos.toByteArray();
             bos.reset();
@@ -1578,17 +1552,15 @@ public final class TestXSSFBugs extends
     void bug54034() throws IOException {
         TimeZone tz = LocaleUtil.getUserTimeZone();
         LocaleUtil.setUserTimeZone(TimeZone.getTimeZone("CET"));
-        try {
-            try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("54034.xlsx")) {
-                Sheet sheet = wb.getSheet("Sheet1");
-                Row row = sheet.getRow(1);
-                Cell cell = row.getCell(2);
-                assertTrue(DateUtil.isCellDateFormatted(cell));
-
-                DataFormatter fmt = new DataFormatter();
-                assertEquals("yyyy\\-mm\\-dd\\Thh:mm", cell.getCellStyle().getDataFormatString());
-                assertEquals("2012-08-08T22:59", fmt.formatCellValue(cell));
-            }
+        try (Workbook wb = openSampleWorkbook("54034.xlsx")) {
+            Sheet sheet = wb.getSheet("Sheet1");
+            Row row = sheet.getRow(1);
+            Cell cell = row.getCell(2);
+            assertTrue(DateUtil.isCellDateFormatted(cell));
+
+            DataFormatter fmt = new DataFormatter();
+            assertEquals("yyyy\\-mm\\-dd\\Thh:mm", cell.getCellStyle().getDataFormatString());
+            assertEquals("2012-08-08T22:59", fmt.formatCellValue(cell));
         } finally {
             LocaleUtil.setUserTimeZone(tz);
         }
@@ -1597,7 +1569,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void testBug53798XLSX() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("53798_shiftNegative_TMPL.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("53798_shiftNegative_TMPL.xlsx")) {
             File xlsOutput = TempFile.createTempFile("testBug53798", ".xlsx");
             bug53798Work(wb, xlsOutput);
         }
@@ -1606,7 +1578,7 @@ public final class TestXSSFBugs extends
     @Disabled("Shifting rows is not yet implemented in SXSSFSheet")
     @Test
     void testBug53798XLSXStream() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("53798_shiftNegative_TMPL.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("53798_shiftNegative_TMPL.xlsx")) {
             File xlsOutput = TempFile.createTempFile("testBug53798", ".xlsx");
             SXSSFWorkbook wb2 = new SXSSFWorkbook(wb);
             bug53798Work(wb2, xlsOutput);
@@ -1616,10 +1588,10 @@ public final class TestXSSFBugs extends
 
     @Test
     void testBug53798XLS() throws IOException {
-        Workbook wb = HSSFTestDataSamples.openSampleWorkbook("53798_shiftNegative_TMPL.xls");
-        File xlsOutput = TempFile.createTempFile("testBug53798", ".xls");
-        bug53798Work(wb, xlsOutput);
-        wb.close();
+        try (Workbook wb = HSSFTestDataSamples.openSampleWorkbook("53798_shiftNegative_TMPL.xls")) {
+            File xlsOutput = TempFile.createTempFile("testBug53798", ".xls");
+            bug53798Work(wb, xlsOutput);
+        }
     }
 
     /**
@@ -1627,7 +1599,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void testBug56420SumIfNPE() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56420.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("56420.xlsx")) {
 
             FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
 
@@ -1689,7 +1661,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug56702() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56702.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("56702.xlsx")) {
 
             Sheet sheet = wb.getSheetAt(0);
 
@@ -1718,7 +1690,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug56737() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56737.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("56737.xlsx")) {
 
             // Check the named range definitions
             Name nSheetScope = wb.getName("NR_To_A1");
@@ -1787,38 +1759,32 @@ public final class TestXSSFBugs extends
         }
     }
 
-    @Test
-    void testBug56688_1() throws IOException {
-        XSSFWorkbook excel = XSSFTestDataSamples.openSampleWorkbook("56688_1.xlsx");
-        checkValue(excel, "-1.0");  /* Not 0.0 because POI sees date "0" minus one month as invalid date, which is -1! */
-        excel.close();
-    }
-
-    @Test
-    void testBug56688_2() throws IOException {
-        XSSFWorkbook excel = XSSFTestDataSamples.openSampleWorkbook("56688_2.xlsx");
-        checkValue(excel, "#VALUE!");
-        excel.close();
-    }
-
-    @Test
-    void testBug56688_3() throws IOException {
-        XSSFWorkbook excel = XSSFTestDataSamples.openSampleWorkbook("56688_3.xlsx");
-        checkValue(excel, "#VALUE!");
-        excel.close();
-    }
+    @ParameterizedTest
+    @CsvSource({
+        /* Not 0.0 because POI sees date "0" minus one month as invalid date, which is -1! */
+        "56688_1.xlsx, -1.0",
+        "56688_2.xlsx, #VALUE!",
+        "56688_3.xlsx, #VALUE!",
+        "56688_4.xlsx, date"
+    })
+    void testBug56688(String fileName, String expect) throws IOException {
+        if ("date".equals(expect)) {
+            Calendar calendar = LocaleUtil.getLocaleCalendar();
+            calendar.add(Calendar.MONTH, 2);
+            double excelDate = DateUtil.getExcelDate(calendar.getTime());
+            NumberEval eval = new NumberEval(Math.floor(excelDate));
+            expect = eval.getStringValue() + ".0";
+        }
 
-    @Test
-    void testBug56688_4() throws IOException {
-        XSSFWorkbook excel = XSSFTestDataSamples.openSampleWorkbook("56688_4.xlsx");
+        try (XSSFWorkbook excel = openSampleWorkbook(fileName)) {
+            XSSFFormulaEvaluator evaluator = new XSSFFormulaEvaluator(excel);
+            evaluator.evaluateAll();
 
-        Calendar calendar = LocaleUtil.getLocaleCalendar();
-        calendar.add(Calendar.MONTH, 2);
-        double excelDate = DateUtil.getExcelDate(calendar.getTime());
-        NumberEval eval = new NumberEval(Math.floor(excelDate));
-        checkValue(excel, eval.getStringValue() + ".0");
+            XSSFCell cell = excel.getSheetAt(0).getRow(1).getCell(1);
+            CellValue value = evaluator.evaluate(cell);
 
-        excel.close();
+            assertEquals(expect, value.formatAsString());
+        }
     }
 
     /**
@@ -1827,33 +1793,33 @@ public final class TestXSSFBugs extends
      */
     @Test
     void testBug56527() throws IOException {
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet sheet = wb.createSheet();
-        XSSFCreationHelper creationHelper = wb.getCreationHelper();
-        XSSFHyperlink hyperlink;
-
-        // Try with a cell reference
-        hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
-        sheet.addHyperlink(hyperlink);
-        hyperlink.setAddress("http://myurl");
-        hyperlink.setCellReference("B4");
-        assertEquals(3, hyperlink.getFirstRow());
-        assertEquals(1, hyperlink.getFirstColumn());
-        assertEquals(3, hyperlink.getLastRow());
-        assertEquals(1, hyperlink.getLastColumn());
-
-        // Try with explicit rows / columns
-        hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
-        sheet.addHyperlink(hyperlink);
-        hyperlink.setAddress("http://myurl");
-        hyperlink.setFirstRow(5);
-        hyperlink.setFirstColumn(3);
-
-        assertEquals(5, hyperlink.getFirstRow());
-        assertEquals(3, hyperlink.getFirstColumn());
-        assertEquals(5, hyperlink.getLastRow());
-        assertEquals(3, hyperlink.getLastColumn());
-        wb.close();
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            XSSFSheet sheet = wb.createSheet();
+            XSSFCreationHelper creationHelper = wb.getCreationHelper();
+            XSSFHyperlink hyperlink;
+
+            // Try with a cell reference
+            hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
+            sheet.addHyperlink(hyperlink);
+            hyperlink.setAddress("http://myurl");
+            hyperlink.setCellReference("B4");
+            assertEquals(3, hyperlink.getFirstRow());
+            assertEquals(1, hyperlink.getFirstColumn());
+            assertEquals(3, hyperlink.getLastRow());
+            assertEquals(1, hyperlink.getLastColumn());
+
+            // Try with explicit rows / columns
+            hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
+            sheet.addHyperlink(hyperlink);
+            hyperlink.setAddress("http://myurl");
+            hyperlink.setFirstRow(5);
+            hyperlink.setFirstColumn(3);
+
+            assertEquals(5, hyperlink.getFirstRow());
+            assertEquals(3, hyperlink.getFirstColumn());
+            assertEquals(5, hyperlink.getLastRow());
+            assertEquals(3, hyperlink.getLastColumn());
+        }
     }
 
     /**
@@ -1862,7 +1828,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug56502() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56502.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("56502.xlsx")) {
             Sheet sheet = wb.getSheetAt(0);
 
             Cell cFunc = sheet.getRow(3).getCell(0);
@@ -1900,7 +1866,7 @@ public final class TestXSSFBugs extends
             "Should fail as too much expansion occurs");
 
         // Check we can still parse valid files after all that
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("sample.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("sample.xlsx")) {
             assertEquals(3, wb.getNumberOfSheets());
         }
     }
@@ -1936,7 +1902,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug57176() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57176.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("57176.xlsx")) {
             CTDefinedNames definedNames = wb.getCTWorkbook().getDefinedNames();
             List<CTDefinedName> definedNameList = definedNames.getDefinedNameList();
             for (CTDefinedName defName : definedNameList) {
@@ -1967,19 +1933,9 @@ public final class TestXSSFBugs extends
         assertThrows(XLSBUnsupportedException.class, () -> WorkbookFactory.create(xlsbFile), ".xlsb files not supported");
     }
 
-    private void checkValue(XSSFWorkbook excel, String expect) {
-        XSSFFormulaEvaluator evaluator = new XSSFFormulaEvaluator(excel);
-        evaluator.evaluateAll();
-
-        XSSFCell cell = excel.getSheetAt(0).getRow(1).getCell(1);
-        CellValue value = evaluator.evaluate(cell);
-
-        assertEquals(expect, value.formatAsString());
-    }
-
     @Test
     void testBug57196() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("57196.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("57196.xlsx")) {
             Sheet sheet = wb.getSheet("Feuil1");
             Row mod = sheet.getRow(1);
             mod.getCell(1).setCellValue(3);
@@ -1992,30 +1948,30 @@ public final class TestXSSFBugs extends
 
     @Test
     void test57196_Detail() throws IOException {
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet sheet = wb.createSheet("Sheet1");
-        XSSFRow row = sheet.createRow(0);
-        XSSFCell cell = row.createCell(0);
-        cell.setCellFormula("DEC2HEX(HEX2DEC(O8)-O2+D2)");
-        XSSFFormulaEvaluator fe = new XSSFFormulaEvaluator(wb);
-        CellValue cv = fe.evaluate(cell);
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            XSSFSheet sheet = wb.createSheet("Sheet1");
+            XSSFRow row = sheet.createRow(0);
+            XSSFCell cell = row.createCell(0);
+            cell.setCellFormula("DEC2HEX(HEX2DEC(O8)-O2+D2)");
+            XSSFFormulaEvaluator fe = new XSSFFormulaEvaluator(wb);
+            CellValue cv = fe.evaluate(cell);
 
-        assertNotNull(cv);
-        wb.close();
+            assertNotNull(cv);
+        }
     }
 
     @Test
     void test57196_Detail2() throws IOException {
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet sheet = wb.createSheet("Sheet1");
-        XSSFRow row = sheet.createRow(0);
-        XSSFCell cell = row.createCell(0);
-        cell.setCellFormula("DEC2HEX(O2+D2)");
-        XSSFFormulaEvaluator fe = new XSSFFormulaEvaluator(wb);
-        CellValue cv = fe.evaluate(cell);
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            XSSFSheet sheet = wb.createSheet("Sheet1");
+            XSSFRow row = sheet.createRow(0);
+            XSSFCell cell = row.createCell(0);
+            cell.setCellFormula("DEC2HEX(O2+D2)");
+            XSSFFormulaEvaluator fe = new XSSFFormulaEvaluator(wb);
+            CellValue cv = fe.evaluate(cell);
 
-        assertNotNull(cv);
-        wb.close();
+            assertNotNull(cv);
+        }
     }
 
     @ParameterizedTest
@@ -2081,7 +2037,7 @@ public final class TestXSSFBugs extends
 
             // Try to write-out and read again, should only work
             //  in read-write mode, not read-only mode
-            try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1)) {
+            try (XSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
                 if (access == PackageAccess.READ) {
                     fail("Shouln't be able to write from read-only mode");
                 }
@@ -2110,7 +2066,7 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug57535() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("57535.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("57535.xlsx")) {
             FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
             evaluator.clearAllCachedResultValues();
 
@@ -2130,13 +2086,13 @@ public final class TestXSSFBugs extends
 
     @Test
     void test57165() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57171_57163_57165.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("57171_57163_57165.xlsx")) {
             removeAllSheetsBut(3, wb);
             // Throws exception here
             assertDoesNotThrow(() -> wb.cloneSheet(0));
             wb.setSheetName(1, "New Sheet");
 
-            try (XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb)) {
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(wb)) {
                 assertNotNull(wbBack.getSheet("New Sheet"));
             }
         }
@@ -2144,13 +2100,13 @@ public final class TestXSSFBugs extends
 
     @Test
     void test57165_create() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57171_57163_57165.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("57171_57163_57165.xlsx")) {
             removeAllSheetsBut(3, wb);
             // Throws exception here
             assertDoesNotThrow(() -> wb.createSheet("newsheet"));
             wb.setSheetName(1, "New Sheet");
 
-            try (XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb)) {
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(wb)) {
                 assertNotNull(wbBack.getSheet("New Sheet"));
             }
         }
@@ -2235,7 +2191,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void test56467() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("picture.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("picture.xlsx")) {
             Sheet orig = wb.getSheetAt(0);
             assertNotNull(orig);
 
@@ -2258,12 +2214,12 @@ public final class TestXSSFBugs extends
     @Test
     @Disabled("XMLBeans namespace mis-match on ooxml-strict files")
     void test57699() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("sample.strict.xlsx")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("sample.strict.xlsx")) {
             assertEquals(3, wb.getNumberOfSheets());
             // TODO Check sheet contents
             // TODO Check formula evaluation
 
-            try (XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb)) {
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(wb)) {
                 assertEquals(3, wbBack.getNumberOfSheets());
                 // TODO Re-check sheet contents
                 // TODO Re-check formula evaluation
@@ -2273,13 +2229,14 @@ public final class TestXSSFBugs extends
 
     @Test
     void testBug56295_MergeXlslsWithStyles() throws IOException {
-        XSSFWorkbook xlsToAppendWorkbook = XSSFTestDataSamples.openSampleWorkbook("56295.xlsx");
-        XSSFSheet sheet = xlsToAppendWorkbook.getSheetAt(0);
-        XSSFRow srcRow = sheet.getRow(0);
-        XSSFCell oldCell = srcRow.getCell(0);
-        XSSFCellStyle cellStyle = oldCell.getCellStyle();
+        try (XSSFWorkbook xlsToAppendWorkbook = openSampleWorkbook("56295.xlsx");
+             XSSFWorkbook targetWorkbook = new XSSFWorkbook()) {
+            XSSFSheet sheet = xlsToAppendWorkbook.getSheetAt(0);
+            XSSFRow srcRow = sheet.getRow(0);
+            XSSFCell oldCell = srcRow.getCell(0);
+            XSSFCellStyle cellStyle = oldCell.getCellStyle();
 
-        checkStyle(cellStyle);
+            checkStyle(cellStyle);
 
 //        StylesTable table = xlsToAppendWorkbook.getStylesSource();
 //        List<XSSFCellFill> fills = table.getFills();
@@ -2287,33 +2244,25 @@ public final class TestXSSFBugs extends
 //        for(XSSFCellFill fill : fills) {
 //        	System.out.println("Fill: " + fill.getFillBackgroundColor() + "/" + fill.getFillForegroundColor());
 //        }
-        xlsToAppendWorkbook.close();
-
-        XSSFWorkbook targetWorkbook = new XSSFWorkbook();
-        XSSFSheet newSheet = targetWorkbook.createSheet(sheet.getSheetName());
-        XSSFRow destRow = newSheet.createRow(0);
-        XSSFCell newCell = destRow.createCell(0);
-
-        //newCell.getCellStyle().cloneStyleFrom(cellStyle);
-        CellStyle newCellStyle = targetWorkbook.createCellStyle();
-        newCellStyle.cloneStyleFrom(cellStyle);
-        newCell.setCellStyle(newCellStyle);
-        checkStyle(newCell.getCellStyle());
-        newCell.setCellValue(oldCell.getStringCellValue());
-
-//        OutputStream os = new FileOutputStream("output.xlsm");
-//        try {
-//        	targetWorkbook.write(os);
-//        } finally {
-//        	os.close();
-//        }
+            xlsToAppendWorkbook.close();
 
-        XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(targetWorkbook);
-        XSSFCellStyle styleBack = wbBack.getSheetAt(0).getRow(0).getCell(0).getCellStyle();
-        checkStyle(styleBack);
+            XSSFSheet newSheet = targetWorkbook.createSheet(sheet.getSheetName());
+            XSSFRow destRow = newSheet.createRow(0);
+            XSSFCell newCell = destRow.createCell(0);
+
+            //newCell.getCellStyle().cloneStyleFrom(cellStyle);
+            CellStyle newCellStyle = targetWorkbook.createCellStyle();
+            newCellStyle.cloneStyleFrom(cellStyle);
+            newCell.setCellStyle(newCellStyle);
+            checkStyle(newCell.getCellStyle());
+            newCell.setCellValue(oldCell.getStringCellValue());
+
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(targetWorkbook)) {
+                XSSFCellStyle styleBack = wbBack.getSheetAt(0).getRow(0).getCell(0).getCellStyle();
+                checkStyle(styleBack);
 
-        targetWorkbook.close();
-        wbBack.close();
+            }
+        }
     }
 
     /**
@@ -2323,27 +2272,25 @@ public final class TestXSSFBugs extends
      */
     @Test
     void testBug57826() throws IOException {
-        XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("57826.xlsx");
-
-        assertTrue(workbook.getNumberOfSheets() >= 1, "no sheets in workbook");
-        XSSFSheet sheet = workbook.getSheetAt(0);
+        try (XSSFWorkbook workbook = openSampleWorkbook("57826.xlsx")) {
+            assertTrue(workbook.getNumberOfSheets() >= 1, "no sheets in workbook");
+            XSSFSheet sheet = workbook.getSheetAt(0);
 
-        XSSFDrawing drawing = sheet.getDrawingPatriarch();
-        assertNotNull(drawing);
+            XSSFDrawing drawing = sheet.getDrawingPatriarch();
+            assertNotNull(drawing);
 
-        List<XSSFShape> shapes = drawing.getShapes();
-        assertEquals(1, shapes.size());
-        assertTrue(shapes.get(0) instanceof XSSFSimpleShape);
+            List<XSSFShape> shapes = drawing.getShapes();
+            assertEquals(1, shapes.size());
+            assertTrue(shapes.get(0) instanceof XSSFSimpleShape);
 
-        XSSFSimpleShape shape = (XSSFSimpleShape) shapes.get(0);
+            XSSFSimpleShape shape = (XSSFSimpleShape) shapes.get(0);
 
-        // Used to throw a NPE
-        String text = shape.getText();
+            // Used to throw a NPE
+            String text = shape.getText();
 
-        // No bulleting info included
-        assertEquals("test ok", text);
-
-        workbook.close();
+            // No bulleting info included
+            assertEquals("test ok", text);
+        }
     }
 
     private void checkStyle(XSSFCellStyle cellStyle) {
@@ -2363,20 +2310,19 @@ public final class TestXSSFBugs extends
 
     @Test
     void bug57642() throws IOException {
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet s = wb.createSheet("TestSheet");
-        XSSFCell c = s.createRow(0).createCell(0);
-        c.setCellFormula("ISERROR(TestSheet!A1)");
-        c = s.createRow(1).createCell(1);
-        c.setCellFormula("ISERROR(B2)");
-
-        wb.setSheetName(0, "CSN");
-        c = s.getRow(0).getCell(0);
-        assertEquals("ISERROR(CSN!A1)", c.getCellFormula());
-        c = s.getRow(1).getCell(1);
-        assertEquals("ISERROR(B2)", c.getCellFormula());
-
-        wb.close();
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            XSSFSheet s = wb.createSheet("TestSheet");
+            XSSFCell c = s.createRow(0).createCell(0);
+            c.setCellFormula("ISERROR(TestSheet!A1)");
+            c = s.createRow(1).createCell(1);
+            c.setCellFormula("ISERROR(B2)");
+
+            wb.setSheetName(0, "CSN");
+            c = s.getRow(0).getCell(0);
+            assertEquals("ISERROR(CSN!A1)", c.getCellFormula());
+            c = s.getRow(1).getCell(1);
+            assertEquals("ISERROR(B2)", c.getCellFormula());
+        }
     }
 
     /**
@@ -2386,47 +2332,42 @@ public final class TestXSSFBugs extends
     @Test
     void bug57880() throws IOException {
         int numStyles = 33000;
-        XSSFWorkbook wb = new XSSFWorkbook();
-        for (int i = 1; i < numStyles; i++) {
-            // Create a style and use it
-            XSSFCellStyle style = wb.createCellStyle();
-            assertEquals(i, style.getUIndex());
-        }
-        assertEquals(numStyles, wb.getNumCellStyles());
-
-        // avoid OOM in Gump run
-        File file = XSSFTestDataSamples.writeOutAndClose(wb, "bug57880");
-        //noinspection UnusedAssignment
-        wb = null;
-        // Garbage collection may happen here
+        File file;
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            for (int i = 1; i < numStyles; i++) {
+                // Create a style and use it
+                XSSFCellStyle style = wb.createCellStyle();
+                assertEquals(i, style.getUIndex());
+            }
+            assertEquals(numStyles, wb.getNumCellStyles());
+
+            // avoid OOM in Gump run
+            file = XSSFTestDataSamples.writeOutAndClose(wb, "bug57880");
+        }
 
         // avoid zip bomb detection
         double ratio = ZipSecureFile.getMinInflateRatio();
         ZipSecureFile.setMinInflateRatio(0.00005);
-        wb = XSSFTestDataSamples.readBackAndDelete(file);
-        ZipSecureFile.setMinInflateRatio(ratio);
+        try (XSSFWorkbook wb = XSSFTestDataSamples.readBackAndDelete(file)) {
+            ZipSecureFile.setMinInflateRatio(ratio);
 
-        //Assume identical cell styles aren't consolidated
-        //If XSSFWorkbooks ever implicitly optimize/consolidate cell styles (such as when the workbook is written to disk)
-        //then this unit test should be updated
-        assertEquals(numStyles, wb.getNumCellStyles());
-        for (int i = 1; i < numStyles; i++) {
-            XSSFCellStyle style = wb.getCellStyleAt(i);
-            assertNotNull(style);
-            assertEquals(i, style.getUIndex());
+            //Assume identical cell styles aren't consolidated
+            //If XSSFWorkbooks ever implicitly optimize/consolidate cell styles (such as when the workbook is written to disk)
+            //then this unit test should be updated
+            assertEquals(numStyles, wb.getNumCellStyles());
+            for (int i = 1; i < numStyles; i++) {
+                XSSFCellStyle style = wb.getCellStyleAt(i);
+                assertNotNull(style);
+                assertEquals(i, style.getUIndex());
+            }
         }
-        wb.close();
     }
 
 
-    @Test
-    void test56574() throws IOException {
-        runTest56574(false);
-        runTest56574(true);
-    }
-
-    private void runTest56574(boolean createRow) throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56574.xlsx")) {
+    @ParameterizedTest
+    @ValueSource(booleans = { false, true})
+    void test56574(boolean createRow) throws IOException {
+        try (XSSFWorkbook wb = openSampleWorkbook("56574.xlsx")) {
 
             Sheet sheet = wb.getSheet("Func");
             assertNotNull(sheet);
@@ -2475,14 +2416,13 @@ public final class TestXSSFBugs extends
             CalculationChain chain = wb.getCalculationChain();
             checkCellsAreGone(chain);
 
-            XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
-            Sheet sheetBack = wbBack.getSheet("Func");
-            assertNotNull(sheetBack);
+            try (XSSFWorkbook wbBack = writeOutAndReadBack(wb)) {
+                Sheet sheetBack = wbBack.getSheet("Func");
+                assertNotNull(sheetBack);
 
-            chain = wbBack.getCalculationChain();
-            checkCellsAreGone(chain);
-
-            wbBack.close();
+                chain = wbBack.getCalculationChain();
+                checkCellsAreGone(chain);
+            }
         }
     }
 
@@ -2502,14 +2442,14 @@ public final class TestXSSFBugs extends
      */
     @Test
     void bug57181() throws IOException {
-        try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57181.xlsm")) {
+        try (XSSFWorkbook wb = openSampleWorkbook("57181.xlsm")) {
             assertEquals(9, wb.getNumberOfSheets());
         }
     }
 
     @Test
     void bug52111() throws IOException {
-        try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("Intersection-52111-xssf.xlsx")) {
+        try (Workbook wb = openSampleWorkbook("Intersection-52111-xssf.xlsx")) {
             Sheet s = wb.getSheetAt(0);
             assertFormula(wb, s.getRow(2).getCell(0), "(C2:D3 D3:E4)", "4.0");
             assertFormula(wb, s.getRow(6).getCell(0), "Tabelle2!E:E Tabelle2!11:11", "5.0");
@@ -2519,7 +2459,7 @@ public final class TestXSSFBugs extends
 
     @Test
     void test48962() throws IOException {

[... 843 lines stripped ...]


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org