Đọc file excel sử dụng poiji

Mình đã từng giới thiệu cách đọc file excel ở bài này, nhưng phải nói đây là cách xấu xí vì nó làm cho mình phải xử lý trực tiếp đến workbook, sheet và cell. Mình đã tìm được 1 thư viện khác (poiji) cho phép convert từ Excel <—> POJO, sử dụng rất đơn giản.

I. Cài đặt thư viện

Đầu tiên bạn cần import lib poiji vào trong project.

Maven:

<dependency>
    <groupId>com.github.ozlerhakan</groupId>
    <artifactId>poiji</artifactId>
    <version>3.1.1</version>
</dependency>

Gradle

implementation group: 'com.github.ozlerhakan', name: 'poiji', version: '3.1.1'

II. File excel data

First NameGenderAgeBirthday
giangMale301/1/2000
lucasMale211/20/2000
NgaFemale265/15/1995
Sheet1
usernamepassword
abc123
admin1234@123
Sheet2

III. Tạo POJO tương ứng

import com.poiji.annotation.ExcelCellName;
import com.poiji.annotation.ExcelSheet;
import lombok.Data;

@Data
@ExcelSheet("Sheet1") //Khai báo tên sheet ở đây
public class ExcelObject {
    @ExcelCellName("First Name")
    private String firstName;
    @ExcelCellName("Gender")
    private Gender gender;
    @ExcelCellName("Age")
    private int age;
    @ExcelCellName("Birthday")
    private String birthday;

    private enum Gender {
        Male, Female
    }
}
import com.poiji.annotation.ExcelCell;
import com.poiji.annotation.ExcelSheet;
import lombok.Data;

@Data
@ExcelSheet("Sheet2")
public class ExcelObject2 {
    @ExcelCell(0)
    private String username;
    @ExcelCell(1)
    private String password;
}

Chúng ta có 2 tùy chọn:

  • Mapping theo tên @ExcelCellName
  • Mapping theo số thứ tự cột @ExcelCell(0)

IV. Cách lấy data

@Test
void name4() {
    PoijiOptions options = PoijiOptions.PoijiOptionsBuilder.settings()
            .caseInsensitive(false)
            .ignoreWhitespaces(true)
            .build();

    File file = new File("src/test/resources/test.xlsx");

    List<ExcelObject> sheet1 = Poiji.fromExcel(file, ExcelObject.class, options);
    sheet1.forEach(System.out::println);

    List<ExcelObject2> sheet2 = Poiji.fromExcel(file, ExcelObject2.class, options);
    sheet2.forEach(System.out::println);
}
ExcelObject(firstName=giang, gender=Male, age=30, birthday=1/1/2000)
ExcelObject(firstName=lucas, gender=Male, age=21, birthday=1/20/2000)
ExcelObject(firstName=Nga, gender=Female, age=26, birthday=5/15/1995)

ExcelObject2(username=abc, password=123)
ExcelObject2(username=admin, password=1234@123)

V. Tổng kết

Về bản chất, thư viện poiji này cũng sử dụng Apache POI nhưng nó đã giúp chúng ta rất nhiều khi cho convert trực tiếp ra Object java. Nếu bạn thấy hữu ích, hãy cho 1 like nhé, và đừng quên share cho người khác nữa. 😀

0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
enod
enod
2 years ago

em muốn chuyển list data lấy được từ poiji sang dataprovider thì phải làm như nào ạ?