Diviser de grands classeurs Excel en feuilles individuelles est un besoin courant lorsque vous souhaitez traiter ou distribuer des données par feuille de calcul. La capacité de diviser un classeur Excel en Java permet aux développeurs d’isoler chaque feuille pour un traitement ou un reporting séparé. Conholdate.Total for Java fournit un SDK robuste qui rend cette tâche simple dans les applications Java. Dans ce guide, vous verrez un exemple de code complet, apprendrez comment configurer la bibliothèque, comprendrez les considérations de performance et obtiendrez des conseils pratiques pour gérer efficacement de gros fichiers XLSX.

Exemple complet fonctionnel pour diviser un classeur Excel en Java

Cet exemple montre comment diviser un classeur Excel en fichiers séparés à l’aide de Conholdate.Total.

import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.SaveFormat;
import java.io.File;

public class ExcelSplitter {
    public static void main(String[] args) {
        String sourceFile = "input.xlsx";
        String outputDir = "splitted";

File dir = new File(outputDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }

try {
            Workbook sourceWorkbook = new Workbook(sourceFile);
            int sheetCount = sourceWorkbook.getWorksheets().getCount();

for (int i = 0; i < sheetCount; i++) {
                Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
                Workbook splitWorkbook = new Workbook();

splitWorkbook.getWorksheets().addCopy(sheet);
                if (splitWorkbook.getWorksheets().getCount() > 1) {
                    splitWorkbook.getWorksheets().removeAt(0);
                }

String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
                String outPath = outputDir + File.separator + safeName + ".xlsx";

splitWorkbook.save(outPath, SaveFormat.XLSX);
                splitWorkbook.dispose();
            }

sourceWorkbook.dispose();
        } catch (Exception e) {
            System.err.println("Error during splitting: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Note : Cet exemple de code démontre la fonctionnalité principale. Avant de l’utiliser dans votre projet, assurez‑vous de mettre à jour tous les chemins de fichiers et les valeurs de configuration pour qu’ils correspondent à votre environnement réel, vérifiez que toutes les dépendances requises sont correctement installées et testez soigneusement dans votre environnement de développement. Si vous rencontrez des problèmes, veuillez consulter la documentation officielle ou contacter l’équipe de support pour obtenir de l’aide.

Classes clés utilisées

L’extrait repose sur trois classes de base de la bibliothèque Aspose.Cells qui est fournie avec Conholdate.Total :

  • Workbook - représente un fichier Excel complet et fournit des méthodes pour charger, enregistrer et manipuler les classeurs. Voir la référence de l’API de la classe Workbook.
  • Worksheet - donne accès à une feuille individuelle à l’intérieur d’un classeur.
  • SaveFormat - énumération qui définit le format de sortie ; SaveFormat.XLSX écrit le fichier dans le conteneur XLSX moderne.

Ces classes sont légères, mais elles allouent des ressources natives, de sorte que les libérer rapidement (comme indiqué) est essentiel pour la Gestion de la mémoire pour les gros fichiers Excel.

Décomposer le classeur Excel fractionné en Java

Le programme suit une séquence claire que vous pouvez adapter à n’importe quel flux de travail Excel Split Java.

Explication étape par étape

  1. Charger le classeur source - new Workbook(sourceFile) lit le fichier XLSX d’entrée.
Workbook sourceWorkbook = new Workbook(sourceFile);
  1. Créer le répertoire de sortie - Vérifie si le dossier cible existe et le crée si nécessaire.
File dir = new File(outputDir);
if (!dir.exists()) {
    dir.mkdirs();
}
  1. Parcourir les feuilles de calcul - sourceWorkbook.getWorksheets().getCount() renvoie le nombre de feuilles, et la boucle traite chaque feuille.
for (int i = 0; i < sheetCount; i++) {
    Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
}
  1. Copier la feuille actuelle dans un nouveau classeur - addCopy(sheet) duplique la feuille, puis la feuille vide par défaut est supprimée si elle est présente.
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
    splitWorkbook.getWorksheets().removeAt(0);
}
  1. Enregistrer le classeur fractionné - Génère un nom de fichier sûr et écrit la feuille en tant que fichier XLSX.
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
String outPath = outputDir + File.separator + safeName + ".xlsx";
splitWorkbook.save(outPath, SaveFormat.XLSX);
  1. Libérer les ressources - Appelle dispose() sur les classeurs temporaires et source pour libérer la mémoire et éviter les fuites natives.

L’ensemble du flux est un exemple de code Java pour diviser les feuilles Excel qui peut être intégré dans des pipelines de traitement de données plus importants.

Prérequis et configuration - Commencer avec Conholdate.Total

Avant de pouvoir compiler et exécuter l’exemple, assurez-vous que votre environnement de développement répond aux prérequis suivants.

Configuration Maven

Ajoutez le référentiel Maven Conholdate et la dépendance SDK à votre pom.xml :

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

Téléchargez le dernier package SDK depuis la page de téléchargement officielle : Conholdate.Total for Java téléchargement. La bibliothèque nécessite Java 8 ou une version plus récente et s’exécute sur n’importe quelle JVM standard.

Configuration de licence

Une licence valide est requise pour une utilisation en production. Vous pouvez obtenir une licence temporaire pour les tests depuis la page de licence temporaire. Pour les projets à long terme, consultez les options de tarification sur la page de tarification. Une fois que vous avez le fichier de licence, configurez‑le dans le code de démarrage de votre application (non affiché ici) comme décrit dans la documentation.

Conseils pratiques pour une division efficace d’Excel

Travailler avec de grands classeurs nécessite une gestion soigneuse des ressources. Les recommandations suivantes vous aident à garder le processus rapide et fiable.

Recommandations de gestion de la mémoire

  • Supprimez chaque classeur temporaire après l’enregistrement pour libérer les ressources natives et maintenir une faible utilisation de la mémoire.
  • Réutilisez les objets lorsque c’est possible - créer une seule instance Workbook pour la source et réutiliser le même objet File pour le répertoire de sortie réduit la pression sur le ramasse-miettes.
  • Envisagez le mode streaming si votre version de Conholdate.Total le prend en charge ; le streaming lit les lignes à la demande au lieu de charger l’intégralité du classeur en mémoire.

Pièges courants et comment les éviter

SymptômeCause probableSolution
java.lang.OutOfMemoryErrorConserver chaque classeur découpé en mémoireAssurez‑vous que splitWorkbook.dispose() est appelé à l’intérieur de la boucle, comme indiqué.
Illegal file name errorLe nom de la feuille contient des caractères tels que `\ / : * ? " < >`
Missing output filesLe chemin du répertoire de sortie est incorrect ou non inscriptibleVérifiez que outputDir pointe vers un emplacement avec des permissions d’écriture.

Boosters de performance

  • Journaliser la progression - afficher le nom de la feuille avant l’enregistrement vous aide à identifier le point de défaillance dans les gros lots.
  • Augmenter le tas JVM - pour des classeurs extrêmement volumineux, lancez la JVM avec -Xmx2g (ou plus) afin de fournir plus de mémoire au processus.
  • Traitement parallèle - si le classeur n’est pas inter‑dépendant, vous pouvez répartir le travail sur plusieurs threads, mais rappelez‑vous que la bibliothèque native sous‑jacente n’est pas toujours thread‑safe ; testez soigneusement.

En suivant ces conseils, vous pouvez efficacement diviser un classeur Excel en Java même lorsque vous devez gérer des milliers de feuilles ou des classeurs de plusieurs centaines de mégaoctets.

Conclusion

Diviser un classeur Excel en fichiers XLSX individuels avec Conholdate.Total for Java est une technique simple mais puissante pour les développeurs Java qui ont besoin d’un accès granulaire aux données des feuilles de calcul. Le code fourni montre le flux de travail complet, du chargement du classeur source à la libération des ressources après l’enregistrement de chaque feuille. Utiliser cette approche pour diviser un classeur Excel en Java vous donne un contrôle fin sur chaque feuille et s’intègre facilement dans des pipelines de traitement de données plus larges. N’oubliez pas d’obtenir une licence appropriée pour une utilisation en production ; vous pouvez explorer les options de tarification sur la pricing page ou demander une licence temporaire depuis la temporary license page. Avec le SDK installé et les recommandations de bonnes pratiques appliquées, vous êtes prêt à gérer même les scénarios les plus exigeants de Excel Split Java.

FAQ

Comment puis‑je diviser un classeur Excel en Java en utilisant Conholdate.Total ?
Utilisez la classe ExcelSplitter présentée dans l’exemple complet. Elle charge le classeur source, parcourt chaque feuille de calcul, crée un nouveau classeur par feuille et l’enregistre sous forme de fichier XLSX individuel. Cette méthode fonctionne également lorsque vous devez diviser un fichier XLSX en Java pour n’importe quelle taille de classeur.

Le SDK est-il compatible avec toutes les versions de Java ?
Le SDK prend en charge Java 8 et les versions ultérieures. Assurez‑vous que votre projet cible un JDK compatible.

Dois-je définir une licence avant d’exécuter le code ?
Une licence est requise pour les déploiements en production. Vous pouvez obtenir une licence temporaire pour les tests depuis la page de licence temporaire et consulter les tarifs complets sur la page de tarification.

Et si mon classeur contient des milliers de feuilles ?
Traitez le classeur par lots, libérez chaque classeur temporaire rapidement, et envisagez d’augmenter la taille du tas JVM si nécessaire. Enregistrer le nom de chaque feuille vous aide à identifier rapidement toute feuille problématique.

En savoir plus