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