From 1a9337f238c5350fa493c82beb97d23a6313abcf Mon Sep 17 00:00:00 2001 From: Nadia <62909670+nadiahylary@users.noreply.github.com> Date: Sat, 23 Sep 2023 17:08:15 +0100 Subject: [PATCH] BAEL-6921, How To Convert Excel Data Into List Of Java Objects (#14813) * BAEL-6921, How To Convert Excel Data into List of Java Objects * BAEL-6921, How To Convert Excel Data into List of Java Objects --- apache-poi-3/pom.xml | 64 ++++++++++++++++++ .../convert/exceldatatolist/FoodInfo.java | 54 +++++++++++++++ .../ExcelDataToListOfObjectsFastExcel.java | 42 ++++++++++++ .../ExcelDataToListOfObjectsJxl.java | 37 ++++++++++ .../poi/ExcelDataToListApachePOI.java | 39 +++++++++++ .../poiji/ExcelDataToListOfObjectsPOIJI.java | 13 ++++ apache-poi-3/src/main/resources/food_info.xls | Bin 0 -> 29696 bytes .../src/main/resources/food_info.xlsx | Bin 0 -> 6389 bytes .../ExcelDataToListOfObjectsUnitTest.java | 53 +++++++++++++++ 9 files changed, 302 insertions(+) create mode 100644 apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/FoodInfo.java create mode 100644 apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/fastexcel/ExcelDataToListOfObjectsFastExcel.java create mode 100644 apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/jexcelapi/ExcelDataToListOfObjectsJxl.java create mode 100644 apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poi/ExcelDataToListApachePOI.java create mode 100644 apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poiji/ExcelDataToListOfObjectsPOIJI.java create mode 100644 apache-poi-3/src/main/resources/food_info.xls create mode 100644 apache-poi-3/src/main/resources/food_info.xlsx create mode 100644 apache-poi-3/src/test/java/com/baeldung/convert/exceldatatolist/ExcelDataToListOfObjectsUnitTest.java diff --git a/apache-poi-3/pom.xml b/apache-poi-3/pom.xml index 5031e1c5c7..905db3d58c 100644 --- a/apache-poi-3/pom.xml +++ b/apache-poi-3/pom.xml @@ -24,10 +24,74 @@ poi-scratchpad ${poi.version} + + + com.github.ozlerhakan + poiji + ${poiji.version} + + + + + org.apache.poi + poi + ${poi.version} + + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + + + + org.apache.xmlbeans + xmlbeans + 5.1.1 + + + + org.apache.commons + commons-collections4 + 4.4 + + + + org.dhatim + fastexcel + ${fastexcel.version} + + + + org.dhatim + fastexcel-reader + ${fastexcel.version} + + + + net.sourceforge.jexcelapi + jxl + ${jxl.version} + + + + org.apache.logging.log4j + log4j-api + 2.17.1 + + + + org.apache.logging.log4j + log4j-core + 2.17.1 + 5.2.3 + 4.1.1 + 0.15.7 + 2.6.12 \ No newline at end of file diff --git a/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/FoodInfo.java b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/FoodInfo.java new file mode 100644 index 0000000000..b8fe4522de --- /dev/null +++ b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/FoodInfo.java @@ -0,0 +1,54 @@ +package com.baeldung.convert.exceldatatolist; + +import com.poiji.annotation.ExcelCellName; + +public class FoodInfo { + + @ExcelCellName("Category") + private String category; //food category + @ExcelCellName("Name") + private String name; // food name + @ExcelCellName("Measure") + private String measure; + @ExcelCellName("Calories") + private double calories; //amount of calories in kcal/measure + + @Override + public String toString() { + return "FoodInfo{" + "category='" + category + '\'' + ", name='" + name + '\'' + ", measure='" + measure + '\'' + ", calories=" + calories + "} \n"; + } + + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMeasure() { + return measure; + } + + public void setMeasure(String measure) { + this.measure = measure; + } + + public double getCalories() { + return calories; + } + + public void setCalories(double calories) { + this.calories = calories; + } + +} diff --git a/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/fastexcel/ExcelDataToListOfObjectsFastExcel.java b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/fastexcel/ExcelDataToListOfObjectsFastExcel.java new file mode 100644 index 0000000000..87d31520e6 --- /dev/null +++ b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/fastexcel/ExcelDataToListOfObjectsFastExcel.java @@ -0,0 +1,42 @@ +package com.baeldung.convert.exceldatatolist.fastexcel; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Stream; + +import org.dhatim.fastexcel.reader.ReadableWorkbook; +import org.dhatim.fastexcel.reader.Row; +import org.dhatim.fastexcel.reader.Sheet; + +import com.baeldung.convert.exceldatatolist.FoodInfo; + +public class ExcelDataToListOfObjectsFastExcel { + public static List excelDataToListOfObjets_withFastExcel(String fileLocation)throws IOException, NumberFormatException { + List foodData = new ArrayList(); + + try (FileInputStream file = new FileInputStream(fileLocation); + ReadableWorkbook wb = new ReadableWorkbook(file)) { + Sheet sheet = wb.getFirstSheet(); + for (Row row: + sheet.read() + ) { + if(row.getRowNum() == 1) { + continue; + } + FoodInfo food = new FoodInfo(); + food.setCategory(row.getCellText(0)); + food.setName(row.getCellText(1)); + food.setMeasure(row.getCellText(2)); + food.setCalories(Double.parseDouble(row.getCellText(3))); + + foodData.add(food); + + } + } + + return foodData; + } +} diff --git a/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/jexcelapi/ExcelDataToListOfObjectsJxl.java b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/jexcelapi/ExcelDataToListOfObjectsJxl.java new file mode 100644 index 0000000000..61ba5e4700 --- /dev/null +++ b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/jexcelapi/ExcelDataToListOfObjectsJxl.java @@ -0,0 +1,37 @@ +package com.baeldung.convert.exceldatatolist.jexcelapi; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import com.baeldung.convert.exceldatatolist.FoodInfo; + +import jxl.Sheet; +import jxl.Workbook; +import jxl.read.biff.BiffException; + +public class ExcelDataToListOfObjectsJxl { + public static List excelDataToListOfObjets_withJxl(String fileLocation) throws IOException, BiffException { + + List foodData = new ArrayList(); + + Workbook workbook = Workbook.getWorkbook(new File(fileLocation)); + Sheet sheet = workbook.getSheet(0); + + int rows = sheet.getRows(); + + for (int i = 1; i < rows; i++) { + FoodInfo foodInfo = new FoodInfo(); + + foodInfo.setCategory(sheet.getCell(0, i).getContents()); + foodInfo.setName(sheet.getCell(1, i).getContents()); + foodInfo.setMeasure(sheet.getCell(2, i).getContents()); + foodInfo.setCalories(Double.parseDouble(sheet.getCell(3, i).getContents())); + + foodData.add(foodInfo); + + } + return foodData; + } +} diff --git a/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poi/ExcelDataToListApachePOI.java b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poi/ExcelDataToListApachePOI.java new file mode 100644 index 0000000000..8b568b889a --- /dev/null +++ b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poi/ExcelDataToListApachePOI.java @@ -0,0 +1,39 @@ +package com.baeldung.convert.exceldatatolist.poi; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +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 com.baeldung.convert.exceldatatolist.FoodInfo; + +public class ExcelDataToListApachePOI { + public static List excelDataToListOfObjets_withApachePOI(String fileLocation) throws IOException { + FileInputStream file = new FileInputStream(new File(fileLocation)); + Workbook workbook = new XSSFWorkbook(file); + Sheet sheet = workbook.getSheetAt(0); + List foodData = new ArrayList(); + DataFormatter dataFormatter = new DataFormatter(); + for (int n = 1; n < sheet.getPhysicalNumberOfRows(); n++) { + Row row = sheet.getRow(n); + FoodInfo foodInfo = new FoodInfo(); + int i = row.getFirstCellNum(); + + foodInfo.setCategory(dataFormatter.formatCellValue(row.getCell(i))); + foodInfo.setName(dataFormatter.formatCellValue(row.getCell(++i))); + foodInfo.setMeasure(dataFormatter.formatCellValue(row.getCell(++i))); + foodInfo.setCalories(Double.parseDouble(dataFormatter.formatCellValue(row.getCell(++i)))); + + foodData.add(foodInfo); + + } + return foodData; + } +} diff --git a/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poiji/ExcelDataToListOfObjectsPOIJI.java b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poiji/ExcelDataToListOfObjectsPOIJI.java new file mode 100644 index 0000000000..be190d38f7 --- /dev/null +++ b/apache-poi-3/src/main/java/com/baeldung/convert/exceldatatolist/poiji/ExcelDataToListOfObjectsPOIJI.java @@ -0,0 +1,13 @@ +package com.baeldung.convert.exceldatatolist.poiji; + +import java.io.File; +import java.util.List; + +import com.baeldung.convert.exceldatatolist.FoodInfo; +import com.poiji.bind.Poiji; + +public class ExcelDataToListOfObjectsPOIJI { + public static List excelDataToListOfObjets_withPOIJI(String fileLocation){ + return Poiji.fromExcel(new File(fileLocation), FoodInfo.class); + } +} diff --git a/apache-poi-3/src/main/resources/food_info.xls b/apache-poi-3/src/main/resources/food_info.xls new file mode 100644 index 0000000000000000000000000000000000000000..1377d8e18dbe6036c1bf4df453ece2142f2be588 GIT binary patch literal 29696 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 literal 0 HcmV?d00001 diff --git a/apache-poi-3/src/main/resources/food_info.xlsx b/apache-poi-3/src/main/resources/food_info.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c604ff367dc000a5d5fe5e00a7d3c1b4444b1e80 GIT binary patch literal 6389 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 foodInfoList = ExcelDataToListOfObjectsPOIJI.excelDataToListOfObjets_withPOIJI("src/main/resources/food_info.xlsx"); + + assertEquals("Beverages", foodInfoList.get(0).getCategory()); + assertEquals("Dairy", foodInfoList.get(3).getCategory()); + } + + @Test + public void whenParsingExcelFileWithApachePOI_thenConvertsToList() throws IOException { + List foodInfoList = ExcelDataToListApachePOI.excelDataToListOfObjets_withApachePOI("src/main/resources/food_info.xlsx"); + + assertEquals("Beverages", foodInfoList.get(0).getCategory()); + assertEquals("Dairy", foodInfoList.get(3).getCategory()); + } + + @Test + public void whenParsingExcelFileWithFastExcel_thenConvertsToList() throws IOException { + List foodInfoList = ExcelDataToListOfObjectsFastExcel.excelDataToListOfObjets_withFastExcel("src/main/resources/food_info.xlsx"); + + assertEquals("Beverages", foodInfoList.get(0).getCategory()); + assertEquals("Dairy", foodInfoList.get(3).getCategory()); + } + + @Test + public void whenParsingExcelFileWithJxl_thenConvertsToList() throws IOException, BiffException { + List foodInfoList = ExcelDataToListOfObjectsJxl.excelDataToListOfObjets_withJxl("src/main/resources/food_info.xls"); + + assertEquals("Beverages", foodInfoList.get(0).getCategory()); + assertEquals("Dairy", foodInfoList.get(3).getCategory()); + } + +}