
Masz kilka skoroszytów programu Excel (XLSX, XLS) i chcesz połączyć je w jeden plik w celu raportowania lub przechowywania danych w jednym miejscu. Jako programista Java możesz łatwo programowo scalić wiele plików Excel w jeden plik. W tym artykule dowiesz się, jak połączyć wiele plików Excel w jeden za pomocą języka Java.
W tym artykule omówiono/omówiono następujące tematy:
- API Java do łączenia plików Excel
- Połącz wiele plików Excel w jeden za pomocą języka Java
- Połącz określone arkusze wielu plików Excel w jeden za pomocą języka Java
- Scal wiele arkuszy w jeden arkusz za pomocą języka Java
- Konsoliduj kolumny wielu arkuszy w jeden za pomocą języka Java
API Java do łączenia plików Excel
Do łączenia wielu plików Excel użyję Aspose.Cells for Java API. Ten interfejs API umożliwia tworzenie, manipulowanie, konwertowanie, ochronę i drukowanie arkuszy kalkulacyjnych bez polegania na programie Microsoft Excel. Umożliwia programowe wykonywanie funkcji automatyzacji programu Excel w aplikacjach Java.
Możesz pobrać plik JAR interfejsu API lub po prostu dodać następującą konfigurację pom.xml do swojej aplikacji Java opartej na Maven, aby wypróbować poniższe przykłady kodu.
<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 Połącz wiele plików Excel w jeden
Możesz łatwo programowo połączyć wiele plików Excel w jeden plik, wykonując kroki wymienione poniżej:
- Utwórz instancję klasy Workbook z pierwszym plikiem źródłowym
- Utwórz instancję klasy Workbook z drugim plikiem źródłowym
- Powtórz powyższy krok, aby połączyć więcej niż dwa pliki
- Wywołaj metodę combine() z drugą instancją pliku źródłowego
- Powtórz powyższy krok dla wszystkich plików źródłowych jeden po drugim
- Zapisz plik wyjściowy, wywołując metodę save() klasy Workbook
Poniższy przykładowy kod pokazuje, jak połączyć wiele plików programu Excel w jeden plik przy użyciu języka Java.
// Otwórz pierwszy plik Excela.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");
// Otwórz drugi plik Excela.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");
// Otwórz trzeci plik Excela.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");
// Skopiuj arkusze drugiego pliku Excel do pierwszego skoroszytu.
SourceBook1.combine(SourceBook2);
// Skopiuj arkusze trzeciego pliku Excel do pierwszego skoroszytu.
SourceBook1.combine(SourceBook3);
// Zapisz zaktualizowany pierwszy plik Excela jako nowy plik.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");

Połącz wiele plików Excel w jeden za pomocą języka Java
Klasa Workbook interfejsu API jest główną klasą używaną do tworzenia arkusza kalkulacyjnego Excel. Umożliwia otwieranie i zapisywanie natywnych plików Excel. Zapewnia także kilka właściwości i metod pracy z arkuszem kalkulacyjnym Excel. Metoda combine() tej klasy łączy bieżący skoroszyt z innym obiektem Workbook. Metoda save() klasy Workbook zapisuje plik wyjściowy pod określoną ścieżką.
Połącz określone arkusze wielu plików Excel w jeden — przewodnik po języku Java
Możesz łatwo programowo połączyć określone arkusze z wielu plików Excel w jeden plik, wykonując czynności wymienione poniżej:
- Utwórz instancję klasy Workbook dla pliku źródłowego 1
- Utwórz instancję klasy Workbook dla pliku źródłowego 2
- Powtórz powyższy krok, aby połączyć arkusze z więcej niż dwóch plików
- Utwórz instancję klasy Workbook dla pliku docelowego
- Dodaj arkusze kalkulacyjne za pomocą metody add() klasy WorksheetCollection
- Wywołaj metodę copy(), aby skopiować określony arkusz z pliku źródłowego nr 1 do pliku docelowego
- Wywołaj metodę copy(), aby skopiować określony arkusz z pliku źródłowego 2 do pliku docelowego
- Zmień nazwę arkuszy w pliku docelowym, używając metody setName().
- Zapisz plik docelowy, wywołując metodę save() klasy Workbook
Poniższy przykładowy kod pokazuje, jak połączyć określone arkusze z wielu plików programu Excel w jeden plik przy użyciu języka Java.
String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";
// Otwórz pierwszy plik Excela.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);
// Otwórz drugi plik Excela.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);
// Utwórz docelowy skoroszyt.
Workbook destWorkbook = new Workbook();
// Do Skoroszytu domyślnie dodawany jest pierwszy arkusz. Dodaj drugi arkusz.
destWorkbook.getWorksheets().add();
// Skopiuj arkusz Jan pierwszego pliku Excel do pliku docelowego.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));
// Skopiuj lipcowy arkusz drugiego pliku Excel do pliku docelowego.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));
// Domyślne nazwy arkuszy to odpowiednio „Arkusz1" i „Arkusz2".
// Nadajmy im sensowne nazwy.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");
// Zapisz plik docelowy.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");

