Xuất khởi động mùa xuân Excel

Trong hướng dẫn này, chúng tôi sẽ chứng minh việc sử dụng API Apache POI và JExcel để làm việc với bảng tính Excel

Cả hai thư viện đều có thể được sử dụng để đọc, viết và sửa đổi nội dung của bảng tính Excel một cách linh hoạt và cung cấp một cách hiệu quả để tích hợp Microsoft Excel vào Ứng dụng Java

đọc thêm

Chèn một hàng trong Excel bằng Apache POI

Tìm hiểu cách chèn một hàng mới giữa hai hàng trong tệp Excel bằng thư viện Apache POI

Đọc thêm →

Thêm cột vào trang tính Excel bằng Apache POI

Tìm hiểu cách thêm cột vào trang tính Excel bằng Java với thư viện Apache POI

Đọc thêm →

Đọc các giá trị từ Excel trong Java

Tìm hiểu cách truy cập các giá trị ô khác nhau bằng Apache POI

Đọc thêm →

2. Phụ thuộc Maven

Để bắt đầu, chúng ta sẽ cần thêm các phụ thuộc sau vào pom của mình. tập tin xml


    org.apache.poi
    poi
    5.2.0


    org.apache.poi
    poi-ooxml
    5.2.0

Có thể tải xuống các phiên bản mới nhất của poi-ooxml và jxls-jexcel từ Maven Central

3. POI của Apache

Thư viện Apache POI hỗ trợ cả hai. xls và. xlsx và là một thư viện phức tạp hơn các thư viện Java khác để làm việc với các tệp Excel

Nó cung cấp giao diện Sổ làm việc để lập mô hình tệp Excel và các giao diện Trang tính, Hàng và Ô để mô hình hóa các thành phần của tệp Excel, cũng như triển khai từng giao diện cho cả hai định dạng tệp

Khi làm việc với cái mới hơn. xlsx, chúng tôi sẽ sử dụng các lớp XSSFWorkbook, XSSFSheet, XSSFRow và XSSFCell

Làm việc với người lớn tuổi hơn. xls, chúng tôi sử dụng các lớp HSSFWorkbook, HSSFSheet, HSSFRow và HSSFCell

3. 1. Đọc từ Excel

Hãy tạo một phương thức mở một. xlsx và sau đó đọc nội dung từ trang đầu tiên của tệp

Phương pháp đọc nội dung ô khác nhau tùy thuộc vào loại dữ liệu trong ô. Loại nội dung ô có thể được xác định bằng phương thức getCellType() của giao diện Ô

Trước tiên, hãy mở tệp từ một vị trí nhất định

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);

Tiếp theo, hãy truy xuất trang tính đầu tiên của tệp và lặp qua từng hàng

Sheet sheet = workbook.getSheetAt(0);

Map> data = new HashMap<>();
int i = 0;
for (Row row : sheet) {
    data.put(i, new ArrayList());
    for (Cell cell : row) {
        switch (cell.getCellType()) {
            case STRING: .. break;
            case NUMERIC: .. break;
            case BOOLEAN: .. break;
            case FORMULA: .. break;
            default: data.get(new Integer(i)).add(" ");
        }
    }
    i++;
}

Apache POI có các phương pháp khác nhau để đọc từng loại dữ liệu. Hãy mở rộng nội dung của từng trường hợp chuyển đổi ở trên

Khi giá trị enum của loại ô là CHUỖI, nội dung sẽ được đọc bằng phương thức getRichStringCellValue() của giao diện Ô

data.get(new Integer(i)).add(cell.getRichStringCellValue().getString());

Các ô có kiểu nội dung SỐ có thể chứa ngày hoặc số và được đọc theo cách sau

if (DateUtil.isCellDateFormatted(cell)) {
    data.get(i).add(cell.getDateCellValue() + "");
} else {
    data.get(i).add(cell.getNumericCellValue() + "");
}

Đối với các giá trị BOOLEAN, chúng ta có phương thức getBooleanCellValue()

data.get(i).add(cell.getBooleanCellValue() + "");

Và khi loại ô là CÔNG THỨC, chúng ta có thể sử dụng phương thức getCellFormula()

data.get(i).add(cell.getCellFormula() + "");

3. 2. Ghi vào Excel

Apache POI sử dụng cùng một giao diện được trình bày trong phần trước để ghi vào tệp Excel và hỗ trợ tạo kiểu tốt hơn JExcel

Hãy tạo một phương thức ghi danh sách những người vào một trang tính có tiêu đề “Người”

Đầu tiên, chúng ta sẽ tạo và tạo kiểu cho một hàng tiêu đề có chứa các ô “Tên” và “Tuổi”

Workbook workbook = new XSSFWorkbook();

Sheet sheet = workbook.createSheet("Persons");
sheet.setColumnWidth(0, 6000);
sheet.setColumnWidth(1, 4000);

Row header = sheet.createRow(0);

CellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

XSSFFont font = ((XSSFWorkbook) workbook).createFont();
font.setFontName("Arial");
font.setFontHeightInPoints((short) 16);
font.setBold(true);
headerStyle.setFont(font);

Cell headerCell = header.createCell(0);
headerCell.setCellValue("Name");
headerCell.setCellStyle(headerStyle);

