Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Il existe de nombreux scénarios concrets dans lesquels un développeur doit diviser un fichier Excel unique en plusieurs fichiers plus petits. Par exemple, un classeur peut contenir une feuille de calcul par département, et chaque responsable de département doit recevoir uniquement sa propre feuille. Dans d’autres cas, vous pouvez souhaiter extraire un tableau particulier ou un bloc de données d’une feuille de calcul et l’envoyer comme fichier autonome par e-mail, sans exposer le reste du classeur. Les grands classeurs consolidés peuvent également devoir être fractionnés en éléments plus petits pour faciliter leur manipulation, accélérer le chargement ou permettre un traitement en aval par d’autres systèmes.
Aspose.Cells propose deux approches flexibles pour cette tâche. La première approche parcourt chaque feuille de calcul du classeur source et copie son contenu dans une nouvelle instance de Workbook, en enregistrant chacune d’elles comme un fichier séparé. La deuxième approche se concentre sur une plage de cellules spécifique dans une feuille de calcul et copie uniquement cette plage dans un nouveau classeur. Dans les deux cas, le flux général est le même : charger le classeur source à l’aide de la classe Workbook, accéder aux données pertinentes via les objets Worksheet et Cells, transférer le contenu vers un Workbook de destination, puis enregistrer la destination sur le disque.
Dans cette approche, le classeur source est ouvert une seule fois, puis pour chaque Worksheet de sa collection Worksheets, un nouveau Workbook de destination est créé. Le contenu de la feuille de calcul source est ensuite copié dans la première feuille de calcul du classeur de destination, et le classeur de destination est enregistré en tant que fichier dont le nom est dérivé du nom de la feuille de calcul source. Le résultat est un fichier de sortie par feuille de calcul, chaque fichier de sortie contenant les données d’une seule feuille source.
Cette méthode est le bon choix lorsque chaque feuille de calcul de votre classeur source représente une unité d’information logiquement indépendante (telle qu’un département, une région, un mois ou une gamme de produits) et que vous souhaitez livrer ou traiter chaque unité de manière autonome.
Les étapes suivantes décrivent comment fractionner un fichier Excel en copiant chaque feuille de calcul vers un nouveau classeur :
Workbook et en transmettant le chemin du fichier à son constructeur.Workbook.Worksheets à l’aide d’une boucle for ou foreach afin que chaque Worksheet du fichier source soit traité.Workbook de destination (un classeur vide) pour la feuille de calcul en cours.Worksheet au classeur de destination (ou utilisez la première feuille de calcul par défaut) et attribuez-lui un nom explicite, idéalement identique à la propriété Name de la feuille de calcul source.Cells de la feuille de calcul source et en écrivant leurs valeurs dans les cellules correspondantes de la feuille de calcul de destination, ou en utilisant la méthode Cells.copy pour transférer une plage entière en une seule fois.dataDir + worksheet.Name + ".xls") afin que chaque fichier généré ait un nom unique.Workbook.save de destination pour écrire le fichier sur le disque.import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat
dataDir = "data/"
workbook = Workbook(dataDir + "book1.xls")
for i in range(workbook.getWorksheets().getCount()):
sourceSheet = workbook.getWorksheets().get(i)
sheetName = sourceSheet.getName()
destWorkbook = Workbook()
destIndex = destWorkbook.getWorksheets().add()
destSheet = destWorkbook.getWorksheets().get(destIndex)
destSheet.setName(sheetName)
destSheet.copy(sourceSheet)
destFile = dataDir + sheetName + ".xls"
destWorkbook.save(destFile, SaveFormat.Excel97To2003)
jpype.shutdownJVM()
Le résultat attendu est un ensemble de nouveaux fichiers dans le répertoire de données, un fichier par feuille de calcul du classeur source. Chaque fichier est nommé d’après sa feuille source correspondante, et le fichier contient les données (et éventuellement la mise en forme) de cette seule feuille.
Parfois, les données que vous devez fractionner ne correspondent pas à une feuille de calcul entière, mais plutôt à une région rectangulaire spécifique d’une feuille de calcul, telle que A1:D10 ou une plage nommée qui représente un tableau particulier. Dans ces cas, copier des feuilles de calcul entières est inutile, et une approche plus précise est requise : identifier la plage source, copier uniquement cette plage dans un nouveau classeur, puis enregistrer le nouveau fichier.
Cette approche est idéale lorsque vous souhaitez extraire un seul tableau, bloc de rapport ou zone de données d’une feuille de calcul plus grande tout en supprimant tout contenu non lié. Elle est également utile pour exporter des régions sélectionnées par l’utilisateur d’une feuille en tant que fichiers autonomes.
Les étapes suivantes décrivent comment fractionner un fichier Excel en copiant une plage spécifique vers un nouveau classeur :
Workbook avec le chemin du fichier.Worksheet cible qui contient la plage que vous souhaitez copier, soit par index (par exemple, la première feuille), soit par nom à partir de la collection Worksheets.A1:C10, ou d’une plage nommée obtenue via la collection Worksheet.Cells, ou d’une plage créée via Worksheet.Cells.createRange.Workbook de destination.Worksheet du classeur de destination (la feuille par défaut).A1. La méthode Cells.copy sur la collection Cells de destination peut être utilisée pour copier une plage entière, ou vous pouvez parcourir les cellules de la plage source et écrire leurs valeurs dans les cellules de destination avec putValue. Des CopyOptions facultatifs peuvent être fournis pour contrôler ce qui est transféré (valeurs uniquement, valeurs et styles, formules, etc.).Workbook.save.import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat
# Définir le répertoire de données et les chemins de fichiers
dataDir = "data/"
sourcePath = dataDir + "book1.xls"
outputPath = dataDir + "outputrange.xls"
# Ouvrir le fichier Excel source
sourceWorkbook = Workbook(sourcePath)
# Obtenir la première feuille de calcul du classeur source
sourceWorksheet = sourceWorkbook.getWorksheets().get(0)
# Définir la plage de cellules source A1:C10 (10 lignes, 3 colonnes commençant à la ligne 0, colonne 0)
sourceRange = sourceWorksheet.getCells().createRange(0, 0, 10, 3)
# Créer un nouveau classeur de destination
destWorkbook = Workbook()
# Accéder à la première feuille de calcul du classeur de destination
destWorksheet = destWorkbook.getWorksheets().get(0)
# Créer la plage de destination à A1 avec les mêmes dimensions que la plage source
destRange = destWorksheet.getCells().createRange(0, 0, 10, 3)
# Copier la plage source vers la plage de destination
destRange.copy(sourceRange)
# Enregistrer le classeur de destination dans un nouveau fichier .xls
destWorkbook.save(outputPath, SaveFormat.Excel97To2003)
jpype.shutdownJVM()
Le résultat attendu est un seul nouveau fichier dans le répertoire de données qui contient uniquement les valeurs (et éventuellement la mise en forme) de la plage spécifiée extraite du classeur source. Le fichier de destination n’a aucune relation avec d’autres données du fichier source ; il contient uniquement la plage extraite, en commençant à la cellule A1 de sa première feuille de calcul.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.