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 0000000000..1377d8e18d
Binary files /dev/null and b/apache-poi-3/src/main/resources/food_info.xls differ
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 0000000000..c604ff367d
Binary files /dev/null and b/apache-poi-3/src/main/resources/food_info.xlsx differ
diff --git a/apache-poi-3/src/test/java/com/baeldung/convert/exceldatatolist/ExcelDataToListOfObjectsUnitTest.java b/apache-poi-3/src/test/java/com/baeldung/convert/exceldatatolist/ExcelDataToListOfObjectsUnitTest.java
new file mode 100644
index 0000000000..5d65c04b31
--- /dev/null
+++ b/apache-poi-3/src/test/java/com/baeldung/convert/exceldatatolist/ExcelDataToListOfObjectsUnitTest.java
@@ -0,0 +1,53 @@
+package com.baeldung.convert.exceldatatolist;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.List;
+
+// import org.junit.jupiter.api.Test;
+// import static org.junit.jupiter.api.Assertions.*;
+import org.junit.Test;
+
+import com.baeldung.convert.exceldatatolist.fastexcel.ExcelDataToListOfObjectsFastExcel;
+import com.baeldung.convert.exceldatatolist.jexcelapi.ExcelDataToListOfObjectsJxl;
+import com.baeldung.convert.exceldatatolist.poi.ExcelDataToListApachePOI;
+import com.baeldung.convert.exceldatatolist.poiji.ExcelDataToListOfObjectsPOIJI;
+
+import jxl.read.biff.BiffException;
+
+public class ExcelDataToListOfObjectsUnitTest {
+
+ @Test
+ public void whenParsingExcelFileWithPOIJI_thenConvertsToList() throws IOException {
+ List 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());
+ }
+
+}