Połącz określone arkusze wielu plików Excel w jeden za pomocą języka Java
Metoda właściwości getWorksheets() klasy Workbook zwraca kolekcję wszystkich arkuszy znajdujących się w skoroszycie. Możesz dodać arkusz do kolekcji arkuszy za pomocą metody add().
Klasa Worksheet tego interfejsu API reprezentuje pojedynczy arkusz. Zapewnia kilka właściwości i metod pracy z arkuszem. Metoda copy() tej klasy kopiuje zawartość i formaty z innego arkusza. Klasa Worksheet udostępnia także metody get(), umożliwiające pobranie określonego arkusza według jego indeksu lub nazwy. Metoda właściwości setName() ustawia nazwę arkusza.
Java Scal wiele arkuszy w jeden arkusz
Możesz łatwo programowo scalić wiele arkuszy pliku Excel w jeden arkusz, wykonując czynności wymienione poniżej:
- Utwórz instancję klasy Workbook dla pliku źródłowego
- Dodaj nowy arkusz za pomocą metody add().
- Wykonaj iterację po arkuszach źródłowych i wykonaj następujące czynności:
- utwórz zakres komórek i kolumn dla jednego arkusza za pomocą metody createRange().
- Skopiuj dane z zakresu źródłowego do zakresu docelowego za pomocą metody copy().
- Zapisz plik wyjściowy, wywołując metodę save() klasy Workbook
Poniższy przykładowy kod pokazuje, jak scalić wiele arkuszy w jeden arkusz przy użyciu języka Java.
// Otwórz plik Excel zawierający arkusze:
// Styczeń, luty, marzec i kwiecień
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");
// Dodaj arkusz o nazwie Arkusz_podsumowania
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");
// Wykonaj iterację po arkuszach źródłowych, aby skopiować dane do pliku
// arkusz podsumowujący
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;
for (String sheetName : nameOfSourceWorksheets)
{
// Pobierz arkusz
Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);
Range sourceRange = null;
Range destRange = null;
// W przypadku arkusza Jan uwzględnij wszystkie wiersze i kolumny.
if (sheetName.equals("Jan"))
{
sourceRange = sourceSheet.getCells().getMaxDisplayRange();
destRange = summarySheet.getCells().createRange(
sourceRange.getFirstRow() + totalRowCount,
sourceRange.getFirstColumn(),
sourceRange.getRowCount(),
sourceRange.getColumnCount());
}
// W przypadku innych arkuszy
// wyklucz pierwszy wiersz (który zawiera nagłówki).
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());
}
// Kopiuje dane, formatowanie, obiekty rysunkowe itp. z pliku a
// zakres źródłowy do zakresu docelowego.
destRange.copy(sourceRange);
totalRowCount = sourceRange.getRowCount() + totalRowCount;
}
// Zapisz skoroszyt
workbook.save("C:\\Files\\Summarized.xlsx");

