Gérer les lignes et les colonnes des tableaux PowerPoint avec C++

Pour vous permettre de gérer les lignes et les colonnes d’un tableau dans une présentation PowerPoint, Aspose.Slides fournit la classe Table , l’interface ITable et de nombreux autres types.

Définir la première ligne comme en‑tête

  1. Créez une instance de la classe Presentation et chargez la présentation.
  2. Obtenez une référence à la diapositive via son indice.
  3. Créez un objet ITable et définissez‑le sur null.
  4. Parcourez tous les objets IShape pour trouver le tableau concerné.
  5. Définissez la première ligne du tableau comme en‑tête.

Ce code C++ montre comment définir la première ligne d’un tableau comme en‑tête :

// Instancie la classe Presentation
auto pres = System::MakeObject<Presentation>(u"table.pptx");

// Accède à la première diapositive
auto sld = pres->get_Slides()->idx_get(0);

// Initialise le TableEx nul
SharedPtr<ITable> tbl;

// Itère à travers les formes et définit une référence vers le tableau
for (const auto& shp : sld->get_Shapes())
{
    if (ObjectExt::Is<ITable>(shp))
    {
        tbl = System::ExplicitCast<ITable>(shp);
    }
}

// Définit la première ligne d’un tableau comme en‑tête
tbl->set_FirstRow(true);

Cloner une ligne ou une colonne de tableau

  1. Créez une instance de la classe Presentation et chargez la présentation,
  2. Obtenez une référence à la diapositive via son indice.
  3. Définissez un tableau de columnWidth.
  4. Définissez un tableau de rowHeight.
  5. Ajoutez un objet ITable à la diapositive via la méthode AddTable().
  6. Clonez la ligne du tableau.
  7. Clonez la colonne du tableau.
  8. Enregistrez la présentation modifiée.

Ce code C++ montre comment cloner une ligne ou une colonne d’un tableau PowerPoint :

 // Le chemin du répertoire des documents.
const String outPath = u"../out/CloningInTable_out.pptx";

// Instancie la classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Accède à la première diapositive
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Defines columns with widths and rows with heights
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Adds a table shape to the slide
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);


// Sets the border format for each cell
for (int x = 0; x < table->get_Rows()->get_Count(); x++)
{
	SharedPtr<IRow> row = table->get_Rows()->idx_get(x);
	for (int y = 0; y < row->get_Count(); y++)
	{
		SharedPtr<ICell> cell = row->idx_get(y);

		cell->get_BorderTop()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderTop()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderTop()->set_Width(5);

		cell->get_BorderBottom()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderBottom()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderBottom()->set_Width(5);

		cell->get_BorderLeft()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderLeft()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderLeft()->set_Width(5);

		cell->get_BorderRight()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderRight()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderRight()->set_Width(5);

	}

}

table->idx_get(0, 0)->get_TextFrame()->set_Text(u"00");
table->idx_get(0, 1)->get_TextFrame()->set_Text(u"01");
table->idx_get(0, 2)->get_TextFrame()->set_Text(u"02");
table->idx_get(0, 3)->get_TextFrame()->set_Text(u"03");
table->idx_get(1, 0)->get_TextFrame()->set_Text(u"10");
table->idx_get(2, 0)->get_TextFrame()->set_Text(u"20");
table->idx_get(1, 1)->get_TextFrame()->set_Text(u"11");
table->idx_get(2, 1)->get_TextFrame()->set_Text(u"21");

//AddClone ajoute une ligne à la fin du tableau
table->get_Rows()->AddClone(table->get_Rows()->idx_get(0), false);

//InsertClone ajoute une ligne à une position spécifique du tableau
table->get_Rows()->InsertClone(2, table->get_Rows()->idx_get(0), false);

//AddClone ajoute une colonne à la fin du tableau
table->get_Columns()->AddClone(table->get_Columns()->idx_get(0), false);

//InsertClone ajoute une colonne à une position spécifique du tableau
table->get_Columns()->InsertClone(2, table->get_Columns()->idx_get(0), false);


// Enregistre la présentation sur le disque
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Supprimer une ligne ou une colonne d’un tableau

  1. Créez une instance de la classe Presentation et chargez la présentation,
  2. Obtenez une référence à la diapositive via son indice.
  3. Définissez un tableau de columnWidth.
  4. Définissez un tableau de rowHeight.
  5. Ajoutez un objet ITable à la diapositive via la méthode AddTable().
  6. Supprimez la ligne du tableau.
  7. Supprimez la colonne du tableau.
  8. Enregistrez la présentation modifiée.

Ce code C++ montre comment supprimer une ligne ou une colonne d’un tableau :

// Le chemin du répertoire des documents.
const String outPath = u"../out/RemovingRowColumn_out.pptx";

// Instancie la classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Accède à la première diapositive
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Définit les colonnes avec largeurs et les lignes avec hauteurs
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Ajoute une forme de tableau à la diapositive
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);

table->get_Rows()->RemoveAt(1, false);
table->get_Columns()->RemoveAt(1, false);


