combiner plusieurs fichiers Excel en un seul à l'aide de Java

Vous avez plusieurs classeurs Excel et vous souhaitez les combiner dans un seul fichier pour créer des rapports ou pour conserver les données au même endroit. En tant que développeur Java, vous pouvez facilement fusionner plusieurs fichiers Excel en un seul fichier par programme. Dans cet article, vous apprendrez comment combiner plusieurs fichiers Excel en un seul à l’aide de Java.

Les sujets suivants sont abordés/couverts dans cet article:

API Java pour fusionner des fichiers Excel

Pour fusionner plusieurs fichiers Excel, j’utiliserai Aspose.Cells for Java API. Cette API vous permet de créer, manipuler, convertir, protéger ou imprimer des feuilles de calcul sans dépendre de Microsoft Excel. Il vous permet d’exécuter des fonctionnalités d’automatisation Excel par programmation dans vos applications Java. Vous pouvez télécharger le JAR de l’API ou simplement ajouter la configuration pom.xml suivante dans votre application Java basée sur Maven pour essayer les exemples de code mentionnés ci-dessous.

<repository>
  <id>AsposeJavaAPI</id>
  <name>API Java Aspose</name>
  <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
  <groupId>com.aspose</groupId>
  <artifactId>aspose-cellules</artifactId>
  <version>21.8</version>
</dependency>

Combiner plusieurs fichiers Excel en un seul à l’aide de Java

Vous pouvez facilement combiner plusieurs fichiers Excel en un seul fichier par programmation en suivant les étapes mentionnées ci-dessous:

  • Créez une instance de Workbook class avec le premier fichier source
  • Créez une instance de Workbook class avec un second fichier source
  • Répétez l’étape ci-dessus pour combiner plus de deux fichiers
  • Appelez la méthode combine() avec la deuxième instance de fichier source
  • Répétez l’étape ci-dessus pour tous les fichiers source un par un
  • Enregistrez le fichier de sortie en appelant la méthode save() de la classe Workbook

L’exemple de code suivant montre comment combiner plusieurs fichiers Excel en un seul fichier à l’aide de Java.

// Ouvrez le premier fichier Excel.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Ouvrez le deuxième fichier Excel.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");

// Ouvrez le troisième fichier Excel.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");

// Copiez les feuilles de calcul du deuxième fichier Excel dans le premier classeur.
SourceBook1.combine(SourceBook2);

// Copiez les feuilles de calcul du troisième fichier Excel dans le premier classeur.
SourceBook1.combine(SourceBook3);

// Enregistrez le premier fichier Excel mis à jour en tant que nouveau fichier.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");
Combiner plusieurs fichiers Excel en un seul à l'aide de Java

Combiner plusieurs fichiers Excel en un seul à l’aide de Java

La classe Workbook de l’API est la classe principale utilisée pour créer une feuille de calcul Excel. Il vous permet d’ouvrir et d’enregistrer les fichiers Excel natifs. Il fournit également plusieurs propriétés et méthodes pour travailler avec Excel Spreadsheet. La méthode combine() de cette classe combine le classeur actuel avec un autre objet Workbook. La méthode save() de la classe Workbook enregistre le fichier de sortie dans le chemin de fichier spécifié.

Combiner des feuilles de calcul spécifiques de plusieurs fichiers Excel en un seul à l’aide de Java

Vous pouvez facilement combiner des feuilles de calcul spécifiques à partir de plusieurs fichiers Excel dans un seul fichier par programme en suivant les étapes mentionnées ci-dessous:

  • Créez une instance de Workbook class pour le fichier source 1
  • Créez une instance de Workbook class pour le fichier source 2
  • Répétez l’étape ci-dessus pour combiner des feuilles de calcul de plus de deux fichiers
  • Créez une instance de Workbook class pour le fichier de destination
  • Ajouter des feuilles de calcul à l’aide de la méthode add() de la classe WorksheetCollection
  • Appelez la méthode copy() pour copier la feuille de calcul spécifiée du fichier source 1 vers le fichier de destination
  • Appelez la méthode copy() pour copier la feuille de calcul spécifiée du fichier source 2 vers le fichier de destination
  • Renommer les feuilles de calcul dans le fichier de destination en utilisant la méthode setName()
  • Enregistrez le fichier de destination en appelant la méthode save() de la classe Workbook