Scal wiele arkuszy w jeden arkusz za pomocą języka Java
Metoda właściwości getCells() klasy Worksheet udostępnia kolekcję komórek dostępnych w arkuszu. Klasa Cells interfejsu API reprezentuje zbiór obiektów istotnych dla komórki, np. Cell, Row itd. Właściwość getMaxDisplayRange() Metoda klasy Cells zapewnia maksymalny zakres, który obejmuje dane, scalone komórki i kształty. Klasa Range reprezentuje zakres komórek w arkuszu kalkulacyjnym.
Klasa Cells udostępnia następujące metody tworzenia zakresu komórek:
- createRange(int FirstIndex, int number, boolean isVertical) metoda służąca do tworzenia obiektu Range z wierszy komórek lub kolumn komórek.
- createRange(int FirstRow, int FirstColumn, int totalRows, int totalColumns), aby utworzyć obiekt Range z zakresu komórek.
- Metoda createRange(java.lang.String adres) tworzy obiekt Range na podstawie adresu z zakresu.
- Metoda createRange(java.lang.String UpperLeftCell, java.lang.String LowerRightCell) tworzy obiekt Range z zakresu komórek.
Metoda copy() klasy Range kopiuje wszelkiego rodzaju dane (w tym formuły), formatowanie, obiekty rysunkowe itp. z zakresu źródłowego do zakresu docelowego.
Konsoliduj kolumny wielu arkuszy w jeden za pomocą języka Java
Możesz łatwo programowo scalić kolumny wielu arkuszy w jeden arkusz, wykonując czynności wymienione poniżej:
- Utwórz instancję klasy Workbook dla pliku źródłowego
- Dodaj nowy arkusz za pomocą metody add().
- Wykonaj iterację po arkuszach źródłowych i wykonaj następujące czynności:
- Skopiuj wszystkie kolumny jedna po drugiej za pomocą metody copyColumn() z komórkami arkusza źródłowego i indeksem kolumny
- Zapisz plik wyjściowy, wywołując metodę save() klasy Workbook
Poniższy przykładowy kod pokazuje, jak skonsolidować kolumny wielu arkuszy w jeden arkusz przy użyciu języka Java.
// Otwórz skoroszyt.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");
// Dodaj arkusz o nazwie Arkusz_podsumowania
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");
// Wykonuj iteracje po arkuszach, aby skopiować kolumny do pliku
// arkusz podsumowujący
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0;
for (String sheetName : nameOfSourceWorksheets) {
Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);
if (sheetName.equals("Products")) {
// Pobierz kolekcję kolumn arkusza
ColumnCollection columns = sourceSheet.getCells().getColumns();
// skopiuj kolumnę do summaSheet
for (Column column : (Iterable<Column>) columns)
{
summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
totalCol = totalCol + 1;
}
}
else {
// Pobierz kolekcję kolumn arkusza
ColumnCollection columns = sourceSheet.getCells().getColumns();
// skopiuj kolumnę do summaSheet
for (Column column : (Iterable<Column>) columns)
{
summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
totalCol = totalCol + 1;
}
}
}
// Zapisz plik Excela.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");

Konsoliduj kolumny wielu arkuszy w jeden za pomocą języka Java
Metoda właściwości getColumns() klasy Cells umożliwia zbieranie kolumn dostępnych w arkuszu. Klasa ColumnCollection reprezentuje zbiór poszczególnych kolumn w arkuszu, podczas gdy klasa Column reprezentuje pojedynczą kolumnę w arkuszu.
Metoda copyColumn() klasy Cells kopiuje dane i formaty całej kolumny. Klasa Cells udostępnia również przeciążone metody copyColumn() umożliwiające kopiowanie danych z kolumnami PasteOptions, numerem kolumny, sumą źródłową i docelową itp.
Zdobądź bezpłatną licencję
Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.
Wniosek
W tym artykule dowiedziałeś się, jak połączyć wiele plików Excel w jeden plik. Nauczyłeś się także, jak łączyć określone arkusze wielu plików Excel przy użyciu języka Java. Co więcej, nauczyłeś się programowo łączyć wiele arkuszy w jeden arkusz. W tym artykule wyjaśniono również, jak skonsolidować kolumny wielu arkuszy w jeden przy użyciu języka Java. Możesz dowiedzieć się więcej o Aspose.Cells for Java API, korzystając z dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.