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
This commit is contained in:
parent
8ea2cc9703
commit
1a9337f238
@ -24,10 +24,74 @@
|
||||
<artifactId>poi-scratchpad</artifactId>
|
||||
<version>${poi.version}</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.github.ozlerhakan/poiji -->
|
||||
<dependency>
|
||||
<groupId>com.github.ozlerhakan</groupId>
|
||||
<artifactId>poiji</artifactId>
|
||||
<version>${poiji.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi/5.2.3 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>${poi.version}</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas/4.1.2 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans/5.1.1 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.xmlbeans</groupId>
|
||||
<artifactId>xmlbeans</artifactId>
|
||||
<version>5.1.1</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-collections4</artifactId>
|
||||
<version>4.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.dhatim/fastexcel/0.15.7 -->
|
||||
<dependency>
|
||||
<groupId>org.dhatim</groupId>
|
||||
<artifactId>fastexcel</artifactId>
|
||||
<version>${fastexcel.version}</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.dhatim/fastexcel-reader/0.15.7 -->
|
||||
<dependency>
|
||||
<groupId>org.dhatim</groupId>
|
||||
<artifactId>fastexcel-reader</artifactId>
|
||||
<version>${fastexcel.version}</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl/2.6.12 -->
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.jexcelapi</groupId>
|
||||
<artifactId>jxl</artifactId>
|
||||
<version>${jxl.version}</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
<poi.version>5.2.3</poi.version>
|
||||
<poiji.version>4.1.1</poiji.version>
|
||||
<fastexcel.version>0.15.7</fastexcel.version>
|
||||
<jxl.version>2.6.12</jxl.version>
|
||||
</properties>
|
||||
|
||||
</project>
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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<FoodInfo> excelDataToListOfObjets_withFastExcel(String fileLocation)throws IOException, NumberFormatException {
|
||||
List<FoodInfo> foodData = new ArrayList<FoodInfo>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
@ -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<FoodInfo> excelDataToListOfObjets_withJxl(String fileLocation) throws IOException, BiffException {
|
||||
|
||||
List<FoodInfo> foodData = new ArrayList<FoodInfo>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
@ -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<FoodInfo> excelDataToListOfObjets_withApachePOI(String fileLocation) throws IOException {
|
||||
FileInputStream file = new FileInputStream(new File(fileLocation));
|
||||
Workbook workbook = new XSSFWorkbook(file);
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
List<FoodInfo> foodData = new ArrayList<FoodInfo>();
|
||||
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;
|
||||
}
|
||||
}
|
@ -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<FoodInfo> excelDataToListOfObjets_withPOIJI(String fileLocation){
|
||||
return Poiji.fromExcel(new File(fileLocation), FoodInfo.class);
|
||||
}
|
||||
}
|
BIN
apache-poi-3/src/main/resources/food_info.xls
Normal file
BIN
apache-poi-3/src/main/resources/food_info.xls
Normal file
Binary file not shown.
BIN
apache-poi-3/src/main/resources/food_info.xlsx
Normal file
BIN
apache-poi-3/src/main/resources/food_info.xlsx
Normal file
Binary file not shown.
@ -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<FoodInfo> 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<FoodInfo> 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<FoodInfo> 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<FoodInfo> foodInfoList = ExcelDataToListOfObjectsJxl.excelDataToListOfObjets_withJxl("src/main/resources/food_info.xls");
|
||||
|
||||
assertEquals("Beverages", foodInfoList.get(0).getCategory());
|
||||
assertEquals("Dairy", foodInfoList.get(3).getCategory());
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user