Ghi dữ liệu vào tệp Excel sử dụng Spring và Apache POI.

  1. Sơ lược 
    Một tính năng phổ biến của các ứng dụng web là khả năng tải xuống các tệp.Trong hướng dẫn này, chúng tôi sẽ trình bày một ví dụ đơn giản về việc tạo tệp có thể tải xuống và phục vụ nó từ ứng dụng Java Servlet

  2. Điều kiện tiên quyết:  Trong bài này chúng ta cần sử dụng thư viện.
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
    </dependency>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
    </dependency>

  3. Đặt vấn đề : Hãy giả định bạn đang có thông tin nào đó trong Database, hoặc một List dữ liệu đang cần xuất ra dạng excel để phục vụ cho các mục đích khác nhau. Vd: In ra thông tin các nhân viên có lương >=9.000.000 vnd.
  4. Hướng giải quyết vấn đề: Đầu tiên chúng ta cần có danh sách các nhân viên phù hợp với mức lương > 9.000.000. Sau đó danh sách này sẽ được xử lý để chuyển dổi dữ liệu sang dạng danh sách excel . Tôi đã xử lý như thế này.
  5. Thực hiện
    1. Tạo lớp Employee 

       

    2. Xây dựng  XlsxView trong spring.

       

      xây dựng xlsx view
    3. Xây dựng controller

        1.  

    4. Giải thích
      String exelName =“employee.xlsx”;
      // tên file excel sẽ dk tải xuống.
      Sheet sheet =workbook.createSheet(“Employee”);
      CreationHelper creationHelper =workbook.getCreationHelper();
      // style áp dụng cho row header (dòng tiêu đề )
      CellStyle cellStyle =workbook.createCellStyle();
      cellStyle.setFont(fontHeader);
      cellStyle.setLocked(true);
      // gán giá trị cho các cột đầu tiên (row header)
      for (int i=0;i<columName.length;i++){
      Cell cell =headerRow.createCell(i);
      cell.getStringCellValue().getBytes(Charset.forName(“UTF-8”));
      cell.setCellValue(columName[i]);
      cell.setCellStyle(cellStyle);
      }
      // cell style cho các dòng chứ thông tin
      CellStyle cellStyleF=workbook.createCellStyle();
      cellStyleF.setDataFormat(creationHelper.createDataFormat().getFormat(“dd-MM-yyyy”));

    5. Cách truyền dữ liệu từ controller và AbstractXslxView
  6. Test kết quả: LÊN TRÌNH DUYỆT VÀ gõ http://localhost:8080/dowload để xem kết quả.
  7. Tổng kết: Tải xuống tệp từ Servlet trở thành một quy trình đơn giản. Sử dụng các luồng cho phép chúng tôi phân phát dữ liệu dưới dạng byte và Loại phương tiện thông báo cho trình duyệt máy khách loại dữ liệu mong đợi.Trình duyệt xác định cách xử lý phản hồi, tuy nhiên, có rất nhiều cách để làm công việc này tùy vào yêu cầu của dự án và tech được sử dụng.

Các bài viết cùng chủ đề:

Top