diff --git a/src/test/java/com/monitorjbl/xlsx/StreamingSheetTest.java b/src/test/java/com/monitorjbl/xlsx/StreamingSheetTest.java index f24ba7fa..8c8f8d86 100644 --- a/src/test/java/com/monitorjbl/xlsx/StreamingSheetTest.java +++ b/src/test/java/com/monitorjbl/xlsx/StreamingSheetTest.java @@ -1,19 +1,16 @@ package com.monitorjbl.xlsx; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; +import java.io.*; +import java.util.Iterator; import java.util.Locale; -import org.apache.poi.ss.usermodel.CellType; -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.ss.usermodel.*; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.*; public class StreamingSheetTest { @BeforeAll @@ -56,4 +53,59 @@ public void testEmptyCellShouldHaveGeneralStyle() throws Exception { } } + @Test + public void testCellWithLineBreak() throws IOException { + final String testValue = "1\n2\r\n3"; + try ( + XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); + ByteArrayOutputStream bos = new ByteArrayOutputStream() + ) { + Sheet xssfSheet = xssfWorkbook.createSheet(); + xssfSheet.createRow(0).createCell(0).setCellValue(testValue); + + xssfWorkbook.write(bos); + + try (Workbook wb = StreamingReader.builder().open(new ByteArrayInputStream(bos.toByteArray()))) { + Sheet sheet = wb.getSheetAt(0); + Iterator rowIterator = sheet.rowIterator(); + if (rowIterator.hasNext()) { + Row row = rowIterator.next(); + if (row.getRowNum() == 0) { + Cell cell0 = row.getCell(0); + assertNotNull(cell0); + assertEquals(testValue, cell0.getStringCellValue()); + } + } + } + } + } + + @Test + public void testCellWithLineBreakNoSharedStrings() throws IOException { + //SXSSFWorkbook does not use SharedStrings by default + final String testValue = "1\n2\r\n3"; + try ( + SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(); + ByteArrayOutputStream bos = new ByteArrayOutputStream() + ) { + Sheet xssfSheet = sxssfWorkbook.createSheet(); + xssfSheet.createRow(0).createCell(0).setCellValue(testValue); + + sxssfWorkbook.write(bos); + + try (Workbook wb = StreamingReader.builder().open(new ByteArrayInputStream(bos.toByteArray()))) { + Sheet sheet = wb.getSheetAt(0); + Iterator rowIterator = sheet.rowIterator(); + if (rowIterator.hasNext()) { + Row row = rowIterator.next(); + if (row.getRowNum() == 0) { + Cell cell0 = row.getCell(0); + assertNotNull(cell0); + assertEquals(testValue, cell0.getStringCellValue()); + } + } + } + } + } + }