
Bạn có một số sổ làm việc Excel (XLSX, XLS) và bạn muốn hợp nhất chúng lại với nhau thành một tệp để báo cáo hoặc để giữ dữ liệu ở một nơi. Là nhà phát triển Java, bạn có thể dễ dàng hợp nhất nhiều tệp Excel thành một tệp theo chương trình. Trong bài viết này, bạn sẽ tìm hiểu cách kết hợp nhiều tệp Excel thành một bằng cách sử dụng Java.
Các chủ đề sau được thảo luận/đề cập trong bài viết này:
- API Java để hợp nhất các tệp Excel
- Kết hợp nhiều tệp Excel thành một bằng cách sử dụng Java
- Kết hợp các bảng tính cụ thể của nhiều tệp Excel thành một bằng cách sử dụng Java
- Hợp nhất nhiều trang tính thành một trang tính bằng cách sử dụng Java
- Hợp nhất các cột của nhiều bảng tính thành một bằng cách sử dụng Java
API Java để hợp nhất các tệp Excel
Để hợp nhất nhiều tệp Excel, tôi sẽ sử dụng Aspose.Cells for Java API. API này cho phép bạn tạo, thao tác, chuyển đổi, bảo vệ hoặc in bảng tính mà không cần dựa vào Microsoft Excel. Nó cho phép bạn thực hiện các tính năng tự động hóa Excel theo chương trình trong các ứng dụng Java của bạn.
Bạn có thể tải xuống JAR của API hoặc chỉ cần thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên Maven của bạn để thử các ví dụ mã được đề cập bên dưới.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-cells</artifactId>
<version>21.8</version>
</dependency>
Java Kết hợp nhiều tệp Excel thành một
Bạn có thể dễ dàng kết hợp nhiều tệp Excel thành một tệp theo chương trình bằng cách thực hiện theo các bước được đề cập bên dưới:
- Tạo một phiên bản của lớp Workbook với tệp nguồn đầu tiên
- Tạo một phiên bản của lớp Workbook với tệp nguồn thứ hai
- Lặp lại bước trên để kết hợp nhiều hơn hai tệp
- Gọi phương thức combine() với phiên bản tệp nguồn thứ hai
- Lặp lại bước trên cho tất cả các tệp nguồn từng cái một
- Lưu tệp đầu ra bằng cách gọi phương thức save() của lớp Workbook
Mẫu mã sau đây cho biết cách kết hợp nhiều tệp Excel thành một tệp bằng Java.
// Mở file excel đầu tiên.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");
// Mở file excel thứ hai.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");
// Mở tệp excel thứ ba.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");
// Sao chép bảng tính của tệp Excel thứ hai vào sổ làm việc đầu tiên.
SourceBook1.combine(SourceBook2);
// Sao chép bảng tính của tệp Excel thứ ba vào sổ làm việc đầu tiên.
SourceBook1.combine(SourceBook3);
// Lưu tệp excel đầu tiên được cập nhật dưới dạng tệp mới.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");

Kết hợp nhiều tệp Excel thành một bằng cách sử dụng Java
Lớp Workbook của API là lớp chính được sử dụng để tạo Bảng tính Excel. Nó cho phép bạn mở và lưu các tệp Excel gốc. Nó cũng cung cấp một số thuộc tính và phương thức để làm việc với Bảng tính Excel. Phương thức combine() của lớp này kết hợp sổ làm việc hiện tại với một đối tượng Workbook khác. Phương thức save() của lớp Workbook lưu tệp đầu ra tại đường dẫn tệp đã chỉ định.
Kết hợp các bảng tính cụ thể của nhiều tệp Excel thành một - Hướng dẫn Java
Bạn có thể dễ dàng kết hợp các trang tính cụ thể từ nhiều tệp Excel thành một tệp duy nhất theo chương trình bằng cách thực hiện theo các bước được đề cập bên dưới:
- Tạo một phiên bản của lớp Workbook cho tệp nguồn 1
- Tạo một phiên bản của lớp Workbook cho tệp nguồn 2
- Lặp lại bước trên để kết hợp các bảng tính từ nhiều hơn hai tệp
- Tạo một phiên bản của lớp Workbook cho tệp đích
- Thêm (các) bảng tính bằng phương thức add() của lớp WorksheetCollection
- Gọi phương thức copy() để sao chép bảng tính được chỉ định từ tệp nguồn 1 sang tệp đích
- Gọi phương thức copy() để sao chép bảng tính được chỉ định từ tệp nguồn 2 sang tệp đích
- Đổi tên bảng tính trong tệp đích bằng cách sử dụng phương thức setName()
- Lưu tệp đích bằng cách gọi phương thức save() của lớp Workbook
Mẫu mã sau đây cho biết cách kết hợp các trang tính cụ thể từ nhiều tệp Excel vào một tệp bằng cách sử dụng Java.
String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";
// Mở tệp Excel đầu tiên.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);
// Mở tệp Excel thứ hai.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);
// Tạo sổ làm việc đích.
Workbook destWorkbook = new Workbook();
// Theo mặc định, bảng tính đầu tiên được thêm vào Sổ làm việc. Thêm bảng tính thứ hai.
destWorkbook.getWorksheets().add();
// Sao chép bảng tính tháng 1 của tệp Excel đầu tiên sang tệp đích.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));
// Sao chép bảng tính tháng 7 của tệp Excel thứ hai vào tệp đích.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));
// Theo mặc định, tên bảng tính lần lượt là "Sheet1" và "Sheet2".
// Hãy đặt cho chúng những cái tên có ý nghĩa.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");
// Lưu tệp đích.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");

