Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

Thư viện hỗ trợ việc import, export excel

Discussion in 'CongDongJava member's Java Software' started by macarong35, 23/11/17.

  1. macarong35

    macarong35 Administrator Staff Member

    Dear all,
    Do trong quá trình làm việc, phải xử lý nhiều yêu cầu Import cũng như Export excel nên mình đã làm một thư viện hỗ trợ việc này để rút ngắn thời gian. Hôm nay mình xin phép chia sẻ thư viện này lên cho mọi người. Bạn nào có thư viện nào hay hơn thì chia sẻ nhé.
    Thư viện của mình viết có sử dụng apache poi nên các bạn cần thêm thư viện của Poi vào nhé. Xem thêm tại: https://poi.apache.org/. Bạn nào dùng maven thì đưa thư viện Poi vào nhé:
    PHP:
    <dependency>
        <
    groupId>org.apache.poi</groupId>
        <
    artifactId>poi</artifactId>
        <
    version>3.15</version>
    </
    dependency>
    Mình xin điểm qua 1 số tính năng của thư viện:
    • Export từ 1 list ra file excel
    • Import excel thành 1 List object
    • Sử dụng Annotation.
    • Hỗ trợ format ngày tháng với dữ liệu dạng Date
    • Cho phép chọn thứ tự export ra cho từng thuộc tính trong class
    • Cho phép chọn thuộc tính nào sẽ được export
    • Cho phép định nghĩa tên sheet và tên tiêu đề trong class.
    • Tự động chỉnh chiều rộng của cột trong excel để khớp với chiều dài nội dung
    • Hỗ trợ format cơ bản cho file excel (màu, chiều rộng, kiểu định dạng ngày)
    Hướng dẫn export
    1. Sử dụng annotation @Excel để khai báo cho class với các tham số:
    • name (String): Tên của sheet
    • autowith (bool): Tự động co giãn cột theo độ lớn của dữ liệu
    • sortByIndex (bool): Cho sắp xếp thứ tự, bắt đầu từ 0
    • selExport (bool): Cho phép lựa chọn thuộc tính nào sẽ được export. False thì sẽ export hết.
    Ví dụ:
    PHP:
    @Excel(name "Bao Cao"autowidth truesortByIndex trueselExport true)
    @
    Setter @Getter
    public class CicReportGeneral implements Serializable {
    2. Sử dụng annotation @EColumn cho thuộc tính trong class
    PHP:
        @EColumn(name "STT"export trueindex 0)
        private 
    int seq;

        @
    EColumn(name "Tên ĐVKD"export trueindex 1)
        private 
    String branchName;

        @
    EColumn(name "Mã Chi Nhánh"export falseindex 0)
        private 
    String branchCode;
    Đối với kiểu Date
    PHP:
        @EColumn(name "ISSUE_DATE"dateFormat "MM/dd/yyyy"export =trueindex 10)
        private 
    Date issueDate;
    3. Export
    Khai báo list:
    PHP:
     List<CicReportGenerallstReGen = ..... //Get data
    Đọc file template và tên file sẽ export
    PHP:
    String cicTemplate "CIC.REPORT.GENERAL.xls";  //File template
    String fileName "BAO_CAO_" System.currentTimeMillis() + ".xls"//File export name
    Resource resource = new ClassPathResource("report/cic/" cicTemplate); //Read template file
    InputStream file resource.getInputStream();
    Chuyển từ List sang kiểu byte[]
    PHP:
    ExcelCreator<CicReportGeneralexcelCreator = new ExcelCreator<CicReportGeneral>();
    byte[] bytes excelCreator.exportExcel(lstResGenfilefalsefalsetrue1null);
    Download file excel
    PHP:
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    response.addHeader("Content-Disposition""attachment; filename=\"" fileName "\"");
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                try {
                    
    response.getOutputStream().write(bytes);
                } catch (
    Exception e) {
                    
    e.printStackTrace();
                } 
    finally {
                    
    bos.close();
                }
    Trong thư viện mình còn bổ sung thêm nhiều option khi export như vị trí bắt đầu export, có tự tạo tiêu đề trong excel hay ko, có kẻ viền cho table không, và hỗ trợ điền thông tin vào 1 số vị trí cố định được định nghĩa sẵn trong file template, mình sẽ bổ sung ở bài viết sau cho chi tiết hơn.
    Có gì mọi người góp ý thêm nhé.
     

    Attached Files:

    Last edited: 23/11/17
    tranhuyvc, alovndev and Joe like this.
  2. alovndev

    alovndev New Member

    Dùng thư viện này cũng khá ok, thanks chủ thớt chia sẻ
     
    tranhuyvc likes this.

Chia sẻ trang này

Loading...