L’exemple de code suivant montre comment combiner des feuilles de calcul spécifiques à partir de plusieurs fichiers Excel dans un seul fichier à l’aide de Java.

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

// Ouvrez le premier fichier Excel.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);

// Ouvrez le deuxième fichier Excel.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);

// Créer un classeur de destination.
Workbook destWorkbook = new Workbook();

// La première feuille de calcul est ajoutée par défaut au classeur. Ajoutez la deuxième feuille de calcul.
destWorkbook.getWorksheets().add();

// Copiez la feuille de calcul Jan du premier fichier Excel dans le fichier de destination.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));

// Copiez la feuille de calcul Jul du deuxième fichier Excel dans le fichier de destination.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));

// Par défaut, les noms des feuilles de calcul sont respectivement "Feuille1" et "Feuille2".
// Donnons-leur des noms significatifs.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");

// Enregistrez le fichier de destination.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");
Combiner des feuilles de calcul spécifiques de plusieurs fichiers Excel en un seul à l'aide de Java

Combiner des feuilles de calcul spécifiques de plusieurs fichiers Excel en un seul à l’aide de Java

La méthode de propriété getWorksheets() de la classe Workbook renvoie une collection de toutes les feuilles de calcul d’un Workbook. Vous pouvez ajouter une feuille de calcul à la collection de feuilles de calcul à l’aide de la méthode add().

La classe Worksheet de cette API représente une seule feuille de calcul. Il fournit plusieurs propriétés et méthodes pour travailler avec une feuille de calcul. La méthode copy() de cette classe copie le contenu et les formats d’une autre feuille de calcul. La classe Worksheet fournit également des méthodes get() pour obtenir une feuille de calcul spécifique par son index ou par son nom. La méthode de propriété setName() définit le nom de la feuille de calcul.

Fusionner plusieurs feuilles de calcul en une seule feuille de calcul à l’aide de Java

Vous pouvez facilement fusionner plusieurs feuilles de calcul d’un fichier Excel en une seule feuille de calcul par programme en suivant les étapes mentionnées ci-dessous:

  • Créer une instance de Workbook class pour le fichier source
  • Ajouter une nouvelle feuille de calcul à l’aide de la méthode add()
  • Parcourez les feuilles de calcul source et procédez comme suit:
    • créer une plage de cellules et de colonnes pour une feuille de calcul à l’aide de la méthode createRange()
    • Copiez les données d’une plage source vers la plage de destination à l’aide de la méthode copy()
  • Enregistrez le fichier de sortie en appelant la méthode save() de la classe Workbook

L’exemple de code suivant montre comment fusionner plusieurs feuilles de calcul en une seule feuille de calcul à l’aide de Java.

// Ouvrez un fichier Excel contenant les feuilles de calcul:
// janvier, février, mars et avril
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Ajouter une feuille de calcul nommée Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Itérer sur les feuilles de calcul source pour copier les données dans
// feuille de calcul récapitulative
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;

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

    Range sourceRange = null;
    Range destRange = null;

    // In case of Jan worksheet, include all rows and columns.
    if (sheetName.equals("Jan"))
    {
        sourceRange = sourceSheet.getCells().getMaxDisplayRange();

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }
    // In case of other worksheets,
    // exclude the first row (which contains headings).
    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());
    }

    // Copies data, formatting, drawing objects etc. from a
    // source range to destination range.
    destRange.copy(sourceRange);
    totalRowCount = sourceRange.getRowCount() + totalRowCount;
}

// Enregistrer le classeur 
workbook.save("C:\\Files\\Summarized.xlsx");
Fusionner plusieurs feuilles de calcul en une seule feuille de calcul à l'aide de Java

Fusionner plusieurs feuilles de calcul en une seule feuille de calcul à l’aide de Java

