Διαχείριση Σειρών και Στηλών σε Πίνακες PowerPoint με C++

Εισαγωγή

Για να μπορείτε να διαχειριστείτε τις σειρές και τις στήλες ενός πίνακα σε παρουσίαση PowerPoint, η Aspose.Slides παρέχει την κλάση Table , το interface ITable και πολλούς άλλους τύπους.

Ορισμός της πρώτης σειράς ως κεφαλίδα

  1. Δημιουργήστε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση.
  2. Αποκτήστε μια αναφορά σε μια διαφάνεια μέσω του δείκτη της.
  3. Δημιουργήστε ένα αντικείμενο ITable και ορίστε το σε null.
  4. Περιηγηθείτε σε όλα τα αντικείμενα IShape για να βρείτε τον αντίστοιχο πίνακα.
  5. Ορίστε την πρώτη σειρά του πίνακα ως κεφαλίδα.

Αυτός ο κώδικας C++ δείχνει πώς να ορίσετε την πρώτη σειρά ενός πίνακα ως κεφαλίδα:

// Δημιουργεί μια παρουσία της κλάσης Presentation 
auto pres = System::MakeObject<Presentation>(u"table.pptx");

// Προσπελάζει την πρώτη διαφάνεια
auto sld = pres->get_Slides()->idx_get(0);

// Αρχικοποιεί το null TableEx
SharedPtr<ITable> tbl;

// Διασχίζει τα σχήματα και ορίζει μια αναφορά στον πίνακα
for (const auto& shp : sld->get_Shapes())
{
    if (ObjectExt::Is<ITable>(shp))
    {
        tbl = System::ExplicitCast<ITable>(shp);
    }
}

// Ορίζει την πρώτη σειρά του πίνακα ως κεφαλίδα 
tbl->set_FirstRow(true);

Κλωνοποίηση σειράς ή στήλης πίνακα

  1. Δημιουργήστε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση,
  2. Αποκτήστε μια αναφορά σε μια διαφάνεια μέσω του δείκτη της.
  3. Ορίστε έναν πίνακα columnWidth.
  4. Ορίστε έναν πίνακα rowHeight.
  5. Προσθέστε ένα αντικείμενο ITable στη διαφάνεια μέσω της μεθόδου AddTable().
  6. Κλωνοποιήστε τη σειρά του πίνακα.
  7. Κλωνοποιήστε τη στήλη του πίνακα.
  8. Αποθηκεύστε την τροποποιημένη παρουσίαση.

Αυτός ο κώδικας C++ δείχνει πώς να κλωνοποιήσετε τη σειρά ή τη στήλη ενός πίνακα PowerPoint:

 // Η διαδρομή προς το φάκελο εγγράφων.
const String outPath = u"../out/CloningInTable_out.pptx";

// Δημιουργεί μια παρουσία της κλάσης Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Προσπελάζει την πρώτη διαφάνεια
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Ορίζει στήλες με πλάτη και σειρές με ύψη
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Προσθέτει ένα σχήμα πίνακα στη διαφάνεια
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);


// Ορίζει τη μορφή περιγράμματος για κάθε κελί
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 προσθέτει μια σειρά στο τέλος του πίνακα
table->get_Rows()->AddClone(table->get_Rows()->idx_get(0), false);

//InsertClone προσθέτει μια σειρά σε συγκεκριμένη θέση σε έναν πίνακα
table->get_Rows()->InsertClone(2, table->get_Rows()->idx_get(0), false);

//AddClone προσθέτει μια στήλη στο τέλος του πίνακα
table->get_Columns()->AddClone(table->get_Columns()->idx_get(0), false);

//InsertClone προσθέτει μια στήλη σε συγκεκριμένη θέση σε έναν πίνακα
table->get_Columns()->InsertClone(2, table->get_Columns()->idx_get(0), false);


// Αποθηκεύει την παρουσίαση στο δίσκο
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);


Αφαίρεση σειράς ή στήλης από πίνακα

  1. Δημιουργήτε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση,
  2. Αποκτήστε μια αναφορά σε μια διαφάνεια μέσω του δείκτη της.
  3. Ορίστε έναν πίνακα columnWidth.
  4. Ορίστε έναν πίνακα rowHeight.
  5. Προσθέστε ένα αντικείμενο ITable στη διαφάνεια μέσω της μεθόδου AddTable().
  6. Αφαιρέστε τη σειρά του πίνακα.
  7. Αφαιρέστε τη στήλη του πίνακα.
  8. Αποθηκεύστε την τροποποιημένη παρουσίαση.

Αυτός ο κώδικας C++ δείχνει πώς να αφαιρέσετε μια σειρά ή στήλη από έναν πίνακα:

// Η διαδρομή προς το φάκελο εγγράφων.
const String outPath = u"../out/RemovingRowColumn_out.pptx";

// Δημιουργεί μια παρουσία της κλάσης Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Προσπελάζει την πρώτη διαφάνεια
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Ορίζει τις στήλες με πλάτη και τις σειρές με ύψη
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Προσθέτει ένα σχήμα πίνακα στη διαφάνεια
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);

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


// Merges cells (1, 1) x (2, 1)
table->MergeCells(table->idx_get(1, 1), table->idx_get(2, 1), false);

// Merges cells (1, 2) x (2, 2)
table->MergeCells(table->idx_get(1, 2), table->idx_get(2, 2), false);


