La fusion et la séparation des cellules est une fonctionnalité simple et couramment utilisée de Microsoft Excel. La fusion de cellules peut s’avérer utile dans des scénarios, par exemple, lorsque vous avez une feuille de calcul avec plusieurs colonnes qui partagent le même en-tête. Vous pouvez fusionner les cellules au-dessus des colonnes pour leur donner un en-tête commun. Dans le cas où les cellules fusionnées ne sont plus nécessaires, vous pouvez les dissocier tout aussi facilement. Vous devrez peut-être effectuer ces tâches dans vos applications C++. Pour cela, cet article vous apprendra comment fusionner et dissocier des cellules dans des feuilles de calcul Excel par programmation à l’aide de C++.

API C++ pour fusionner et défusionner des cellules

Aspose.Cells for C++ est une bibliothèque C++ native qui vous permet de créer, lire et modifier des fichiers Excel sans nécessiter l’installation de Microsoft Excel. L’API prend également en charge la fusion et la séparation des cellules dans une feuille de calcul Excel. Vous pouvez soit installer l’API via NuGet ou la télécharger directement à partir de la section Téléchargements.

PM> Install-Package Aspose.Cells.Cpp

Fusionner des cellules dans une feuille de calcul Excel à l’aide de C++

Dans cet exemple, nous allons créer une feuille de calcul Excel vide et fusionner quelques cellules en suivant les étapes ci-dessous.

L’exemple de code suivant montre comment fusionner des cellules dans une feuille de calcul Excel à l’aide de C++.

// Chemin du répertoire de sortie.
StringPtr outDir = new String("OutputDirectory\\");

// Charger le fichier Excel d'entrée
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Accéder à la première feuille de calcul du fichier Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Créez un objet Cells pour récupérer toutes les cellules.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Fusionner des cellules
cells->Merge(5, 2, 2, 3);

// Mettre les données dans la cellule
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));

// Créer un objet Style 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// Créer un objet Police
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();

// Définir le nom
font->SetName(new String("Times New Roman"));

// Définir la taille de la police
font->SetSize(18);

// Définir la couleur de la police
font->SetColor(Systems::Drawing::Color::GetCyan());

// Mettre le texte en gras
font->SetBold(true);

// Mettre le texte en italique
font->SetItalic(true);

// Définir la couleur de premier plan
style->SetForegroundColor(Systems::Drawing::Color::GetRed());

// Définir le motif
style->SetPattern(BackgroundType_Solid);

// Appliquer le style
cells->GetICell(5, 2)->SetIStyle(style);

// Enregistrez le fichier Excel
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Image du fichier Excel de sortie généré par l'exemple de code

Image du fichier Excel de sortie généré par l’exemple de code

Annuler la fusion de cellules dans une feuille de calcul Excel à l’aide de C++

Voici les étapes pour dissocier des cellules dans une feuille de calcul Excel.

L’exemple de code suivant montre comment dissocier des cellules dans une feuille de calcul Excel à l’aide de C++.

// Chemin du répertoire source.
StringPtr srcDir = new String("SourceDirectory\\");

// Chemin du répertoire de sortie.
StringPtr outDir = new String("OutputDirectory\\");

// Charger le fichier Excel d'entrée
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));

// Accéder à la première feuille de calcul du fichier Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Créez un objet Cells pour récupérer toutes les cellules.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Défusionnez les cellules.
cells->UnMerge(5, 2, 2, 3);

// Enregistrez le fichier Excel
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Image du fichier Excel de sortie généré par l'exemple de code

Image du fichier Excel de sortie généré par l’exemple de code

Fusionner une plage de cellules dans une feuille de calcul Excel à l’aide de C++

Voici les étapes pour fusionner une plage de cellules dans une feuille de calcul Excel.

L’exemple de code suivant montre comment fusionner une plage de cellules dans une feuille de calcul Excel à l’aide de C++.

// Chemin du répertoire de sortie.
StringPtr outDir = new String("OutputDirectory\\");

// Charger le fichier Excel d'entrée
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Accéder à la première feuille de calcul du fichier Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Entrez les données dans la cellule A1.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Créer une gamme
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Fusionner la plage en une seule cellule
range->Merge();

// Enregistrez le fichier Excel
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Image du fichier Excel de sortie généré par l'exemple de code

Image du fichier Excel de sortie généré par l’exemple de code

Annuler la fusion d’une plage de cellules dans une feuille de calcul Excel à l’aide de C++

Voici les étapes pour dissocier une plage de cellules dans une feuille de calcul Excel.

L’exemple de code suivant montre comment dissocier une plage de cellules dans une feuille de calcul Excel à l’aide de C++.

// Chemin du répertoire source.
StringPtr srcDir = new String("SourceDirectory\\");

// Chemin du répertoire de sortie.
StringPtr outDir = new String("OutputDirectory\\");

// Charger le fichier Excel d'entrée
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Accéder à la première feuille de calcul du fichier Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Créer une gamme
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Défusionner la plage
range->UnMerge();

// Enregistrez le fichier Excel
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Image du fichier Excel de sortie généré par l'exemple de code

Image du fichier Excel de sortie généré par l’exemple de code

Fusionner les cellules d’une plage nommée dans une feuille de calcul Excel à l’aide de C++

Aspose.Cells for C++ vous offre également la possibilité de fusionner les cellules d’une plage nommée. Pour y parvenir, veuillez suivre les étapes ci-dessous.

L’exemple de code suivant montre comment fusionner les cellules d’une plage nommée à l’aide de C++.

// Chemin du répertoire source.
StringPtr srcDir = new String("SourceDirectory\\");

// Chemin du répertoire de sortie.
StringPtr outDir = new String("OutputDirectory\\");

// Charger le fichier Excel d'entrée
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Accéder à la première feuille de calcul du fichier Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Créer une gamme
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Définir le nom de la plage
range->SetName(new String("Named_Range"));

// Définir l'objet de style
intrusive_ptr<IStyle> style = workbook->CreateIStyle();

// Définir l'alignement horizontal
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);

// Créer un objet StyleFlag
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();

// Définir l'alignement horizontal to true
styleFlag->SetHorizontalAlignment(true);

// Appliquer le style à la gamme
range->ApplyIStyle(style, styleFlag);

// Mettre les données dans la plage
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Plage de fusion
range->Merge();

// Enregistrez le fichier Excel
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Image du fichier Excel de sortie généré par l'exemple de code

Image du fichier Excel de sortie généré par l’exemple de code

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 à fusionner et dissocier des cellules dans une feuille de calcul Excel à l’aide de C++. De plus, vous avez vu comment fusionner et dissocier des plages et des plages nommées à l’aide d’Aspose.Cells for C++. L’API fournit de nombreuses fonctionnalités supplémentaires pour travailler avec des fichiers Excel que vous pouvez explorer en détail en visitant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également