From 74c7e4ec1958f70737dc6f795fd8f966b293f250 Mon Sep 17 00:00:00 2001 From: hmdrzsharifi Date: Mon, 15 Feb 2021 23:56:47 +0330 Subject: [PATCH 1/4] add main class --- .../poi/excel/insert/InsertRowHelper.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java b/apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java new file mode 100644 index 0000000000..5cc4291847 --- /dev/null +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java @@ -0,0 +1,21 @@ +package com.baeldung.poi.excel.insert; + +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.io.IOException; + +public class InsertRowHelper { + public Workbook insertRowBetweenRows(String fileLocation, int startRow, int rowNumber) throws IOException { + Workbook workbook = new XSSFWorkbook(fileLocation); + Sheet sheet = workbook.getSheetAt(0); + int lastRow = sheet.getLastRowNum(); + if (lastRow < startRow) { + sheet.createRow(startRow); + } + sheet.shiftRows(startRow, lastRow, rowNumber, true, true); + sheet.createRow(startRow); + return workbook; + } +} From a7c64b99ef2c7ee22aa9539ea96da1cb91759c69 Mon Sep 17 00:00:00 2001 From: hmdrzsharifi Date: Mon, 15 Feb 2021 23:57:22 +0330 Subject: [PATCH 2/4] add unit test --- .../excel/insert/ExcelInsertRowUnitTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java new file mode 100644 index 0000000000..13f68d37ee --- /dev/null +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java @@ -0,0 +1,41 @@ +package com.baeldung.poi.excel.insert; + +import org.apache.poi.ss.usermodel.Workbook; +import org.junit.Before; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Paths; + +public class ExcelInsertRowUnitTest { + private static final String FILE_NAME = "test.xlsx"; + private static final String NEW_FILE_NAME = "new_test.xlsx"; + private String fileLocation; + private InsertRowHelper insertRowHelper; + + @Before + public void setup() throws URISyntaxException { + fileLocation = Paths.get(ClassLoader.getSystemResource(FILE_NAME).toURI()).toString(); + insertRowHelper = new InsertRowHelper(); + } + + @Test + public void givenWorkbook_whenInsertRowBetween_thenRowCreated() throws IOException { + Workbook newWorkbook = insertRowHelper.insertRowBetweenRows(fileLocation, 2, 1); + FileOutputStream outputStream = new FileOutputStream(NEW_FILE_NAME); + newWorkbook.write(outputStream); + File file = new File(NEW_FILE_NAME); + + final int expectedRowResult = 5; + Assertions.assertEquals(expectedRowResult, newWorkbook.getSheetAt(0).getLastRowNum()); + + outputStream.close(); + file.delete(); + newWorkbook.close(); + } + +} \ No newline at end of file From 0f19017581757adbeda2f4fcdf5594b23d663cb8 Mon Sep 17 00:00:00 2001 From: hmdrzsharifi Date: Wed, 17 Feb 2021 19:58:09 +0330 Subject: [PATCH 3/4] remove Helper class --- .../poi/excel/insert/InsertRowHelper.java | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java b/apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java deleted file mode 100644 index 5cc4291847..0000000000 --- a/apache-poi/src/main/java/com/baeldung/poi/excel/insert/InsertRowHelper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.poi.excel.insert; - -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -import java.io.IOException; - -public class InsertRowHelper { - public Workbook insertRowBetweenRows(String fileLocation, int startRow, int rowNumber) throws IOException { - Workbook workbook = new XSSFWorkbook(fileLocation); - Sheet sheet = workbook.getSheetAt(0); - int lastRow = sheet.getLastRowNum(); - if (lastRow < startRow) { - sheet.createRow(startRow); - } - sheet.shiftRows(startRow, lastRow, rowNumber, true, true); - sheet.createRow(startRow); - return workbook; - } -} From 365075cdd3c2b2631e2b05357b96281645960956 Mon Sep 17 00:00:00 2001 From: hmdrzsharifi Date: Wed, 17 Feb 2021 19:58:50 +0330 Subject: [PATCH 4/4] update unit test --- .../excel/insert/ExcelInsertRowUnitTest.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java index 13f68d37ee..0f137aa4d2 100644 --- a/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/insert/ExcelInsertRowUnitTest.java @@ -1,6 +1,8 @@ package com.baeldung.poi.excel.insert; +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; import org.junit.jupiter.api.Assertions; @@ -15,27 +17,34 @@ public class ExcelInsertRowUnitTest { private static final String FILE_NAME = "test.xlsx"; private static final String NEW_FILE_NAME = "new_test.xlsx"; private String fileLocation; - private InsertRowHelper insertRowHelper; @Before public void setup() throws URISyntaxException { fileLocation = Paths.get(ClassLoader.getSystemResource(FILE_NAME).toURI()).toString(); - insertRowHelper = new InsertRowHelper(); } @Test public void givenWorkbook_whenInsertRowBetween_thenRowCreated() throws IOException { - Workbook newWorkbook = insertRowHelper.insertRowBetweenRows(fileLocation, 2, 1); + int startRow = 2; + int rowNumber = 1; + Workbook workbook = new XSSFWorkbook(fileLocation); + Sheet sheet = workbook.getSheetAt(0); + int lastRow = sheet.getLastRowNum(); + if (lastRow < startRow) { + sheet.createRow(startRow); + } + sheet.shiftRows(startRow, lastRow, rowNumber, true, true); + sheet.createRow(startRow); FileOutputStream outputStream = new FileOutputStream(NEW_FILE_NAME); - newWorkbook.write(outputStream); + workbook.write(outputStream); File file = new File(NEW_FILE_NAME); final int expectedRowResult = 5; - Assertions.assertEquals(expectedRowResult, newWorkbook.getSheetAt(0).getLastRowNum()); + Assertions.assertEquals(expectedRowResult, workbook.getSheetAt(0).getLastRowNum()); outputStream.close(); file.delete(); - newWorkbook.close(); + workbook.close(); } } \ No newline at end of file