La méthode de propriété getCells() de la classe Worksheet fournit la collection des cellules disponibles dans la feuille de calcul. La classe Cells de l’API représente une collection d’objets pertinents pour une cellule, comme une Cell, Row, etc. La classe getMaxDisplayRange( ) La méthode de propriété de la classe Cells fournit la plage maximale qui inclut les données, les cellules fusionnées et les formes. La classe Range représente une plage de cellules dans une feuille de calcul.

La classe Cells fournit les méthodes suivantes pour créer une plage de cellules:

  • Méthode createRange(int firstIndex, int number, boolean isVertical) pour créer un objet Range à partir de lignes de cellules ou de colonnes de cellules.
  • createRange(int firstRow, int firstColumn, int totalRows, int totalColumns) pour créer un objet Range à partir d’une plage de cellules.
  • La méthode createRange(java.lang.String address) crée un objet Range à partir d’une adresse de la plage.
  • La méthode createRange(java.lang.String upperLeftCell, java.lang.String lowerRightCell) crée un objet Range à partir d’une plage de cellules.

La méthode copy() de la classe Range copie toutes sortes de données (y compris les formules), les mises en forme, les objets de dessin, etc. d’une plage source vers la plage de destination.

Consolider les colonnes de plusieurs feuilles de calcul en une seule à l’aide de Java

Vous pouvez facilement fusionner des colonnes de plusieurs feuilles de calcul en une seule feuille de calcul par programme en suivant les étapes mentionnées ci-dessous:

  • Créer une instance de Workbook class pour le fichier source
  • Ajouter une nouvelle feuille de calcul à l’aide de la méthode add()
  • Parcourez les feuilles de calcul source et procédez comme suit:
    • Copiez toutes les colonnes une par une à l’aide de la méthode copyColumn() avec les cellules des feuilles de calcul source et l’index de colonne
  • Enregistrez le fichier de sortie en appelant la méthode save() de la classe Workbook

L’exemple de code suivant montre comment consolider les colonnes de plusieurs feuilles de calcul dans une seule feuille de calcul à l’aide de Java.

// Ouvrez un classeur.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");

// Ajouter une feuille de calcul nommée Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Itérer sur les feuilles de calcul pour copier les colonnes dans le
// feuille de calcul récapitulative
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0; 

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

  if (sheetName.equals("Products")) {
    // Get worksheet columns collection
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // copy column to summaySheet
    for (Column column: (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
    }
  else {
    // Get worksheet columns collection
    ColumnCollection columns = sourceSheet.getCells().getColumns();

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

// Enregistrez le fichier excel.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");
Consolider les colonnes de plusieurs feuilles de calcul en une seule à l'aide de Java

Consolider les colonnes de plusieurs feuilles de calcul en une seule à l’aide de Java

La méthode de propriété getColumns() de la classe Cells fournit la collection des colonnes disponibles dans la feuille de calcul. La classe ColumnCollection représente la collection des colonnes individuelles dans une feuille de calcul, tandis que la classe Column représente une seule colonne dans une feuille de calcul.

La méthode copyColumn() de la classe Cells copie les données et les formats d’une colonne entière. La classe Cells fournit également des méthodes copyColumn() surchargées pour copier des données avec les PasteOptions, le numéro de colonne, les colonnes totales source et destination, etc.

Obtenez une licence gratuite

Vous pouvez essayer l’API sans limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris comment combiner plusieurs fichiers Excel en un seul fichier. Vous avez également appris comment combiner des feuilles de calcul spécifiques de plusieurs fichiers Excel à l’aide de Java. De plus, vous avez appris ** comment fusionner plusieurs feuilles de calcul en une seule ** par programmation. Cet article a également expliqué comment consolider les colonnes de plusieurs feuilles de calcul en une seule à l’aide de Java. Vous pouvez en savoir plus sur l’API Aspose.Cells for Java en utilisant la documentation. En cas d’ambiguïté, n’hésitez pas à nous contacter sur le forum.

Voir également