// Αποθηκεύει την παρουσίαση στο δίσκο
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);


Ορισμός μορφοποίησης κειμένου σε επίπεδο σειράς πίνακα

  1. Δημιουργάτε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση,
  2. Αποκτήστε μια αναφορά σε μια διαφάνεια μέσω του δείκτη της.
  3. Πρόσβαση στο σχετικό αντικείμενο ITable από τη διαφάνεια.
  4. Ορίστε το set_FontHeight() των κελιών της πρώτης σειράς.
  5. Ορίστε το set_Alignment() και το set_MarginRight() των κελιών της πρώτης σειράς.
  6. Ορίστε το set_TextVerticalType() των κελιών της δεύτερης σειράς.
  7. Αποθηκεύστε την τροποποιημένη παρουσίαση.

Αυτός ο κώδικας C++ εμφανίζει τη λειτουργία.

// Δημιουργεί μια παρουσία της κλάσης 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));
// Ας υποθέσουμε ότι το πρώτο σχήμα στην πρώτη διαφάνεια είναι πίνακας
// Ορίζει το ύψος γραμματοσειράς των κελιών της πρώτης σειράς
auto portionFormat = System::MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25.0f);
someTable->get_Rows()->idx_get(0)->SetTextFormat(portionFormat);

// Ορίζει τη στοίχιση κειμένου και το δεξιό περιθώριο των κελιών της πρώτης σειράς
auto paragraphFormat = System::MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20.0f);
someTable->get_Rows()->idx_get(0)->SetTextFormat(paragraphFormat);

// Ορίζει τον κάθετο τύπο κειμένου των κελιών της δεύτερης σειράς
auto textFrameFormat = System::MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
someTable->get_Rows()->idx_get(1)->SetTextFormat(textFrameFormat);

// Αποθηκεύει την παρουσίαση στο δίσκο
presentation->Save(u"result.pptx", SaveFormat::Pptx);

Ορισμός μορφοποίησης κειμένου σε επίπεδο στήλης πίνακα

  1. Δημιουργήτε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση,
  2. Αποκτήστε μια αναφορά σε μια διαφάνεια μέσω του δείκτη της.
  3. Πρόσβαση στο σχετικό αντικείμενο ITable από τη διαφάνεια.
  4. Ορίστε το set_FontHeight() των κελιών της πρώτης στήλης.
  5. Ορίστε το set_Alignment() και το set_MarginRight() των κελιών της πρώτης στήλης.
  6. Ορίστε το set_TextVerticalType() των κελιών της δεύτερης στήλης.
  7. Αποθηκεύστε την τροποποιημένη παρουσίαση.

Αυτός ο κώδικας C++ εμφανίζει τη λειτουργία:

// Δημιουργεί μια παρουσία της κλάσης 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));
// Ας υποθέσουμε ότι το πρώτο σχήμα στην πρώτη διαφάνεια είναι πίνακας

// Ορίζει το ύψος γραμματοσειράς των κελιών της πρώτης στήλης
auto portionFormat = System::MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25.0f);
someTable->get_Columns()->idx_get(0)->SetTextFormat(portionFormat);

// Ορίζει τη στοίχιση κειμένου και το δεξιό περιθώριο των κελιών της πρώτης στήλης σε μία κλήση
auto paragraphFormat = System::MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20.0f);
someTable->get_Columns()->idx_get(0)->SetTextFormat(paragraphFormat);

// Ορίζει τον κάθετο τύπο κειμένου των κελιών της δεύτερης στήλης
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);

Λήψη ιδιοτήτων στυλ πίνακα

Η Aspose.Slides σας επιτρέπει να ανακτήσετε τις ιδιότητες στυλ για έναν πίνακα, ώστε να μπορείτε να χρησιμοποιήσετε αυτές τις λεπτομέρειες για άλλο πίνακα ή σε άλλο μέρος. Αυτός ο κώδικας C++ δείχνει πώς να λάβετε τις ιδιότητες στυλ από ένα προρυθμισμένο στυλ πίνακα:

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);

Συχνές ερωτήσεις

Μπορώ να εφαρμόσω θέματα/στυλ PowerPoint σε έναν πίνακα που έχει ήδη δημιουργηθεί;

Ναι. Ο πίνακας κληρονομεί το θέμα της διαφάνειας/διάταξης/κύριου θέματος, και μπορείτε ακόμα να παρακάμψετε τα γεμίσματα, τα περιγράμματα και τα χρώματα κειμένου πάνω από αυτό το θέμα.

Μπορώ να ταξινομήσω τις σειρές του πίνακα όπως στο Excel;

Όχι, οι πίνακες Aspose.Slides δεν διαθέτουν ενσωματωμένη ταξινόμηση ή φίλτρα. Ταξινομήστε τα δεδομένα στη μνήμη πρώτα, στη συνέχεια επαναπληρώστε τις σειρές του πίνακα με αυτή τη σειρά.

Μπορώ να έχω στήλες με λωρίδες (banded) διατηρώντας προσαρμοσμένα χρώματα σε συγκεκριμένα κελιά;

Ναι. Ενεργοποιήστε τις στήλες με λωρίδες, στη συνέχεια παρακάμψτε συγκεκριμένα κελιά με τοπική μορφοποίηση· η μορφοποίηση σε επίπεδο κελιού έχει προτεραιότητα έναντι του στυλ πίνακα.