Hướng Dẫn Sử Dụng Các Annotation Định Dạng Trong EasyExcel

https://easyexcel.opensource.alibaba.com/

https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java

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.

  1. value: Tương ứng thông qua văn bản tiêu đề
  2. index: Tương ứng thông qua chỉ số hàng
  3. 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.

Thẻ: easyexcel Java annotation Excel formatting

Đăng vào ngày 11 tháng 6 lúc 02:49