/** Test setting the text, then adding multiple paragraphs and retrieve text */ public void testSetAddMultipleParagraphs() { XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); XSSFDrawing drawing = sheet.createDrawingPatriarch(); XSSFTextBox shape = drawing.createTextbox(new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 3, 4)); shape.setText("Line 1"); XSSFTextParagraph para = shape.addNewTextParagraph(); para.addNewTextRun().setText("Line 2"); para = shape.addNewTextParagraph(); para.addNewTextRun().setText("Line 3"); List<XSSFTextParagraph> paras = shape.getTextParagraphs(); 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)); }
/** Test addNewTextParagraph */ public void testAddNewTextParagraph() { XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); XSSFDrawing drawing = sheet.createDrawingPatriarch(); XSSFTextBox shape = drawing.createTextbox(new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 3, 4)); XSSFTextParagraph para = shape.addNewTextParagraph(); para.addNewTextRun().setText("Line 1"); List<XSSFTextParagraph> paras = shape.getTextParagraphs(); assertEquals( 2, paras .size()); // this should be 2 as XSSFSimpleShape creates a default paragraph (no text), // and then we add a string to that. List<XSSFTextRun> runs = para.getTextRuns(); assertEquals(1, runs.size()); assertEquals("Line 1", runs.get(0).getText()); assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb)); }
/** Test adding and reading back paragraphs as bullet points */ public void testAddBulletParagraphs() { XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); XSSFDrawing drawing = sheet.createDrawingPatriarch(); XSSFTextBox shape = drawing.createTextbox(new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 10, 20)); String paraString1 = "A normal paragraph"; String paraString2 = "First bullet"; String paraString3 = "Second bullet (level 1)"; String paraString4 = "Third bullet"; String paraString5 = "Another normal paragraph"; String paraString6 = "First numbered bullet"; String paraString7 = "Second bullet (level 1)"; String paraString8 = "Third bullet (level 1)"; String paraString9 = "Fourth bullet (level 1)"; String paraString10 = "Fifth Bullet"; XSSFTextParagraph para = shape.addNewTextParagraph(paraString1); para = shape.addNewTextParagraph(paraString2); para.setBullet(true); para = shape.addNewTextParagraph(paraString3); para.setBullet(true); para.setLevel(1); para = shape.addNewTextParagraph(paraString4); para.setBullet(true); para = shape.addNewTextParagraph(paraString5); para = shape.addNewTextParagraph(paraString6); para.setBullet(ListAutoNumber.ARABIC_PERIOD); para = shape.addNewTextParagraph(paraString7); para.setBullet(ListAutoNumber.ARABIC_PERIOD, 3); para.setLevel(1); para = shape.addNewTextParagraph(paraString8); para.setBullet(ListAutoNumber.ARABIC_PERIOD, 3); para.setLevel(1); para = shape.addNewTextParagraph(""); para.setBullet(ListAutoNumber.ARABIC_PERIOD, 3); para.setLevel(1); para = shape.addNewTextParagraph(paraString9); para.setBullet(ListAutoNumber.ARABIC_PERIOD, 3); para.setLevel(1); para = shape.addNewTextParagraph(paraString10); para.setBullet(ListAutoNumber.ARABIC_PERIOD); // Save and re-load it wb = XSSFTestDataSamples.writeOutAndReadBack(wb); sheet = wb.getSheetAt(0); // Check drawing = sheet.createDrawingPatriarch(); List<XSSFShape> shapes = drawing.getShapes(); assertEquals(1, shapes.size()); assertTrue(shapes.get(0) instanceof XSSFSimpleShape); XSSFSimpleShape sshape = (XSSFSimpleShape) shapes.get(0); List<XSSFTextParagraph> paras = sshape.getTextParagraphs(); assertEquals( 12, paras .size()); // this should be 12 as XSSFSimpleShape creates a default paragraph (no text), // and then we added to that StringBuilder builder = new StringBuilder(); builder.append(paraString1); builder.append("\n"); builder.append("\u2022 "); builder.append(paraString2); builder.append("\n"); builder.append("\t\u2022 "); builder.append(paraString3); builder.append("\n"); builder.append("\u2022 "); builder.append(paraString4); builder.append("\n"); builder.append(paraString5); builder.append("\n"); builder.append("1. "); builder.append(paraString6); builder.append("\n"); builder.append("\t3. "); builder.append(paraString7); builder.append("\n"); builder.append("\t4. "); builder.append(paraString8); builder.append("\n"); builder.append("\t"); // should be empty builder.append("\n"); builder.append("\t5. "); builder.append(paraString9); builder.append("\n"); builder.append("2. "); builder.append(paraString10); assertEquals(builder.toString(), sshape.getText()); assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb)); }
/** Test addNewTextParagraph using RichTextString */ public void testAddNewTextParagraphWithRTS() { XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.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(); font.setColor(new XSSFColor(new Color(0, 255, 255))); font.setFontName("Arial"); rt.applyFont(font); XSSFFont midfont = wb.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); // Check drawing = sheet.createDrawingPatriarch(); List<XSSFShape> shapes = drawing.getShapes(); assertEquals(1, shapes.size()); assertTrue(shapes.get(0) instanceof XSSFSimpleShape); XSSFSimpleShape sshape = (XSSFSimpleShape) shapes.get(0); List<XSSFTextParagraph> paras = sshape.getTextParagraphs(); assertEquals( 2, paras .size()); // this should be 2 as XSSFSimpleShape creates a default paragraph (no text), // and then we add a string to that. List<XSSFTextRun> runs = para.getTextRuns(); assertEquals(3, runs.size()); // first run properties assertEquals("Test ", runs.get(0).getText()); assertEquals("Arial", runs.get(0).getFontFamily()); Color clr = runs.get(0).getFontColor(); assertArrayEquals( new int[] {0, 255, 255}, new int[] {clr.getRed(), clr.getGreen(), clr.getBlue()}); // second run properties assertEquals("Rich Text", runs.get(1).getText()); assertEquals(XSSFFont.DEFAULT_FONT_NAME, runs.get(1).getFontFamily()); clr = runs.get(1).getFontColor(); assertArrayEquals( new int[] {0, 255, 0}, new int[] {clr.getRed(), clr.getGreen(), clr.getBlue()}); // third run properties assertEquals(" String", runs.get(2).getText()); assertEquals("Arial", runs.get(2).getFontFamily()); clr = runs.get(2).getFontColor(); assertArrayEquals( new int[] {0, 255, 255}, new int[] {clr.getRed(), clr.getGreen(), clr.getBlue()}); assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb)); }