Scal wiele plików Excel w jeden

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

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:

  1. Utwórz instancję klasy Workbook z pierwszym plikiem źródłowym
  2. Utwórz instancję klasy Workbook z drugim plikiem źródłowym
  3. Powtórz powyższy krok, aby połączyć więcej niż dwa pliki
  4. Wywołaj metodę combine() z drugą instancją pliku źródłowego
  5. Powtórz powyższy krok dla wszystkich plików źródłowych jeden po drugim
  6. 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

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:

  1. Utwórz instancję klasy Workbook dla pliku źródłowego 1
  2. Utwórz instancję klasy Workbook dla pliku źródłowego 2
  3. Powtórz powyższy krok, aby połączyć arkusze z więcej niż dwóch plików
  4. Utwórz instancję klasy Workbook dla pliku docelowego
  5. Dodaj arkusze kalkulacyjne za pomocą metody add() klasy WorksheetCollection
  6. Wywołaj metodę copy(), aby skopiować określony arkusz z pliku źródłowego nr 1 do pliku docelowego
  7. Wywołaj metodę copy(), aby skopiować określony arkusz z pliku źródłowego 2 do pliku docelowego
  8. Zmień nazwę arkuszy w pliku docelowym, używając metody setName().
  9. 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

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

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

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.

Zobacz też