https://easyexcel.opensource.alibaba.com/
Phụ thuộc Gradle:
implementation 'com.alibaba:easyexcel:3.1.1'
Bảng mã màu tham khảo:
| Màu sắc | Thử nghiệm | Tên Class | Giá trị short |
| Thử nghiệm màu | Black | 8 | |
| Thử nghiệm màu | Brown | 60 | |
| Thử nghiệm màu | Olive_Green | 59 | |
| Thử nghiệm màu | Dark_Green | 58 | |
| Thử nghiệm màu | Dark_Teal | 56 | |
| Thử nghiệm màu | Dark_Blue | 18 | |
| Thử nghiệm màu | Indigo | 62 | |
| Thử nghiệm màu | Grey_80_PERCENT | 63 | |
| Thử nghiệm màu | Dark_Red | 16 | |
| Thử nghiệm màu | Orange | 53 | |
| Thử nghiệm màu | DARK_YELLOW | 19 | |
| Thử nghiệm màu | Green | 17 | |
| Thử nghiệm màu | Teal | 21 | |
| Thử nghiệm màu | Blue | 12 | |
| Thử nghiệm màu | Blue_Grey | 54 | |
| Thử nghiệm màu | Grey_50_PERCENT | 23 | |
| Thử nghiệm màu | Red | 10 | |
| Thử nghiệm màu | LIGHT_ORANGE | 52 | |
| Thử nghiệm màu | LIME | 50 | |
| Thử nghiệm màu | SEA_GREEN | 57 | |
| Thử nghiệm màu | AQUA | 49 | |
| Thử nghiệm màu | LIGHT_BLUE | 48 | |
| Thử nghiệm màu | VIOLET | 20 | |
| Thử nghiệm màu | GREY_40_PERCENT | 55 | |
| Thử nghiệm màu | Pink | 14 | |
| Thử nghiệm màu | Gold | 51 | |
| Thử nghiệm màu | Yellow | 13 | |
| Thử nghiệm màu | BRIGHT_GREEN | 11 | |
| Thử nghiệm màu | TURQUOISE | 15 | |
| Thử nghiệm màu | SKY_BLUE | 40 | |
| Thử nghiệm màu | Plum | 61 | |
| Thử nghiệm màu | GREY_25_PERCENT | 22 | |
| Thử nghiệm màu | Rose | 45 | |
| Thử nghiệm màu | Tan | 47 | |
| Thử nghiệm màu | LIGHT_YELLOW | 43 | |
| Thử nghiệm màu | LIGHT_GREEN | 42 | |
| Thử nghiệm màu | LIGHT_TURQUOISE | 41 | |
| Thử nghiệm màu | PALE_BLUE | 44 | |
| Thử nghiệm màu | LAVENDER | 46 | |
| Thử nghiệm màu | White | 9 | |
| Thử nghiệm màu | CORNFLOWER_BLUE | 24 | |
| Thử nghiệm màu | LEMON_CHIFFON | 26 | |
| Thử nghiệm màu | MAROON | 25 | |
| Thử nghiệm màu | ORCHID | 28 | |
| Thử nghiệm màu | CORAL | 29 | |
| Thử nghiệm màu | ROYAL_BLUE | 30 | |
| Thử nghiệm màu | LIGHT_CORNFLOWER_BLUE | 31 | |
| Thử nghiệm màu | AUTOMATIC | 64 |
Các annotation trong EasyExcel
Danh sách 11 annotation chính
- @ExcelProperty
- @ColumnWidth Độ rộng cột
- @ContentFontStyle Định dạng phông chữ nội dung
- @ContentLoopMerge Gộp ô nội dung
- @ContentRowHeight Chiều cao hàng nội dung
- @ContentStyle Định dạng nội dung
- @HeadFontStyle Định dạng phông chữ tiêu đề
- @HeadRowHeight Chiều cao hàng tiêu đề
- @HeadStyle Định dạng tiêu đề
- @ExcelIgnore Bỏ qua trường
- @ExcelIgnoreUnannotated Bỏ qua các trường không có annotation
| Annotation trường | Annotation lớp |
|---|---|
| @ColumnWidth(độ rộng cột) | @ColumnWidth(độ rộng cột toàn cục) |
| @ExcelProperty(cấu hình trường) | @HeadFontStyle(kiểu tiêu đề) |
| @HeadRowHeight(chiều cao tiêu đề) | |
| @ContentFontStyle(kiểu phông chữ nội dung) | |
| @ContentRowHeight(chiều cao nội dung) |
@ExcelProperty
Annotation bắt buộc phải có, chứa ba tham số value, index, converter đại diện cho tên cột, thứ tự cột và phương thức chuyển đổi dữ liệu.
Chỉ được sử dụng một trong hai value hoặc index, thường không cần thiết lập converter.
- value: Tương ứng thông qua văn bản tiêu đề
- index: Tương ứng thông qua chỉ số hàng
- converter: Bộ chuyển đổi, thường dùng cho việc chuyển đổi khi lưu trữ và truy xuất, ví dụ giới tính lưu là 0 và 1, xuất là Nam và Nữ
Thực hành tốt nhất
public class DataModel {
@ExcelProperty(value = "Giá trị")
private String giaTriTruong;
@ExcelProperty(value = 1, converter = GioiTinhConverter.class)
private String chiSoTruong;
@ExcelProperty(value = "Giá trị tương ứng và bộ chuyển đổi", converter = GioiTinhConverter.class)
private String giaTriVaBoChuyenDoiTruong;
}
@ColumnWidth
Thiết lập độ rộng cột, chỉ có một tham số value, đơn vị tính là độ dài ký tự, giá trị tối đa là 255 ký tự vì một ô Excel tối đa chỉ chứa được 255 ký tự.
Thực hành tốt nhất
public class DuLieuModel {
@ColumnWidth(value = 18)
private String maSanPham;
}
@ContentFontStyle
Annotation dùng để thiết lập định dạng phông chữ cho nội dung ô
Các tham số:
| Tham số | Ý nghĩa |
|---|---|
| fontName | Tên phông chữ |
| fontHeightInPoints | Chiều cao phông chữ |
| italic | Có nghiêng hay không |
| strikeout | Có gạch ngang hay không |
| color | Màu phông chữ |
| typeOffset | Độ lệch |
| underline | Gạch chân |
| bold | Có in đậm hay không |
| charset | Định dạng mã hóa |
@ContentLoopMerge
Annotation dùng để thiết lập gộp ô
Các tham số:
| Tham số | Ý nghĩa |
|---|---|
| eachRow | |
| columnExtend |
@ContentRowHeight
Dùng để thiết lập chiều cao hàng
Tham số:
| Tham số | Ý nghĩa |
|---|---|
| value | Chiều cao hàng, `-1` đại diện cho chiều cao tự động |
@ContentStyle
Annotation thiết lập định dạng nội dung
Các tham số:
| Tham số | Ý nghĩa |
|---|---|
| dataFormat | Định dạng ngày tháng |
| hidden | Thiết lập ô ẩn với kiểu này |
| locked | Thiết lập ô khóa với kiểu này |
| quotePrefix | Thêm dấu ` phía trước ô, số hoặc công thức sẽ hiển thị dưới dạng chuỗi |
| horizontalAlignment | Thiết lập căn giữa ngang |
| wrapped | Thiết lập văn bản có xuống dòng hay không. Đặt cờ này thành `true` sẽ làm cho nội dung ô hiển thị trên nhiều dòng |
| verticalAlignment | Thiết lập căn giữa dọc |
| rotation | Thiết lập góc xoay văn bản trong ô. Phiên bản Excel 03 có khoảng xoay -90° đến 90°, phiên bản 07 có khoảng 0° đến 180° |
| indent | Thiết lập số khoảng trắng thụt đầu dòng trong ô |
| borderLeft | Thiết lập kiểu viền trái |
| borderRight | Thiết lập kiểu viền phải |
| borderTop | Thiết lập kiểu viền trên |
| borderBottom | Thiết lập kiểu viền dưới |
| leftBorderColor | Thiết lập màu viền trái |
| rightBorderColor | Thiết lập màu viền phải |
| topBorderColor | Thiết lập màu viền trên |
| bottomBorderColor | Thiết lập màu viền dưới |
| fillPatternType | Thiết lập kiểu tô nền |
| fillBackgroundColor | Thiết lập màu nền |
| fillForegroundColor | Thiết lập màu tiền cảnh |
| shrinkToFit | Thiết lập tự động điều chỉnh kích thước ô |
@HeadFontStyle
Dùng để tùy chỉnh định dạng phông chữ tiêu đề
| Tham số | Ý nghĩa |
|---|---|
| fontName | Thiết lập tên phông chữ |
| fontHeightInPoints | Thiết lập chiều cao phông chữ |
| italic | Thiết lập nghiêng phông chữ |
| strikeout | Thiết lập gạch ngang |
| color | Thiết lập màu phông chữ |
| typeOffset | Thiết lập độ lệch |
| underline | Thiết lập gạch chân |
| charset | Thiết lập mã hóa phông chữ |
| bold | Thiết lập in đậm phông chữ |
@HeadRowHeight
Thiết lập chiều cao hàng tiêu đề
| Tham số | Ý nghĩa |
|---|---|
| value | Thiết lập chiều cao hàng, -1 đại diện cho chiều cao tự động |
@HeadStyle
Thiết lập kiểu tiêu đề
| Tham số | Ý nghĩa |
|---|---|
| dataFormat | Định dạng ngày tháng |
| hidden | Thiết lập ô ẩn với kiểu này |
| locked | Thiết lập ô khóa với kiểu này |
| quotePrefix | Thêm dấu ` phía trước ô, số hoặc công thức sẽ hiển thị dưới dạng chuỗi |
| horizontalAlignment | Thiết lập căn giữa ngang |
| wrapped | Thiết lập văn bản có xuống dòng hay không. Đặt cờ này thành `true` sẽ làm cho nội dung ô hiển thị trên nhiều dòng |
| verticalAlignment | Thiết lập căn giữa dọc |
| rotation | Thiết lập góc xoay văn bản trong ô. Phiên bản Excel 03 có khoảng xoay -90° đến 90°, phiên bản 07 có khoảng 0° đến 180° |
| indent | Thiết lập số khoảng trắng thụt đầu dòng trong ô |
| borderLeft | Thiết lập kiểu viền trái |
| borderRight | Thiết lập kiểu viền phải |
| borderTop | Thiết lập kiểu viền trên |
| borderBottom | Thiết lập kiểu viền dưới |
| leftBorderColor | Thiết lập màu viền trái |
| rightBorderColor | Thiết lập màu viền phải |
| topBorderColor | Thiết lập màu viền trên |
| bottomBorderColor | Thiết lập màu viền dưới |
| fillPatternType | Thiết lập kiểu tô nền |
| fillBackgroundColor | Thiết lập màu nền |
| fillForegroundColor | Thiết lập màu tiền cảnh |
| shrinkToFit | Thiết lập tự động điều chỉnh kích thước ô |
@ExcelIgnore
Không chuyển đổi trường này sang Excel
@ExcelIgnoreUnannotated
Bỏ qua tất cả các trường không có annotation
Đóng băng và lọc tiêu đề cố định trong EasyExcel
package com.example.utils;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
/**
* Đóng băng và lọc tiêu đề cố định trong EasyExcel
* @author Tác giả
* @className FreezeAndFilterHeader
* @date 2023/3/30 15:10
*/
public class FreezeAndFilterHeader implements SheetWriteHandler{
public int cotPhanChia = 0, hangPhanChia = 1, cotBenTrai = 0, hangTren = 1;
public String phamViLocTuDong = "1:1";
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Sheet sheet = writeSheetHolder.getSheet();
sheet.createFreezePane(cotPhanChia, hangPhanChia, cotBenTrai, hangTren);
sheet.setAutoFilter(CellRangeAddress.valueOf(phamViLocTuDong));
}
}
Tiêu đề đã được đóng băng và cố định.