Chúng tôi biết rằng EasyExcel đã ngừng bảo trì sau khi tác giả từ chức ở Alibaba, nhưng trong hai tuần qua, tác giả gốc của EasyExcel đã tung ra phiên bản nâng cấp của framework FastExcel. Sau đây là quy trình thực tế để bắt đầu với FastExcel, cho mọi người thấy sức hấp dẫn của khung công tác mới.
FastExcel là tác phẩm mới nhất được tạo ra bởi tác giả EasyExcel gốc. Sau khi tác giả từ chức tại Alibaba vào năm 2023, do Alibaba thông báo sẽ ngừng cập nhật EasyExcel nên ông quyết định tiếp tục duy trì và nâng cấp dự án. Khi bắt đầu lại, tác giả đã đặt tên cho nó là FastExcel để làm nổi bật hiệu suất cao của khung này khi xử lý các tệp Excel chứ không chỉ đơn giản và dễ sử dụng.
FastExcel vẫn là một framework mã nguồn mở và miễn phí với các tính năng sau:
- Hoàn toàn tương thích với tất cả các chức năng và tính năng của EasyExcel gốc, cho phép người dùng thực hiện chuyển đổi liền mạch.
- Di chuyển từ EasyExcel sang FastExcel chỉ cần thay đổi tên gói và các phần phụ thuộc Maven để hoàn tất nâng cấp.
- Về mặt chức năng, nó cung cấp nhiều cải tiến và cải tiến hơn EasyExcel.
- FastExcel phiên bản 1.0.0 bổ sung thêm chức năng đọc một số hàng nhất định trong Excel và chuyển Excel sang PDF.
Công dụng cụ thể của FastExcel như sau.
Công dụng FastExcel
1.1 Thêm phụ thuộc
cn.idev.excel fastexcel 1.0.0 < dependency> org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter
1.2 Tạo các lớp thực thể và trình nghe
1.2.1 Tạo lớp thực thể
nhập cn.idev.excel.annotation.ExcelProperty; nhập lombok.Getter; nhập lombok.Setter; nhập lombok.ToString; "tên") riêng Tên chuỗi; @ExcelProperty("age") riêng Số nguyên tuổi }
1.2.2 Tạo trình xử lý sự kiện
FastExcel dựa vào trình xử lý sự kiện để cho phép Excel đọc từng dòng tệp. Nếu không có cơ chế xử lý từng dòng này và trình xử lý dữ liệu, lỗi tràn bộ nhớ có thể xảy ra khi xử lý các tệp lớn. Trình xử lý sự kiện cho phép đọc và xử lý dữ liệu cùng lúc. Ví dụ: dữ liệu có thể được ghi trực tiếp vào cơ sở dữ liệu hoặc quá trình xử lý logic nghiệp vụ khác được thực hiện, tránh việc tích lũy lượng lớn dữ liệu trong bộ nhớ.
nhập cn.idev.excel.context.AnalysisContext; nhập cn.idev.excel.event.AnalysisEventListener; nhập java.util.ArrayList nhập java.util.List; lớp công khai BaseExcelListener mở rộng AnalysisEventListener { // Được sử dụng để lưu trữ danh sách đối tượng dữ liệu Excel đã đọc riêng tư List dataList = new ArrayList<>(); t, AnalysisContext AnalysisContext) { // Mỗi lần đọc một hàng dữ liệu, hãy thêm nó vào dataList dataList.add(t); } @Override public void doAfterAllAnalysed(AnalysisContext AnalysisContext) { // Khi tất cả dữ liệu được đọc, bạn có thể Thực hiện một số thao tác tiếp theo tại đây, chẳng hạn như in số lượng dữ liệu đã đọc System.out.println("Đọc xong, tổng cộng " + dataList.size() + " mẩu dữ liệu" } // Cung cấp một phương thức để lấy danh sách dữ liệu được lưu trữ public List getDataList() { return dataList; } }
1.3 Thực hiện chức năng viết và đọc
1.3.1 Chức năng viết Excel
// Hàm viết Excel @GetMapping("/download") public void download(HttpServletResponse reply) ném IOException { reply.setContentType("application/vnd.openxmlformats-officedocument.s Spreadsheetml.sheet"); "); Chuỗi fileName = URLEncode.encode("test", "UTF-8"); reply.setHeader("Bố trí nội dung", "tệp đính kèm;tên tệp*=utf-8''" + fileName + ".xlsx"); // Ghi dữ liệu FastExcel.write(response.getOutputStream(), User.class) . sheet("template") .doWrite(buildData()); } // Tạo dữ liệu thử nghiệm riêng tư List buildData() { // Tạo dữ liệu thử nghiệm Người dùng Người dùng user1 = Người dùng mới(); user1.setId(1); user1.setName("Zhang San"); user1.setAge(18); "李思"); user2.setAge(19); return List.of(user1, user2 }
Hiệu ứng thực thi mã trên như sau:

1.3.2 Chức năng đọc Excel
// Hàm đọc Excel @PostMapping("/upload") public ResponseEntity upload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return ResponseEntity.badRequest().body( " Vui lòng chọn một tệp để tải lên!"); } thử { BaseExcelListener baseExcelListener = new BaseExcelListener<>(); FastExcel.read(file.getInputStream(), User.class, baseExcelListener).sheet().doRead(); // Lấy danh sách dữ liệu đã đọc dataList = baseExcelListener.getDataList(); ); return ResponseEntity.ok("Tệp đã được tải lên và xử lý thành công!" } Catch (IOException e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Xử lý tệp không thành công!" } }
Hiệu ứng thực thi mã trên như sau:

Cách nâng cấp EasyExcel lên FastExcel
2.1 Sửa đổi các phụ thuộc
Thay thế phần phụ thuộc của EasyExcel bằng phần phụ thuộc của FastExcel, như sau:
com.alibaba easyexcel xxxx
Các phụ thuộc được thay thế bằng:
cn.idev.excel fastexcel 1.0.0
2.2 Sửa đổi mã
Thay thế tên gói EasyExcel bằng tên gói FastExcel như sau:
// Thay thế tên gói của easyexcel bằng tên gói của FastExcel import com.alibaba.excel.**;
Thay thế bằng .
nhập cn.idev.excel.**;
Chuyển Excel sang PDF
FastExcel hỗ trợ chuyển đổi tệp Excel thành tệp PDF. FastExcel chuyển đổi Excel sang Pdf. Lớp bên dưới dựa trên Apache POI và itext-pdf. Bị hạn chế bởi giấy phép của itext-pdf, vui lòng đảm bảo rằng việc sử dụng của bạn tuân thủ giấy phép của itext-pdf. Trong tương lai, FastExcel sẽ hỗ trợ nhiều chức năng chuyển đổi PDF hơn để thay thế itext-pdf. Mã triển khai như sau:
FastExcel.convertToPdf(Tệp mới("excelFile"),Tệp mới("pdfFile"),null,null);
bản tóm tắt
FastExcel vẫn là EasyExcel ban đầu, nhưng nó không hẳn là EasyExcel. Tôi hy vọng FastExcel sẽ ngày càng hoàn thiện hơn. Các bạn thân mến, hãy cùng nhau trải nghiệm nhé.
Bài viết này đã được đưa vào trang phỏng vấn của tôi www.javacn.site, bao gồm: lập trình đồng thời, MySQL, Redis, Spring, Spring MVC, Spring Boot, Spring Cloud, MyBatis, JVM, mẫu thiết kế, hàng đợi tin nhắn và các mô-đun khác.
Bài viết cuối cùng nói về việc tiêu diệt EasyExcel! Đến đây là kết thúc bài viết về trải nghiệm đầu tiên của FastExcel, nếu bạn muốn biết thêm về cách loại bỏ EasyExcel! Đối với nội dung trải nghiệm đầu tiên của bạn với FastExcel, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!