Kết hợp các bảng tính cụ thể của nhiều tệp Excel thành một bằng cách sử dụng Java
Phương thức thuộc tính getWorksheets() của lớp Workbook trả về một tập hợp tất cả các trang tính trong Workbook. Bạn có thể thêm một bảng tính vào bộ sưu tập các bảng tính bằng phương thức add().
Lớp Bảng tính của API này đại diện cho một bảng tính duy nhất. Nó cung cấp một số thuộc tính và phương thức để làm việc với một bảng tính. Phương thức copy() của lớp này sao chép nội dung và định dạng từ một bảng tính khác. Lớp Worksheet cũng cung cấp các phương thức get() để lấy một bảng tính cụ thể theo chỉ mục hoặc theo tên của nó. Phương thức thuộc tính setName() đặt tên của bảng tính.
Java Hợp nhất nhiều trang tính thành một trang tính duy nhất
Bạn có thể dễ dàng hợp nhất nhiều trang tính của một tệp Excel thành một trang tính duy nhất theo chương trình bằng cách thực hiện theo các bước được đề cập bên dưới:
- Tạo một phiên bản của lớp Workbook cho tệp nguồn
- Thêm một bảng tính mới bằng phương thức add()
- Lặp lại các bảng tính nguồn và thực hiện các thao tác sau:
- tạo một phạm vi ô và cột cho một trang tính bằng phương thức createRange()
- Sao chép dữ liệu từ phạm vi nguồn sang phạm vi đích bằng phương thức copy()
- Lưu tệp đầu ra bằng cách gọi phương thức save() của lớp Workbook
Mẫu mã sau đây cho biết cách hợp nhất nhiều trang tính vào một trang tính bằng cách sử dụng Java.
// Mở tệp Excel có chứa các bảng tính:
// Tháng một, tháng hai, tháng ba và tháng tư
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");
// Thêm một bảng tính có tên Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");
// Lặp lại các bảng tính nguồn để sao chép dữ liệu vào
// bảng tóm tắt
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;
for (String sheetName : nameOfSourceWorksheets)
{
// Nhận bảng tính
Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);
Range sourceRange = null;
Range destRange = null;
// Trong trường hợp bảng tính tháng 1, hãy bao gồm tất cả các hàng và cột.
if (sheetName.equals("Jan"))
{
sourceRange = sourceSheet.getCells().getMaxDisplayRange();
destRange = summarySheet.getCells().createRange(
sourceRange.getFirstRow() + totalRowCount,
sourceRange.getFirstColumn(),
sourceRange.getRowCount(),
sourceRange.getColumnCount());
}
// Trong trường hợp các bảng tính khác,
// loại trừ hàng đầu tiên (có chứa tiêu đề).
else
{
int mdatarow = sourceSheet.getCells().getMaxDataRow(); // Zero-based
int mdatacol = sourceSheet.getCells().getMaxDataColumn(); // Zero-based
sourceRange = sourceSheet.getCells().createRange(0 + 1, 0, mdatarow, mdatacol + 1);
destRange = summarySheet.getCells().createRange(
sourceRange.getFirstRow() + totalRowCount -1,
sourceRange.getFirstColumn(),
sourceRange.getRowCount(),
sourceRange.getColumnCount());
}
// Sao chép dữ liệu, định dạng, vẽ đối tượng, v.v. từ một
// phạm vi nguồn đến phạm vi đích.
destRange.copy(sourceRange);
totalRowCount = sourceRange.getRowCount() + totalRowCount;
}
// Lưu sổ làm việc
workbook.save("C:\\Files\\Summarized.xlsx");

