diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/multilinetext/MultilineText.java b/apache-poi/src/main/java/com/baeldung/poi/excel/multilinetext/MultilineText.java new file mode 100644 index 0000000000..2e0cc5770e --- /dev/null +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/multilinetext/MultilineText.java @@ -0,0 +1,18 @@ +package com.baeldung.poi.excel.multilinetext; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Row; + +public class MultilineText { + public void formatMultilineText(Cell cell, int cellNumber) { + cell.getRow() + .setHeightInPoints(cell.getSheet() + .getDefaultRowHeightInPoints() * 2); + CellStyle cellStyle = cell.getSheet() + .getWorkbook() + .createCellStyle(); + cellStyle.setWrapText(true); + cell.setCellStyle(cellStyle); + } +} diff --git a/apache-poi/src/main/resources/com/baeldung/poi/excel/multilinetext/MultilineTextTest.xlsx b/apache-poi/src/main/resources/com/baeldung/poi/excel/multilinetext/MultilineTextTest.xlsx new file mode 100644 index 0000000000..c6b963d5a5 Binary files /dev/null and b/apache-poi/src/main/resources/com/baeldung/poi/excel/multilinetext/MultilineTextTest.xlsx differ diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/multilinetext/MultilineTextUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/multilinetext/MultilineTextUnitTest.java new file mode 100644 index 0000000000..ee002be155 --- /dev/null +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/multilinetext/MultilineTextUnitTest.java @@ -0,0 +1,69 @@ +package com.baeldung.poi.excel.multilinetext; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Paths; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.junit.Before; +import org.junit.Test; + +public class MultilineTextUnitTest { + private static String FILE_NAME = "com/baeldung/poi/excel/multilinetext/MultilineTextTest.xlsx"; + private static final String NEW_FILE_NAME = "MultilineTextTest_output.xlsx"; + private static final int STRING_ROW_INDEX = 1; + private static final int STRING_CELL_INDEX = 0; + + private String fileLocation; + + @Before + public void setup() throws IOException, URISyntaxException { + fileLocation = Paths.get(ClassLoader.getSystemResource(FILE_NAME) + .toURI()) + .toString(); + } + + @Test + public void givenMultilineTextCell_whenFormated_thenMultilineTextVisible() throws IOException { + Workbook workbook = new XSSFWorkbook(fileLocation); + Sheet sheet = workbook.getSheetAt(0); + sheet.createRow(STRING_ROW_INDEX); + Row row = sheet.getRow(STRING_ROW_INDEX); + Cell cell = row.createCell(STRING_CELL_INDEX); + + cell.setCellValue("Hello \n world!"); + MultilineText multilineText = new MultilineText(); + multilineText.formatMultilineText(cell, STRING_CELL_INDEX); + + FileOutputStream outputStream = new FileOutputStream(NEW_FILE_NAME); + workbook.write(outputStream); + outputStream.close(); + + File file = new File(NEW_FILE_NAME); + FileInputStream fileInputStream = new FileInputStream(file); + Workbook testWorkbook = new XSSFWorkbook(fileInputStream); + assertTrue(row.getHeightInPoints() == testWorkbook.getSheetAt(0) + .getRow(STRING_ROW_INDEX) + .getHeightInPoints()); + DataFormatter formatter = new DataFormatter(); + assertEquals("Hello \n world!", formatter.formatCellValue(testWorkbook.getSheetAt(0) + .getRow(STRING_ROW_INDEX) + .getCell(STRING_CELL_INDEX))); + testWorkbook.close(); + fileInputStream.close(); + file.delete(); + + workbook.close(); + } +}