4 điểm bởi abcdkh1209 2026-01-19 | 1 bình luận | Chia sẻ qua WhatsApp

Mỗi khi tạo tệp Excel trong Kotlin, tôi thấy đoạn mã dài dòng của Apache POI khá bất tiện. Chỉ để tạo một ô cũng phải đi qua Workbook → Sheet → Row → Cell, còn việc áp dụng style thì lại càng phức tạp hơn.

Vì vậy, tôi đã tạo một thư viện giúp đơn giản hóa việc tạo Excel bằng Kotlin DSL.

GitHub: https://github.com/clroot/kotlin-excel-dsl

Tính năng

  • Kết hợp DSL + annotation: trường hợp phức tạp thì dùng DSL, trường hợp đơn giản thì dùng annotation @Excel, @Column
  • Type-safe: kiểm tra lỗi cấu hình ngay tại thời điểm biên dịch
  • Cú pháp style kiểu CSS: định nghĩa style trực quan
  • Cung cấp theme mặc định: Modern, Minimal, Classic
  • Nhóm header: header nhiều hàng và tự động gộp ô

Ví dụ sử dụng

// Cách dùng DSL  
excel {  
    sheet<User>("Users") {  
        column("이름") { it.name }  
        column("나이") { it.age }  
        column("가입일") { it.joinedAt }  
        rows(users)  
    }  
}.writeTo(FileOutputStream("users.xlsx"))  
  
// Cách dùng annotation  
@Excel  
data class User(  
    @Column("이름") val name: String,  
    @Column("나이") val age: Int  
)  
excelOf(users).writeTo(output)  

Áp dụng style

excel {  
    styles {  
        header { bold(); backgroundColor(Color.GRAY) }  
        column("금액") {  
            body { align(Alignment.RIGHT); numberFormat("#,##0") }  
        }  
    }  
    // ...  
}  

Cài đặt

implementation("io.clroot.excel:excel-dsl:0.1.0")  

Có thể dùng trong môi trường Kotlin 2.2.0+ và JDK 21+. Rất mong nhận được phản hồi!

1 bình luận

 
hshim 2026-01-23

Đây đúng là một thư viện mà cá nhân tôi từng mong có, nên có vẻ sẽ dùng được khá hữu ích! Dù đây là thư viện dựa trên Excel, nhưng tôi cũng nghĩ sẽ hay nếu sau này có thêm tính năng export CSV hoặc PDF.