// Fusionne les cellules (1, 1) x (2, 1)
table->MergeCells(table->idx_get(1, 1), table->idx_get(2, 1), false);

// Fusionne les cellules (1, 2) x (2, 2)
table->MergeCells(table->idx_get(1, 2), table->idx_get(2, 2), false);


// Enregistre la présentation sur le disque
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Définir le format du texte au niveau de la ligne du tableau

  1. Créez une instance de la classe Presentation et chargez la présentation,
  2. Obtenez une référence à la diapositive via son indice.
  3. Accédez à l’objet ITable pertinent depuis la diapositive.
  4. Définissez la hauteur de police des cellules de la première ligne avec set_FontHeight().
  5. Définissez l’alignement set_Alignment() et la marge droite set_MarginRight() des cellules de la première ligne.
  6. Définissez le type de texte vertical des cellules de la deuxième ligne avec set_TextVerticalType().
  7. Enregistrez la présentation modifiée.

Ce code C++ illustre l’opération.

// Crée une instance de la classe Presentation
auto presentation = System::MakeObject<Presentation>();

auto slide = presentation->get_Slides()->idx_get(0);

auto someTable = System::AsCast<ITable>(presentation->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0));
// Supposons que la première forme de la première diapositive soit un tableau
// Définit la hauteur de police des cellules de la première ligne
auto portionFormat = System::MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25.0f);
someTable->get_Rows()->idx_get(0)->SetTextFormat(portionFormat);

// Définit l'alignement du texte et la marge droite des cellules de la première ligne
auto paragraphFormat = System::MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20.0f);
someTable->get_Rows()->idx_get(0)->SetTextFormat(paragraphFormat);

// Définit le type de texte vertical des cellules de la deuxième ligne
auto textFrameFormat = System::MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
someTable->get_Rows()->idx_get(1)->SetTextFormat(textFrameFormat);

// Enregistre la présentation sur le disque
presentation->Save(u"result.pptx", SaveFormat::Pptx);

Définir le format du texte au niveau de la colonne du tableau

  1. Créez une instance de la classe Presentation et chargez la présentation,
  2. Obtenez une référence à la diapositive via son indice.
  3. Accédez à l’objet ITable pertinent depuis la diapositive.
  4. Définissez la hauteur de police des cellules de la première colonne avec set_FontHeight().
  5. Définissez l’alignement set_Alignment() et la marge droite set_MarginRight() des cellules de la première colonne.
  6. Définissez le type de texte vertical des cellules de la deuxième colonne avec set_TextVerticalType().
  7. Enregistrez la présentation modifiée.

Ce code C++ illustre l’opération :

// Crée une instance de la classe Presentation
auto pres = System::MakeObject<Presentation>();

auto slide = pres->get_Slides()->idx_get(0);

auto someTable = System::AsCast<ITable>(pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0));
// Supposons que la première forme sur la première diapositive soit un tableau

// Définit la hauteur de police des cellules de la première colonne
auto portionFormat = System::MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25.0f);
someTable->get_Columns()->idx_get(0)->SetTextFormat(portionFormat);

// Définit l'alignement du texte et la marge droite des cellules de la première colonne en un seul appel
auto paragraphFormat = System::MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20.0f);
someTable->get_Columns()->idx_get(0)->SetTextFormat(paragraphFormat);

// Définit le type de texte vertical des cellules de la deuxième colonne
auto textFrameFormat = System::MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
someTable->get_Columns()->idx_get(1)->SetTextFormat(textFrameFormat);

pres->Save(u"result.pptx", SaveFormat::Pptx);

Obtenir les propriétés de style du tableau

Aspose.Slides vous permet de récupérer les propriétés de style d’un tableau afin de les réutiliser pour un autre tableau ou ailleurs. Ce code C++ montre comment obtenir les propriétés de style à partir d’un style prédéfini de tableau :

auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slide(0)->get_Shapes();
auto table = System::ExplicitCast<ITable>(shapes->AddTable(10, 10, System::MakeArray<double>({100, 150}), System::MakeArray<double>({5, 5, 5})));

table->set_StylePreset(TableStylePreset::DarkStyle1);
pres->Save(u"table.pptx", SaveFormat::Pptx);

FAQ

Can I apply PowerPoint themes/styles to a table that’s already created?
Oui. Le tableau hérite du thème de la diapositive/du plan/du masque, et vous pouvez toujours remplacer les remplissages, les bordures et les couleurs du texte par‑dessus ce thème.

Can I sort table rows like in Excel?
Non, les tableaux Aspose.Slides ne disposent pas de tri ou de filtres intégrés. Triez d’abord vos données en mémoire, puis remplissez à nouveau les lignes du tableau dans cet ordre.

Can I have banded (striped) columns while keeping custom colors on specific cells?
Oui. Activez les colonnes à bandes, puis remplacez les cellules spécifiques par un formatage local ; le formatage au niveau de la cellule prime sur le style du tableau.