headerCell = header.createCell(1);
headerCell.setCellValue("Age");
headerCell.setCellStyle(headerStyle);

Tiếp theo, hãy viết nội dung của bảng với một phong cách khác

________số 8

Cuối cùng, hãy viết nội dung vào một “temp. xlsx” trong thư mục hiện tại và đóng sổ làm việc

File currDir = new File(".");
String path = currDir.getAbsolutePath();
String fileLocation = path.substring(0, path.length() - 1) + "temp.xlsx";

FileOutputStream outputStream = new FileOutputStream(fileLocation);
workbook.write(outputStream);
workbook.close();

Hãy kiểm tra các phương pháp trên trong bài kiểm tra JUnit ghi nội dung vào tạm thời. xlsx và sau đó đọc cùng một tệp để xác minh tệp có chứa văn bản chúng tôi đã viết

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);
0

4. JExcel

Thư viện JExcel là một thư viện gọn nhẹ có ưu điểm là dễ sử dụng hơn Apache POI nhưng có nhược điểm là nó chỉ hỗ trợ xử lý các tệp Excel trong. định dạng xls (1997-2003)

Tại thời điểm này,. tệp xlsx không được hỗ trợ

4. 1. Đọc từ Excel

Để làm việc với các tệp Excel, thư viện này cung cấp một loạt các lớp đại diện cho các phần khác nhau của tệp Excel. Lớp Workbook đại diện cho toàn bộ tập hợp các trang tính. Lớp Sheet đại diện cho một trang tính và lớp Cell đại diện cho một ô duy nhất của bảng tính

Hãy viết một phương thức tạo một sổ làm việc từ một tệp Excel đã chỉ định, lấy trang đầu tiên của tệp rồi duyệt qua nội dung của nó và thêm từng hàng trong HashMap

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);
1

4. 2. Ghi vào Excel

Để ghi vào tệp Excel, thư viện JExcel cung cấp các lớp tương tự như các lớp được sử dụng ở trên, mô hình hóa tệp bảng tính. WritableWorkbook, WritableSheet và WritableCell

Lớp WritableCell có các lớp con tương ứng với các loại nội dung khác nhau có thể viết. Nhãn, Ngày giờ, Số, Boolean, Trống và Công thức

Thư viện này cũng cung cấp hỗ trợ cho định dạng cơ bản, chẳng hạn như kiểm soát phông chữ, màu sắc và chiều rộng ô

Hãy viết một phương thức tạo một sổ làm việc có tên là “temp. xls” trong thư mục hiện tại và sau đó viết nội dung giống như chúng tôi đã viết trong phần Apache POI

Đầu tiên, hãy tạo sổ làm việc

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);
2

Tiếp theo, hãy tạo trang tính đầu tiên và viết tiêu đề của tệp excel, chứa các ô “Tên” và “Tuổi”

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);
3

Với một style mới, chúng ta hãy viết nội dung của bảng vừa tạo

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);
4

Điều rất quan trọng cần nhớ là ghi vào tệp và đóng tệp ở cuối để các quy trình khác có thể sử dụng tệp bằng cách sử dụng các phương thức write() và close() của lớp Workbook

FileInputStream file = new FileInputStream(new File(fileLocation));
Workbook workbook = new XSSFWorkbook(file);
5

5. Phần kết luận

Bài viết này đã minh họa cách sử dụng Apache POI API và JExcel API để đọc và ghi một tệp Excel từ một chương trình Java

Làm cách nào để xuất excel bằng khởi động mùa xuân?

Khởi động mùa xuân. Tải xuống tệp Excel từ bảng cơ sở dữ liệu MySQL .
Spring Boot Rest API. Tải xuống tệp Excel
Thiết lập khởi động mùa xuân Tải xuống dự án tệp Excel
Định cấu hình nguồn dữ liệu mùa xuân, JPA, Hibernate
Xác định mô hình dữ liệu
Tạo Data Repository để làm việc với Database
Triển khai lớp trợ giúp Excel
Tạo dịch vụ tệp Excel

Làm cách nào để xuất Excel từ Java?

Xuất ArrayList sang Excel trong Java .
Tạo một thể hiện của lớp Workbook
Nhận trang tính trong một thể hiện của lớp Worksheet
Tạo một danh sách mảng chứa các giá trị chuỗi
Gọi phương thức nhập ArrayList() với danh sách mảng
Lưu tệp đầu ra bằng cách gọi phương thức save() của lớp Workbook

Làm cách nào để đọc dữ liệu từ tệp Excel trong Spring Boot?

Tôi xin tóm tắt các bước đọc từ file Excel. .
tạo Sổ làm việc từ InputStream
tạo Sheet bằng Workbook. phương thức getSheet()
lặp qua Row s bằng Iterator với Sheet. iterator() và Iterator. .
từ mỗi Row , lặp lại Cell s
với mỗi Ô, sử dụng getNumericCellValue(), getStringCellValue()…

Làm cách nào để ghi tệp Excel bằng Java bằng Apache POI?

Thủ tục. Viết tệp bằng POI rất đơn giản và bao gồm các bước sau. .
Tạo sổ làm việc
Tạo sheet trong workbook
Tạo một hàng trong trang tính
Thêm ô trong trang tính
Lặp lại bước 3 và 4 để ghi thêm dữ liệu
Đóng luồng đầu ra