package org.apache.poi;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
-import junit.framework.TestCase;
-
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
import org.apache.poi.util.PackageHelper;
import org.apache.poi.util.TempFile;
+import org.junit.Test;
/**
* Test recursive read and write of OPC packages
*/
-public final class TestPOIXMLDocument extends TestCase {
+public final class TestPOIXMLDocument {
private static class OPCParser extends POIXMLDocument {
public TestFactory() {
//
}
+
@Override
public POIXMLDocumentPart createDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part){
return new POIXMLDocumentPart(part, rel);
public POIXMLDocumentPart newDocumentPart(POIXMLRelation descriptor){
throw new RuntimeException("not supported");
}
-
}
/**
* Recursively traverse a OOXML document and assert that same logical parts have the same physical instances
*/
private static void traverse(POIXMLDocumentPart part, HashMap<String,POIXMLDocumentPart> context) throws IOException{
- context.put(part.getPackageRelationship().getTargetURI().toString(), part);
+ assertEquals(part.getPackageRelationship().getTargetURI().toString(), part.getPackagePart().getPartName().getName());
+
+ context.put(part.getPackagePart().getPartName().getName(), part);
for(POIXMLDocumentPart p : part.getRelations()){
assertNotNull(p.toString());
- String uri = p.getPackageRelationship().getTargetURI().toString();
+ String uri = p.getPackagePart().getPartName().getURI().toString();
+ assertEquals(uri, p.getPackageRelationship().getTargetURI().toString());
if (!context.containsKey(uri)) {
traverse(p, context);
} else {
FileOutputStream out = new FileOutputStream(tmp);
doc.write(out);
out.close();
+ doc.close();
+ @SuppressWarnings("resource")
OPCPackage pkg2 = OPCPackage.open(tmp.getAbsolutePath());
try {
doc = new OPCParser(pkg1);
assertEquals(p1.getPartName(), p2.getPartName());
}
} finally {
- pkg2.close();
+ doc.close();
}
}
+ @Test
public void testPPTX() throws Exception {
- assertReadWrite(
- PackageHelper.open(POIDataSamples.getSlideShowInstance().openResourceAsStream("PPTWithAttachments.pptm"))
- );
+ POIDataSamples pds = POIDataSamples.getSlideShowInstance();
+ assertReadWrite(PackageHelper.open(pds.openResourceAsStream("PPTWithAttachments.pptm")));
}
+ @Test
public void testXLSX() throws Exception {
- assertReadWrite(
- PackageHelper.open(POIDataSamples.getSpreadSheetInstance().openResourceAsStream("ExcelWithAttachments.xlsm"))
- );
+ POIDataSamples pds = POIDataSamples.getSpreadSheetInstance();
+ assertReadWrite(PackageHelper.open(pds.openResourceAsStream("ExcelWithAttachments.xlsm")));
}
+ @Test
public void testDOCX() throws Exception {
- assertReadWrite(
- PackageHelper.open(POIDataSamples.getDocumentInstance().openResourceAsStream("WordWithAttachments.docx"))
- );
+ POIDataSamples pds = POIDataSamples.getDocumentInstance();
+ assertReadWrite(PackageHelper.open(pds.openResourceAsStream("WordWithAttachments.docx")));
}
+ @Test
public void testRelationOrder() throws Exception {
- OPCPackage pkg = PackageHelper.open(POIDataSamples.getDocumentInstance().openResourceAsStream("WordWithAttachments.docx"));
+ POIDataSamples pds = POIDataSamples.getDocumentInstance();
+ @SuppressWarnings("resource")
+ OPCPackage pkg = PackageHelper.open(pds.openResourceAsStream("WordWithAttachments.docx"));
OPCParser doc = new OPCParser(pkg);
try {
doc.parse(new TestFactory());
}
}
+ @Test
public void testCommitNullPart() throws IOException, InvalidFormatException {
POIXMLDocumentPart part = new POIXMLDocumentPart();
part.prepareForCommit();
//part.getTargetPart(null);
}
+ @Test
public void testVSDX() throws Exception {
- OPCPackage open = PackageHelper.open(POIDataSamples.getDiagramInstance().openResourceAsStream("test.vsdx"));
-
+ POIDataSamples pds = POIDataSamples.getDiagramInstance();
+ @SuppressWarnings("resource")
+ OPCPackage open = PackageHelper.open(pds.openResourceAsStream("test.vsdx"));
POIXMLDocument part = new OPCParser(open, PackageRelationshipTypes.VISIO_CORE_DOCUMENT);
assertNotNull(part);
assertEquals(0, part.getRelationCounter());
+ part.close();
}
- public void testVSDXPart() throws Exception {
- OPCPackage open = PackageHelper.open(POIDataSamples.getDiagramInstance().openResourceAsStream("test.vsdx"));
+ @Test
+ public void testVSDXPart() throws IOException {
+ POIDataSamples pds = POIDataSamples.getDiagramInstance();
+ OPCPackage open = PackageHelper.open(pds.openResourceAsStream("test.vsdx"));
POIXMLDocumentPart part = new POIXMLDocumentPart(open, PackageRelationshipTypes.VISIO_CORE_DOCUMENT);
assertNotNull(part);
assertEquals(0, part.getRelationCounter());
+
+ open.close();
}
- public void testInvalidCoreRel() throws Exception {
- OPCPackage open = PackageHelper.open(POIDataSamples.getDiagramInstance().openResourceAsStream("test.vsdx"));
+ @Test(expected=POIXMLException.class)
+ public void testInvalidCoreRel() throws IOException {
+ POIDataSamples pds = POIDataSamples.getDiagramInstance();
+ OPCPackage open = PackageHelper.open(pds.openResourceAsStream("test.vsdx"));
try {
new POIXMLDocumentPart(open, "somethingillegal");
- fail("Unknown core ref will throw exception");
- } catch (POIXMLException e) {
- // expected here
+ } finally {
+ open.close();
}
}
}
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
+import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URI;
+import java.util.Collection;
import java.util.List;
import javax.imageio.ImageIO;
+import org.apache.poi.POIDataSamples;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
+import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.DrawingParagraph;
import org.apache.poi.xslf.usermodel.DrawingTextBody;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
// Check the relations on it
// Note - rId3 is a self reference
XSLFSlide slide0 = ss1.getSlides().get(0);
-
- assertEquals("/ppt/slides/slide1.xml", slide0.getPackagePart().getPartName().toString());
- assertEquals("/ppt/slideLayouts/slideLayout12.xml", slide0.getRelationById("rId1").getPackageRelationship().getTargetURI().toString());
- assertEquals("/ppt/notesSlides/notesSlide1.xml", slide0.getRelationById("rId2").getPackageRelationship().getTargetURI().toString());
- assertEquals("/ppt/slides/slide1.xml", slide0.getRelationById("rId3").getPackageRelationship().getTargetURI().toString());
- assertEquals("/ppt/media/image1.png", slide0.getRelationById("rId4").getPackageRelationship().getTargetURI().toString());
+
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout12.xml", "rId1");
+ assertRelation(slide0, "/ppt/notesSlides/notesSlide1.xml", "rId2");
+ assertRelation(slide0, "/ppt/slides/slide1.xml", "rId3");
+ assertRelation(slide0, "/ppt/media/image1.png", "rId4");
// Save and re-load
XMLSlideShow ss2 = XSLFTestDataSamples.writeOutAndReadBack(ss1);
assertEquals(1, ss2.getSlides().size());
slide0 = ss2.getSlides().get(0);
- assertEquals("/ppt/slides/slide1.xml", slide0.getPackagePart().getPartName().toString());
- assertEquals("/ppt/slideLayouts/slideLayout12.xml", slide0.getRelationById("rId1").getPackageRelationship().getTargetURI().toString());
- assertEquals("/ppt/notesSlides/notesSlide1.xml", slide0.getRelationById("rId2").getPackageRelationship().getTargetURI().toString());
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout12.xml", "rId1");
+ assertRelation(slide0, "/ppt/notesSlides/notesSlide1.xml", "rId2");
// TODO Fix this
- assertEquals("/ppt/slides/slide1.xml", slide0.getRelationById("rId3").getPackageRelationship().getTargetURI().toString());
- assertEquals("/ppt/media/image1.png", slide0.getRelationById("rId4").getPackageRelationship().getTargetURI().toString());
+ assertRelation(slide0, "/ppt/slides/slide1.xml", "rId3");
+ assertRelation(slide0, "/ppt/media/image1.png", "rId4");
ss2.close();
}
+ private static void assertRelation(XSLFSlide slide, String exp, String rId) {
+ POIXMLDocumentPart pd = (rId != null) ? slide.getRelationById(rId) : slide;
+ assertEquals(exp, pd.getPackagePart().getPartName().getName());
+ }
+
/**
* Slide relations with anchors in them
*/
// Check the text, to see we got them in order
slide = ss.getSlides().get(0);
- assertContains("POI cannot read this", getSlideText(slide));
+ assertContains(getSlideText(slide), "POI cannot read this");
slide = ss.getSlides().get(1);
- assertContains("POI can read this", getSlideText(slide));
- assertContains("Has a relationship to another slide", getSlideText(slide));
+ assertContains(getSlideText(slide), "POI can read this");
+ assertContains(getSlideText(slide), "Has a relationship to another slide");
slide = ss.getSlides().get(2);
- assertContains("POI can read this", getSlideText(slide));
+ assertContains(getSlideText(slide), "POI can read this");
slide = ss.getSlides().get(3);
- assertContains("POI can read this", getSlideText(slide));
+ assertContains(getSlideText(slide), "POI can read this");
ss.close();
}
ss.close();
}
+
+ @Test
+ public void testLayout() throws IOException {
+ XMLSlideShow ppt = new XMLSlideShow();
+ InputStream picIn = POIDataSamples.getSlideShowInstance().openResourceAsStream("clock.jpg");
+ XSLFPictureData pd = ppt.addPicture(IOUtils.toByteArray(picIn), PictureType.JPEG);
+ picIn.close();
+ XSLFSlide slide = ppt.createSlide();
+ XSLFPictureShape ps = slide.createPicture(pd);
+ ps.setAnchor(new Rectangle(100, 100, 100, 100));
+ FileOutputStream fos = new FileOutputStream("picbla.pptx");
+ ppt.write(fos);
+ fos.close();
+ ppt.close();
+ }
}
for(Row r : s) {
for(Cell c : r) {
if(c.getCellType() == Cell.CELL_TYPE_FORMULA) {
- String formula = c.getCellFormula();
- CellValue cv;
- try {
- cv = eval.evaluate(c);
- } catch (Exception e) {
- throw new RuntimeException("Can't evaluate formula: " + formula, e);
- }
+ CellValue cv = eval.evaluate(c);
if(cv.getCellType() == Cell.CELL_TYPE_NUMERIC) {
// assert that the calculated value agrees with
// the cached formula result calculated by Excel
+ String formula = c.getCellFormula();
double cachedFormulaResult = c.getNumericCellValue();
double evaluatedFormulaResult = cv.getNumberValue();
- assertEquals(c.getCellFormula(), cachedFormulaResult, evaluatedFormulaResult, 1E-7);
+ assertEquals(formula, cachedFormulaResult, evaluatedFormulaResult, 1E-7);
}
}
}
}
}
-// OutputStream out = new FileOutputStream("/tmp/56467.xls");
-// try {
-// wb.write(out);
-// } finally {
-// out.close();
-// }
} finally {
wb.close();
}
package org.apache.poi.xssf.usermodel;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
import java.awt.Color;
import java.io.IOException;
import java.util.List;
-import junit.framework.TestCase;
-
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.FontUnderline;
import org.apache.poi.xssf.XSSFTestDataSamples;
+import org.junit.Test;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTDrawing;
-/**
- * @author Yegor Kozlov
- */
-public class TestXSSFDrawing extends TestCase {
- public void testRead() throws IOException{
+public class TestXSSFDrawing {
+ @Test
+ public void testRead() throws IOException {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithDrawing.xlsx");
XSSFSheet sheet = wb.getSheetAt(0);
//the sheet has one relationship and it is XSSFDrawing
for(XSSFShape sh : shapes) assertNotNull(sh.getAnchor());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
- public void testNew() throws Exception {
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet();
+ @Test
+ public void testNew() throws IOException {
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet = wb1.createSheet();
//multiple calls of createDrawingPatriarch should return the same instance of XSSFDrawing
XSSFDrawing dr1 = sheet.createDrawingPatriarch();
XSSFDrawing dr2 = sheet.createDrawingPatriarch();
XSSFTextBox c4 = drawing.createTextbox(new XSSFClientAnchor(0,0,0,0,4,4,5,6));
XSSFRichTextString rt = new XSSFRichTextString("Test String");
- rt.applyFont(0, 5, wb.createFont());
- rt.applyFont(5, 6, wb.createFont());
+ rt.applyFont(0, 5, wb1.createFont());
+ rt.applyFont(5, 6, wb1.createFont());
c4.setText(rt);
c4.setNoFill(true);
assertTrue(shapes.get(3) instanceof XSSFSimpleShape); //
// Save and re-load it
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
// Check
dr1 = sheet.createDrawingPatriarch();
assertTrue(xml.contains("xmlns:xdr=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\""));
assertTrue(xml.contains("xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\""));
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb2);
+ wb2.close();
}
+ @Test
public void testMultipleDrawings() throws IOException{
XSSFWorkbook wb = new XSSFWorkbook();
for (int i = 0; i < 3; i++) {
OPCPackage pkg = wb.getPackage();
try {
assertEquals(3, pkg.getPartsByContentType(XSSFRelation.DRAWINGS.getContentType()).size());
-
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
} finally {
pkg.close();
}
+ wb.close();
}
+ @Test
public void testClone() throws Exception{
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithDrawing.xlsx");
XSSFSheet sheet1 = wb.getSheetAt(0);
assertEquals(sh1.getShapeProperties().toString(), sh2.getShapeProperties().toString());
}
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
*
* See Bugzilla 52219.
*/
- public void testRichText(){
+ @Test
+ public void testRichText() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
new byte[]{0, (byte)128, (byte)128} ,
rPr.getSolidFill().getSrgbClr().getVal());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* test that anchor is not null when reading shapes from existing drawings
*/
- public void testReadAnchors(){
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet();
+ @Test
+ public void testReadAnchors() throws IOException {
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet = wb1.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor1 = new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 3, 4);
XSSFShape shape2 = drawing.createTextbox(anchor2);
assertNotNull(shape2);
- int pictureIndex= wb.addPicture(new byte[]{}, XSSFWorkbook.PICTURE_TYPE_PNG);
+ int pictureIndex= wb1.addPicture(new byte[]{}, XSSFWorkbook.PICTURE_TYPE_PNG);
XSSFClientAnchor anchor3 = new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 3, 6);
XSSFShape shape3 = drawing.createPicture(anchor3, pictureIndex);
assertNotNull(shape3);
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
drawing = sheet.createDrawingPatriarch();
List<XSSFShape> shapes = drawing.getShapes();
assertEquals(shapes.get(0).getAnchor(), anchor1);
assertEquals(shapes.get(1).getAnchor(), anchor2);
assertEquals(shapes.get(2).getAnchor(), anchor3);
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb2);
+ wb2.close();
}
/**
*
* See Bugzilla 54969.
*/
- public void testRichTextFontAndColor() {
+ @Test
+ public void testRichTextFontAndColor() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
assertArrayEquals(
new byte[]{0, (byte)128, (byte)128} ,
rPr.getSolidFill().getSrgbClr().getVal());
-
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test setText single paragraph to ensure backwards compatibility
*/
- public void testSetTextSingleParagraph() {
+ @Test
+ public void testSetTextSingleParagraph() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
new int[] { 0, 255, 255 } ,
new int[] { clr.getRed(), clr.getGreen(), clr.getBlue() });
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test addNewTextParagraph
*/
- public void testAddNewTextParagraph() {
+ @Test
+ public void testAddNewTextParagraph() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
assertEquals(1, runs.size());
assertEquals("Line 1", runs.get(0).getText());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test addNewTextParagraph using RichTextString
*/
- public void testAddNewTextParagraphWithRTS() {
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet();
+ @Test
+ public void testAddNewTextParagraphWithRTS() throws IOException {
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet = wb1.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFTextBox shape = drawing.createTextbox(new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 3, 4));
XSSFRichTextString rt = new XSSFRichTextString("Test Rich Text String");
- XSSFFont font = wb.createFont();
+ XSSFFont font = wb1.createFont();
font.setColor(new XSSFColor(new Color(0, 255, 255)));
font.setFontName("Arial");
rt.applyFont(font);
- XSSFFont midfont = wb.createFont();
+ XSSFFont midfont = wb1.createFont();
midfont.setColor(new XSSFColor(new Color(0, 255, 0)));
rt.applyFont(5, 14, midfont); // set the text "Rich Text" to be green and the default font
XSSFTextParagraph para = shape.addNewTextParagraph(rt);
// Save and re-load it
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
// Check
drawing = sheet.createDrawingPatriarch();
new int[] { 0, 255, 255 } ,
new int[] { clr.getRed(), clr.getGreen(), clr.getBlue() });
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb2);
+ wb2.close();
}
/**
* Test add multiple paragraphs and retrieve text
*/
- public void testAddMultipleParagraphs() {
+ @Test
+ public void testAddMultipleParagraphs() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
assertEquals(4, paras.size()); // this should be 4 as XSSFSimpleShape creates a default paragraph (no text), and then we added 3 paragraphs
assertEquals("Line 1\nLine 2\nLine 3", shape.getText());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test setting the text, then adding multiple paragraphs and retrieve text
*/
- public void testSetAddMultipleParagraphs() {
+ @Test
+ public void testSetAddMultipleParagraphs() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
assertEquals(3, paras.size()); // this should be 3 as we overwrote the default paragraph with setText, then added 2 new paragraphs
assertEquals("Line 1\nLine 2\nLine 3", shape.getText());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test reading text from a textbox in an existing file
*/
- public void testReadTextBox(){
+ @Test
+ public void testReadTextBox() throws IOException {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithDrawing.xlsx");
XSSFSheet sheet = wb.getSheetAt(0);
//the sheet has one relationship and it is XSSFDrawing
XSSFSimpleShape textbox = (XSSFSimpleShape) shapes.get(4);
assertEquals("Sheet with various pictures\n(jpeg, png, wmf, emf and pict)", textbox.getText());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test reading multiple paragraphs from a textbox in an existing file
*/
- public void testReadTextBoxParagraphs(){
+ @Test
+ public void testReadTextBoxParagraphs() throws IOException {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithTextBox.xlsx");
XSSFSheet sheet = wb.getSheetAt(0);
//the sheet has one relationship and it is XSSFDrawing
new int[] { 0, 0, 255 } ,
new int[] { clr.getRed(), clr.getGreen(), clr.getBlue() });
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
/**
* Test adding and reading back paragraphs as bullet points
*/
- public void testAddBulletParagraphs() {
+ @Test
+ public void testAddBulletParagraphs() throws IOException {
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet();
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet = wb1.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFTextBox shape = drawing.createTextbox(new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 10, 20));
para.setBullet(ListAutoNumber.ARABIC_PERIOD);
// Save and re-load it
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
// Check
drawing = sheet.createDrawingPatriarch();
assertEquals(builder.toString(), sshape.getText());
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb2);
+ wb2.close();
}
/**
* Test reading bullet numbering from a textbox in an existing file
*/
- public void testReadTextBox2(){
+ @Test
+ public void testReadTextBox2() throws IOException {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithTextBox2.xlsx");
XSSFSheet sheet = wb.getSheetAt(0);
XSSFDrawing drawing = sheet.createDrawingPatriarch();
sb.append("\t\n\t\n\t\n\t");
assertEquals(sb.toString(), extracted);
-
- assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
+ checkRewrite(wb);
+ wb.close();
}
- public void testXSSFSimpleShapeCausesNPE56514() throws Exception {
- XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56514.xlsx");
- XSSFSheet sheet = wb.getSheetAt(0);
+ @Test
+ public void testXSSFSimpleShapeCausesNPE56514() throws IOException {
+ XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("56514.xlsx");
+ XSSFSheet sheet = wb1.getSheetAt(0);
XSSFDrawing drawing = sheet.createDrawingPatriarch();
List<XSSFShape> shapes = drawing.getShapes();
assertEquals(4, shapes.size());
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
+ drawing = sheet.createDrawingPatriarch();
shapes = drawing.getShapes();
assertEquals(4, shapes.size());
+ wb2.close();
-/* OutputStream stream = new FileOutputStream(new File("C:\\temp\\56514.xlsx"));
- try {
- wb.write(stream);
- } finally {
- stream.close();
- }*/
}
- public void testBug56835CellComment() throws Exception {
+ @Test(expected=IllegalArgumentException.class)
+ public void testBug56835CellComment() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
+ XSSFSheet sheet = wb.createSheet();
+ XSSFDrawing drawing = sheet.createDrawingPatriarch();
+
+ // first comment works
+ ClientAnchor anchor = new XSSFClientAnchor(1, 1, 2, 2, 3, 3, 4, 4);
+ XSSFComment comment = drawing.createCellComment(anchor);
+ assertNotNull(comment);
+
+ // Should fail if we try to add the same comment for the same cell
try {
- XSSFSheet sheet = wb.createSheet();
- XSSFDrawing drawing = sheet.createDrawingPatriarch();
-
- // first comment works
- ClientAnchor anchor = new XSSFClientAnchor(1, 1, 2, 2, 3, 3, 4, 4);
- XSSFComment comment = drawing.createCellComment(anchor);
- assertNotNull(comment);
-
- try {
- drawing.createCellComment(anchor);
- fail("Should fail if we try to add the same comment for the same cell");
- } catch (IllegalArgumentException e) {
- // expected
- }
+ drawing.createCellComment(anchor);
} finally {
wb.close();
}
}
+
+ private static void checkRewrite(XSSFWorkbook wb) throws IOException {
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb);
+ assertNotNull(wb2);
+ wb2.close();
+ }
}
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPane;
-@SuppressWarnings("resource")
public final class TestXSSFSheet extends BaseTestSheet {
public TestXSSFSheet() {
*/
@Test
public void setColumnGroupCollapsed() throws IOException {
- Workbook wb = new XSSFWorkbook();
- XSSFSheet sheet1 =(XSSFSheet) wb.createSheet();
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet1 = wb1.createSheet();
CTCols cols=sheet1.getCTWorksheet().getColsArray(0);
assertEquals(0,cols.sizeOfColArray());
// write out and give back
// Save and re-load
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet1 = (XSSFSheet)wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet1 = wb2.getSheetAt(0);
assertEquals(6,cols.sizeOfColArray());
assertEquals(false,cols.getColArray(0).isSetHidden());
assertEquals(14, cols.getColArray(5).getMin()); // 1 based
assertEquals(14, cols.getColArray(5).getMax()); // 1 based
- wb.close();
+ wb2.close();
}
/**
*/
@Test
public void setRowGroupCollapsed() throws IOException {
- Workbook wb = new XSSFWorkbook();
- XSSFSheet sheet1 = (XSSFSheet)wb.createSheet();
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet1 = wb1.createSheet();
sheet1.groupRow( 5, 14 );
sheet1.groupRow( 7, 14 );
// Save and re-load
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet1 = (XSSFSheet)wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet1 = wb2.getSheetAt(0);
assertFalse(sheet1.getRow(6).getCTRow().isSetCollapsed());
assertFalse(sheet1.getRow(6).getCTRow().isSetHidden());
assertFalse(sheet1.getRow(18).getCTRow().isSetCollapsed());
assertFalse(sheet1.getRow(18).getCTRow().isSetHidden());
- wb.close();
+ wb2.close();
}
/**
*/
@Test
public void bug47862() throws IOException {
- XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47862.xlsx");
- XSSFSheet sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("47862.xlsx");
+ XSSFSheet sheet = wb1.getSheetAt(0);
CTCols cols = sheet.getCTWorksheet().getColsArray(0);
//<cols>
// <col min="1" max="5" width="15.77734375" customWidth="1"/>
}
//serialize and check again
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
cols = sheet.getCTWorksheet().getColsArray(0);
assertEquals(5, cols.sizeOfColArray());
for (int i = 0; i < 5; i++) {
assertEquals(cw[i], cols.getColArray(i).getWidth(), 0.0);
}
- wb.close();
+ wb2.close();
}
/**
*/
@Test
public void bug47804() throws IOException {
- XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47804.xlsx");
- XSSFSheet sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("47804.xlsx");
+ XSSFSheet sheet = wb1.getSheetAt(0);
CTCols cols = sheet.getCTWorksheet().getColsArray(0);
assertEquals(2, cols.sizeOfColArray());
CTCol col;
assertEquals(7, col.getMax());
//serialize and check again
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- sheet = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
assertTrue(sheet.isColumnHidden(2));
assertTrue(sheet.isColumnHidden(6));
assertFalse(sheet.isColumnHidden(1));
assertFalse(sheet.isColumnHidden(4));
assertFalse(sheet.isColumnHidden(5));
- wb.close();
+ wb2.close();
}
@Test
public void commentsTable() throws IOException {
- XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFSheet sheet1 = workbook.createSheet();
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet1 = wb1.createSheet();
CommentsTable comment1 = sheet1.getCommentsTable(false);
assertNull(comment1);
comment1 = sheet1.getCommentsTable(true);
assertNotNull(comment1);
- assertEquals("/xl/comments1.xml", comment1.getPackageRelationship().getTargetURI().toString());
+ assertEquals("/xl/comments1.xml", comment1.getPackagePart().getPartName().getName());
assertSame(comment1, sheet1.getCommentsTable(true));
//second sheet
- XSSFSheet sheet2 = workbook.createSheet();
+ XSSFSheet sheet2 = wb1.createSheet();
CommentsTable comment2 = sheet2.getCommentsTable(false);
assertNull(comment2);
assertNotNull(comment2);
assertSame(comment2, sheet2.getCommentsTable(true));
- assertEquals("/xl/comments2.xml", comment2.getPackageRelationship().getTargetURI().toString());
+ assertEquals("/xl/comments2.xml", comment2.getPackagePart().getPartName().getName());
//comment1 and comment2 are different objects
assertNotSame(comment1, comment2);
-
+ wb1.close();
+
//now test against a workbook containing cell comments
- workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
- sheet1 = workbook.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
+ sheet1 = wb2.getSheetAt(0);
comment1 = sheet1.getCommentsTable(true);
assertNotNull(comment1);
- assertEquals("/xl/comments1.xml", comment1.getPackageRelationship().getTargetURI().toString());
+ assertEquals("/xl/comments1.xml", comment1.getPackagePart().getPartName().getName());
assertSame(comment1, sheet1.getCommentsTable(true));
- workbook.close();
+ wb2.close();
}
/**
@Override
@Test
public void createRow() throws IOException {
- XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFSheet sheet = workbook.createSheet();
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet sheet = wb1.createSheet();
CTWorksheet wsh = sheet.getCTWorksheet();
CTSheetData sheetData = wsh.getSheetData();
assertEquals(0, sheetData.sizeOfRowArray());
assertEquals(0, sheetData.getRowArray(1).sizeOfCArray());
assertEquals(0, row2.getPhysicalNumberOfCells());
- workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
- sheet = workbook.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
wsh = sheet.getCTWorksheet();
xrow = sheetData.getRowArray();
assertEquals(3, xrow.length);
assertEquals(2, xrow[2].sizeOfCArray());
assertEquals(3, xrow[2].getR());
- workbook.close();
+ wb2.close();
}
@Test(expected=IllegalArgumentException.class)
@Test
public void protectSheet_lowlevel_2013() throws IOException {
String password = "test";
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet xs = wb.createSheet();
+ XSSFWorkbook wb1 = new XSSFWorkbook();
+ XSSFSheet xs = wb1.createSheet();
xs.setSheetPassword(password, HashAlgorithm.sha384);
- wb = writeOutAndReadBack(wb);
- assertTrue(wb.getSheetAt(0).validateSheetPassword(password));
-
- wb = openSampleWorkbook("workbookProtection-sheet_password-2013.xlsx");
- assertTrue(wb.getSheetAt(0).validateSheetPassword("pwd"));
+ XSSFWorkbook wb2 = writeOutAndReadBack(wb1);
+ wb1.close();
+ assertTrue(wb2.getSheetAt(0).validateSheetPassword(password));
+ wb2.close();
- wb.close();
+ XSSFWorkbook wb3 = openSampleWorkbook("workbookProtection-sheet_password-2013.xlsx");
+ assertTrue(wb3.getSheetAt(0).validateSheetPassword("pwd"));
+ wb3.close();
}
}
private void runGetTopRow(String file, boolean isXSSF, int... topRows) throws IOException {
- final Workbook wb;
- if(isXSSF) {
- wb = XSSFTestDataSamples.openSampleWorkbook(file);
- } else {
- wb = HSSFTestDataSamples.openSampleWorkbook(file);
- }
+ final Workbook wb = (isXSSF)
+ ? XSSFTestDataSamples.openSampleWorkbook(file)
+ : HSSFTestDataSamples.openSampleWorkbook(file);
+
for (int si = 0; si < wb.getNumberOfSheets(); si++) {
Sheet sh = wb.getSheetAt(si);
assertNotNull(sh.getSheetName());
}
// for XSSF also test with SXSSF
- if(isXSSF) {
+ if (isXSSF) {
Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
- try {
- for (int si = 0; si < swb.getNumberOfSheets(); si++) {
- Sheet sh = swb.getSheetAt(si);
- assertNotNull(sh.getSheetName());
- assertEquals("Did not match for sheet " + si, topRows[si], sh.getTopRow());
- }
- } finally {
- swb.close();
+ for (int si = 0; si < swb.getNumberOfSheets(); si++) {
+ Sheet sh = swb.getSheetAt(si);
+ assertNotNull(sh.getSheetName());
+ assertEquals("Did not match for sheet " + si, topRows[si], sh.getTopRow());
}
+ swb.close();
}
+
+ wb.close();
}
private void runGetLeftCol(String file, boolean isXSSF, int... topRows) throws IOException {
- final Workbook wb;
- if(isXSSF) {
- wb = XSSFTestDataSamples.openSampleWorkbook(file);
- } else {
- wb = HSSFTestDataSamples.openSampleWorkbook(file);
- }
+ final Workbook wb = (isXSSF)
+ ? XSSFTestDataSamples.openSampleWorkbook(file)
+ : HSSFTestDataSamples.openSampleWorkbook(file);
+
for (int si = 0; si < wb.getNumberOfSheets(); si++) {
Sheet sh = wb.getSheetAt(si);
assertNotNull(sh.getSheetName());
}
swb.close();
}
+
+ wb.close();
}
@Test
new AreaReference(sheet.getSheetName()+"!A$1:B$2", SpreadsheetVersion.EXCEL2007),
new CellReference("H5"),
sheet2);
+ wb.close();
}
@Test(expected=POIXMLException.class)
XSSFSheet sheet = wb.createSheet();
// Throws exception because we cannot read here
- sheet.onDocumentRead();
+ try {
+ sheet.onDocumentRead();
+ } finally {
+ wb.close();
+ }
}
/**
protected void testCopyOneRow(String copyRowsTestWorkbook) throws IOException {
final double FLOAT_PRECISION = 1e-9;
- final XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook(copyRowsTestWorkbook);
- final XSSFSheet sheet = workbook.getSheetAt(0);
+ final XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook(copyRowsTestWorkbook);
+ final XSSFSheet sheet = wb.getSheetAt(0);
final CellCopyPolicy defaultCopyPolicy = new CellCopyPolicy();
sheet.copyRows(1, 1, 6, defaultCopyPolicy);
// Make sure other rows are blank (off-by-one errors)
assertNull(sheet.getRow(5));
assertNull(sheet.getRow(7));
+
+ wb.close();
}
public void testCopyMultipleRows(String copyRowsTestWorkbook) throws IOException {
final double FLOAT_PRECISION = 1e-9;
- final XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook(copyRowsTestWorkbook);
- final XSSFSheet sheet = workbook.getSheetAt(0);
+ final XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook(copyRowsTestWorkbook);
+ final XSSFSheet sheet = wb.getSheetAt(0);
final CellCopyPolicy defaultCopyPolicy = new CellCopyPolicy();
sheet.copyRows(0, 3, 8, defaultCopyPolicy);
// Array Formula
col++;
cell = CellUtil.getCell(destRow1, col);
- System.out.println("Array formulas currently unsupported");
+ // System.out.println("Array formulas currently unsupported");
/*
// FIXME: Array Formula set with Sheet.setArrayFormula() instead of cell.setFormula()
assertEquals("[Array Formula] N10 cell type", Cell.CELL_TYPE_FORMULA, cell.getCellType());
// Make sure other rows are blank (off-by-one errors)
assertNull("Off-by-one lower edge case", sheet.getRow(7)); //one row above destHeaderRow
assertNull("Off-by-one upper edge case", sheet.getRow(12)); //one row below destRow3
+
+ wb.close();
}
@Test