Hợp nhất nhiều trang tính thành một trang tính bằng cách sử dụng Java
Phương thức thuộc tính getCells() của lớp Worksheet cung cấp tập hợp các Ô có sẵn trong trang tính. Lớp Ô của API đại diện cho một tập hợp các đối tượng có liên quan đến một ô, chẳng hạn như [Ô Ô, Hàng, v.v. Thuộc tính getMaxDisplayRange() phương thức của lớp Ô cung cấp phạm vi tối đa bao gồm dữ liệu, ô được hợp nhất và hình dạng. Lớp Phạm vi đại diện cho một phạm vi ô trong bảng tính.
Lớp Cells cung cấp các phương thức sau để tạo một phạm vi ô:
- createRange(int firstIndex, int number, boolean isVertical) để tạo một đối tượng Range từ các hàng ô hoặc cột của ô.
- createRange(int firstRow, int firstColumn, int TotalRows, int TotalColumns) để tạo đối tượng Phạm vi từ một phạm vi ô.
- Phương thức createRange(java.lang.String address) tạo một đối tượng Range từ một địa chỉ của phạm vi.
- Phương thức createRange(java.lang.String UpperLeftCell, java.lang.String lowRightCell) tạo một đối tượng Range từ một dải ô.
Phương thức copy() của lớp Range sao chép tất cả các loại dữ liệu (bao gồm công thức), định dạng, vẽ đối tượng, v.v. từ phạm vi nguồn đến phạm vi đích.
Hợp nhất các cột của nhiều bảng tính thành một bằng cách sử dụng Java
Bạn có thể dễ dàng hợp nhất các cột của nhiều trang tính thành một trang tính duy nhất theo chương trình bằng cách thực hiện theo các bước được đề cập bên dưới:
- Tạo một phiên bản của lớp Workbook cho tệp nguồn
- Thêm một bảng tính mới bằng phương thức add()
- Lặp lại các bảng tính nguồn và thực hiện các thao tác sau:
- Sao chép tất cả các cột lần lượt bằng phương thức copyColumn() với các ô của trang tính nguồn và chỉ mục cột
- Lưu tệp đầu ra bằng cách gọi phương thức save() của lớp Workbook
Mẫu mã sau đây cho biết cách hợp nhất các cột của nhiều trang tính vào một trang tính bằng cách sử dụng Java.
// Mở một Sổ làm việc.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");
// Thêm một bảng tính có tên Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");
// Lặp lại các trang tính để sao chép các cột vào
// bảng tóm tắt
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0;
for (String sheetName : nameOfSourceWorksheets) {
Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);
if (sheetName.equals("Products")) {
// Nhận bộ sưu tập cột bảng tính
ColumnCollection columns = sourceSheet.getCells().getColumns();
// sao chép cột vào summaySheet
for (Column column : (Iterable<Column>) columns)
{
summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
totalCol = totalCol + 1;
}
}
else {
// Nhận bộ sưu tập cột bảng tính
ColumnCollection columns = sourceSheet.getCells().getColumns();
// sao chép cột vào summaySheet
for (Column column : (Iterable<Column>) columns)
{
summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
totalCol = totalCol + 1;
}
}
}
// Lưu tập tin excel.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");

Hợp nhất các cột của nhiều bảng tính thành một bằng cách sử dụng Java
Phương thức thuộc tính getColumns() của lớp Cells cung cấp tập hợp các cột có sẵn trong trang tính. Lớp ColumnCollection đại diện cho tập hợp các cột riêng lẻ trong một trang tính, trong khi lớp Column đại diện cho một cột duy nhất trong một trang tính.
Phương thức copyColumn() của lớp Cells sao chép dữ liệu và định dạng của toàn bộ một cột. Lớp Cells cũng cung cấp các phương thức copyColumn() bị quá tải để sao chép dữ liệu với các cột PasteOptions, số cột, tổng nguồn và đích, v.v.
Nhận giấy phép miễn phí
Bạn có thể dùng thử API mà không bị giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.
Phần kết luận
Trong bài viết này, bạn đã học cách kết hợp nhiều tệp Excel thành một tệp. Bạn cũng đã học cách kết hợp các trang tính cụ thể của nhiều tệp Excel bằng Java. Hơn nữa, bạn đã học cách hợp nhất nhiều trang tính thành một trang tính duy nhất theo chương trình. Bài viết này cũng giải thích cách hợp nhất các cột của nhiều trang tính thành một cột bằng cách sử dụng Java. Bạn có thể tìm hiểu thêm về Aspose.Cells cho API Java bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.