combinare più file Excel in uno utilizzando Java

Si dispone di diverse cartelle di lavoro di Excel e si desidera combinarle in un unico file per la creazione di report o per conservare i dati in un’unica posizione. Come sviluppatore Java, puoi facilmente unire più file Excel in un unico file a livello di codice. In questo articolo imparerai come combinare più file Excel in uno solo usando Java.

I seguenti argomenti sono discussi/trattati in questo articolo:

API Java per unire file Excel

Per unire più file Excel, userò Aspose.Cells per API Java. Questa API ti consente di creare, manipolare, convertire, proteggere o stampare fogli di calcolo senza fare affidamento su Microsoft Excel. Ti consente di eseguire le funzionalità di automazione di Excel in modo programmatico nelle tue applicazioni Java.

Puoi scaricare il JAR dell’API o semplicemente aggiungere la seguente configurazione pom.xml nella tua applicazione Java basata su Maven per provare gli esempi di codice indicati di seguito.

<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>

Combina più file Excel in uno usando Java

È possibile combinare facilmente più file Excel in un unico file a livello di codice seguendo i passaggi indicati di seguito:

  • Crea un’istanza della classe Workbook con il primo file di origine
  • Crea un’istanza della classe Workbook con il secondo file di origine
  • Ripetere il passaggio precedente per combinare più di due file
  • Chiama il metodo combine() con la seconda istanza del file di origine
  • Ripetere il passaggio precedente per tutti i file di origine uno per uno
  • Salva il file di output chiamando il metodo save() della classe Workbook

L’esempio di codice seguente mostra come combinare più file Excel in un unico file usando Java.

// Apri il primo file excel.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Apri il secondo file excel.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");

// Apri il terzo file excel.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");

// Copia i fogli di lavoro del secondo file Excel nella prima cartella di lavoro.
SourceBook1.combine(SourceBook2);

// Copia i fogli di lavoro del terzo file Excel nella prima cartella di lavoro.
SourceBook1.combine(SourceBook3);

// Salva il primo file excel aggiornato come nuovo file.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");
Combina più file Excel in uno usando Java

Combina più file Excel in uno usando Java

La classe Workbook dell’API è la classe principale utilizzata per creare un foglio di calcolo Excel. Ti consente di aprire e salvare i file Excel nativi. Fornisce inoltre diverse proprietà e metodi per lavorare con il foglio di calcolo di Excel. Il metodo combine() di questa classe combina la cartella di lavoro corrente con un altro oggetto cartella di lavoro. Il metodo save() della classe Workbook salva il file di output nel percorso del file specificato.

Combina fogli di lavoro specifici di più file Excel in uno utilizzando Java

È possibile combinare facilmente fogli di lavoro specifici da più file Excel in un unico file a livello di codice seguendo i passaggi indicati di seguito:

  • Crea un’istanza della classe Workbook per il file di origine 1
  • Crea un’istanza della classe Workbook per il file di origine 2
  • Ripetere il passaggio precedente per combinare fogli di lavoro da più di due file
  • Crea un’istanza della classe Workbook per il file di destinazione
  • Aggiungi fogli di lavoro utilizzando il metodo add() della classe WorksheetCollection
  • Chiama il metodo copy() per copiare il foglio di lavoro specificato dal file di origine 1 al file di destinazione
  • Chiama il metodo copy() per copiare il foglio di lavoro specificato dal file di origine 2 al file di destinazione
  • Rinominare i fogli di lavoro nel file di destinazione utilizzando il metodo setName().
  • Salva il file di destinazione chiamando il metodo save() della classe Workbook

L’esempio di codice seguente mostra come combinare fogli di lavoro specifici da più file di Excel in un unico file usando Java.

String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";

// Apri il primo file Excel.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);

// Apri il secondo file Excel.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);

// Crea cartella di lavoro di destinazione.
Workbook destWorkbook = new Workbook();

// Il primo foglio di lavoro viene aggiunto per impostazione predefinita alla cartella di lavoro. Aggiungi il secondo foglio di lavoro.
destWorkbook.getWorksheets().add();

// Copia il foglio di lavoro Jan del primo file Excel nel file di destinazione.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));

// Copia il foglio di lavoro di luglio del secondo file Excel nel file di destinazione.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));

// Per impostazione predefinita, i nomi dei fogli di lavoro sono rispettivamente "Foglio1" e "Foglio2".
// Diamo loro nomi significativi.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");

// Salva il file di destinazione.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");
Combina fogli di lavoro specifici di più file Excel in uno utilizzando Java

Combina fogli di lavoro specifici di più file Excel in uno utilizzando Java

Il metodo della proprietà getWorksheets() della classe Workbook restituisce una raccolta di tutti i fogli di lavoro in una cartella di lavoro. Puoi aggiungere un foglio di lavoro alla raccolta di fogli di lavoro usando il metodo add().

La classe Worksheet di questa API rappresenta un singolo foglio di lavoro. Fornisce diverse proprietà e metodi per lavorare con un foglio di lavoro. Il metodo copy() di questa classe copia contenuto e formati da un altro foglio di lavoro. La classe Worksheet fornisce anche metodi get() per ottenere un foglio di lavoro specifico in base al suo indice o al suo nome. Il metodo della proprietà setName() imposta il nome del foglio di lavoro.

Unisci più fogli di lavoro in un unico foglio di lavoro utilizzando Java

