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.
Nội dung bài viết
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 Name | Gender | Age | Birthday |
giang | Male | 30 | 1/1/2000 |
lucas | Male | 21 | 1/20/2000 |
Nga | Female | 26 | 5/15/1995 |
username | password |
abc | 123 |
admin | 1234@123 |
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. 😀
em muốn chuyển list data lấy được từ poiji sang dataprovider thì phải làm như nào ạ?
Em đọc bài này, từ mục II.