È possibile unire facilmente più fogli di lavoro di un file Excel in un unico foglio di lavoro a livello di codice seguendo i passaggi indicati di seguito:

  • Crea un’istanza della classe Workbook per il file di origine
  • Aggiungi un nuovo foglio di lavoro usando il metodo add()
  • Esegui l’iterazione sui fogli di lavoro di origine e procedi come segue:
    • creare un intervallo di celle e colonne per un foglio di lavoro utilizzando il metodo createRange().
    • Copia i dati da un intervallo di origine all’intervallo di destinazione utilizzando il metodo copy().
  • Salva il file di output chiamando il metodo save() della classe Workbook

L’esempio di codice seguente mostra come unire più fogli di lavoro in un foglio di lavoro utilizzando Java.

// Apri un file Excel che contiene i fogli di lavoro:
// gennaio, febbraio, marzo e aprile
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Aggiungi un foglio di lavoro denominato Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Esegui l'iterazione sui fogli di lavoro di origine per copiare i dati in
// foglio di lavoro riassuntivo
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;

for (String sheetName : nameOfSourceWorksheets)
{
  // Ottieni foglio di lavoro
    Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

    Range sourceRange = null;
    Range destRange = null;

    // In caso di foglio di lavoro Jan, includi tutte le righe e le colonne.
    if (sheetName.equals("Jan"))
    {
        sourceRange = sourceSheet.getCells().getMaxDisplayRange();

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }
    // In caso di altri fogli di lavoro,
    // escludere la prima riga (che contiene le intestazioni).
    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());
    }

    // Copia dati, formattazione, disegno di oggetti ecc. da a
    // dall'intervallo di origine all'intervallo di destinazione.
    destRange.copy(sourceRange);
    totalRowCount = sourceRange.getRowCount() + totalRowCount;
}

// Salva la cartella di lavoro 
workbook.save("C:\\Files\\Summarized.xlsx");
Unisci più fogli di lavoro in un foglio di lavoro utilizzando Java

Unisci più fogli di lavoro in un unico foglio di lavoro utilizzando Java

Il metodo della proprietà getCells() della classe Worksheet fornisce la raccolta delle celle disponibili nel foglio di lavoro. La classe Cells dell’API rappresenta una raccolta di oggetti rilevanti per una cella, come Cell, Row, ecc. La proprietà getMaxDisplayRange() metodo della classe Cells fornisce l’intervallo massimo che include dati, celle unite e forme. La classe Range rappresenta un intervallo di celle all’interno di un foglio di calcolo.

La classe Cells fornisce i seguenti metodi per creare un intervallo di celle:

  • createRange(int firstIndex, int number, boolean isVertical) per creare un oggetto Range da righe di celle o colonne di celle.
  • createRange(int firstRow, int firstColumn, int totalRows, int totalColumns) per creare un oggetto Range da un intervallo di celle.
  • Il metodo createRange(java.lang.String address) crea un oggetto Range da un indirizzo dell’intervallo.
  • Il metodo createRange(java.lang.String upperLeftCell, java.lang.String lowerRightCell) crea un oggetto Range da un intervallo di celle.

Il metodo copy() della classe Range copia tutti i tipi di dati (incluse le formule), la formattazione, il disegno di oggetti, ecc. da un intervallo di origine all’intervallo di destinazione.

Consolida colonne di più fogli di lavoro in uno utilizzando Java

Puoi facilmente unire colonne di più fogli di lavoro in un unico foglio di lavoro a livello di codice seguendo i passaggi indicati di seguito:

  • Crea un’istanza della classe Workbook per il file di origine
  • Aggiungi un nuovo foglio di lavoro usando il metodo add()
  • Esegui l’iterazione sui fogli di lavoro di origine e procedi come segue:
    • Copia tutte le colonne una per una usando il metodo copyColumn() con le celle dei fogli di lavoro di origine e l’indice delle colonne
  • Salva il file di output chiamando il metodo save() della classe Workbook

L’esempio di codice seguente mostra come consolidare colonne di più fogli di lavoro in un foglio di lavoro utilizzando Java.

// Apri una cartella di lavoro.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");

// Aggiungi un foglio di lavoro denominato Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Esegui l'iterazione sui fogli di lavoro per copiare le colonne in
// foglio di lavoro riassuntivo
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0; 

for (String sheetName : nameOfSourceWorksheets) {
  Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

  if (sheetName.equals("Products")) {
    // Ottieni la raccolta di colonne del foglio di lavoro
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // copia la colonna in summaySheet
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
    }
  else {
    // Ottieni la raccolta di colonne del foglio di lavoro
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // copia la colonna in summaySheet
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
  }
}

// Salva il file excel.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");
Consolida colonne di più fogli di lavoro in uno utilizzando Java

Consolida colonne di più fogli di lavoro in uno utilizzando Java

Il metodo della proprietà getColumns() della classe Cells fornisce la raccolta delle colonne disponibili nel foglio di lavoro. La classe ColumnCollection rappresenta la raccolta delle singole colonne in un foglio di lavoro, mentre la classe Column rappresenta una singola colonna in un foglio di lavoro.

Il metodo copyColumn() della classe Cells copia i dati e i formati di un’intera colonna. La classe Cells fornisce anche metodi copyColumn() sovraccaricati per copiare i dati con le colonne PasteOptions, numero di colonna, origine e destinazione, ecc.

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo, hai imparato come combinare più file Excel in un unico file. Hai anche imparato a combinare fogli di lavoro specifici di più file Excel utilizzando Java. Inoltre, hai imparato come unire più fogli di lavoro in un unico foglio di lavoro a livello di codice. Questo articolo ha anche spiegato come consolidare colonne di più fogli di lavoro in uno solo utilizzando Java. Puoi saperne di più su Aspose.Cells per l’API Java utilizzando la documentazione. In caso di ambiguità, non esitare a contattarci sul forum.

Guarda anche