Sorok és oszlopok kezelése PowerPoint táblázatokban C++ használatával
Bevezetés
Az Aspose.Slides for C++ lehetővé teszi, hogy a PowerPoint‑prezentációk táblázat‑szerkezetét és formázását a Table osztály és az ITable interfész segítségével kezelje. Megjelölhet egy fejlécsorát, klónozhat vagy eltávolíthat sorokat és oszlopokat, valamint szövegformázást alkalmazhat egy teljes sorra vagy oszlopra.
Ez a cikk elmagyarázza ezeket a műveleteket C++ példákkal. Továbbá bemutatja, hogyan lehet lekérni egy táblázat stílus‑előbeállítását, hogy újból felhasználhassa. A táblázat sor‑ és oszlopindexei 0‑bázisúak.
Sormagasság vezérlése
Használja az IRow::set_MinimalHeight metódust a sor minimális magasságának pontban való beállításához. Ez egy alsó határ, nem fix magasság. Az IRow::get_Height visszaadja a tényleges magasságot; ezt az értéket nem lehet közvetlenül beállítani. A sor eléréséhez használja az ITable::get_Rows metódust.
Az példa betölti a row-height-input.pptx fájlt, amelyben a táblázat az első dián az első alakzatként szerepel. Az első sor 70 pontnál kezdődik. A cellák 18 pontos Arial szöveget, sortörést és 6 pontos felső és alsó margót használnak; a második oszlopban a hosszabb szöveg több sorra törik. A példa a minimumot 100 pontra növeli, majd 20 pontra csökkenti, minden módosítás után kiírja a tényleges magasságot, és elmenti mindkét eredményt.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
#include <DOM/Table/IRowCollection.h>
#include <DOM/Table/IRow.h>
#include <system/console.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"row-height-input.pptx");
auto slide = presentation->get_Slide(0);
auto table = ExplicitCast<ITable>(slide->get_Shape(0));
auto row = table->get_Rows()->idx_get(0);
row->set_MinimalHeight(100);
Console::WriteLine(u"Increased: minimum = {0:F1}, actual = {1:F1} pt", row->get_MinimalHeight(), row->get_Height());
presentation->Save(u"row-height-increased.pptx", SaveFormat::Pptx);
row->set_MinimalHeight(20);
Console::WriteLine(u"Decreased: minimum = {0:F1}, actual = {1:F1} pt", row->get_MinimalHeight(), row->get_Height());
presentation->Save(u"row-height-decreased.pptx", SaveFormat::Pptx);
A mellékelt prezentációval a minimum növelése helyet ad a sornak. A csökkentés eltávolítja ezt a felesleges helyet, de a tényleges magasság továbbra is nagyobb, mint 20 pont, mivel a szöveg és a cellamargók több helyet igényelnek. A minimum önmagában csökkentése nem képes a sort a tartalom által igényelt hely alá kényszeríteni.
Több tényező befolyásolja a tényleges magasságot:
- Szöveg és betűméret: a hosszabb szöveg, a kifejezett sortörések vagy a nagyobb betűméret több függőleges helyet igényelhet.
- Sortörés és oszlopszélesség: a sortörés engedélyezése esetén az oszlopszélesség csökkentése az IColumn::set_Width metódussal több sort eredményezhet. Egy szélesebb oszlop csökkentheti a függőleges helyigényt.
- Cellamargók: az ICell::set_MarginTop és az ICell::set_MarginBottom szabályozzák a függőleges helyet növelő margókat. Az ICell::set_MarginLeft és az ICell::set_MarginRight a szöveg számára elérhető szélességet csökkentő margókat szabályozzák, és további sortörést okozhatnak.
Egy, egyesített cellákat nem tartalmazó táblázatnál az a cella, amelyik a legtöbb függőleges helyet igényli, meghatározza a sor egészének tartalom‑alapú alsó határát. A sor rövidebbé tételéhez esetleg rövidíteni kell a szöveget, csökkenteni a betűméretet vagy a margókat, vagy szélesíteni egy oszlopot.
Az alábbi képek ugyanazt a táblázatot ugyanabban a méretezésben mutatják. A bemutatott .NET futtatásban a tényleges magasságok 70, 100 és 55,2 pont voltak: az utolsó sor továbbra is magasabb maradt, mint a 20 pontos minimum. A pontos szövegméretezés a környezetben elérhető betűtípusoktól függően változhat. Töltse le a mentett eredményeket: növelt minimum és csökkentett minimum.
| Eredeti: minimum 70 pt, tényleges 70 pt | Növelt: minimum 100 pt, tényleges 100 pt | Csökkentett: minimum 20 pt, tényleges 55.2 pt |
|---|---|---|
![]() |
![]() |
![]() |
Az első sor beállítása fejlécként
Használja a set_FirstRow metódust az első sor fejlécre formázásra való megjelöléséhez. A megjelenése a táblázatra alkalmazott táblastílustól függ.
- Töltse be a prezentációt a Presentation osztállyal.
- Szerezze meg az első diát.
- Szerezze meg a táblázatot, amely az első alakzatként van tárolva a dián.
- Engedélyezze a fejlécformázást az első sorra.
- Mentse el a módosított prezentációt.
A példához table.pptx fájl szükséges, amelyben a táblázat az első dián az első alakzatként szerepel. Engedélyezi a fejlécformázást az első sorra, és elmenti a First_row_header.pptx fájlt.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"table.pptx");
auto slide = presentation->get_Slide(0);
auto table = ExplicitCast<ITable>(slide->get_Shape(0));
table->set_FirstRow(true);
presentation->Save(u"First_row_header.pptx", SaveFormat::Pptx);
Táblázatsor vagy oszlop klónozása
Klónozzon sorokat vagy oszlopokat a tartalmuk és formázásuk újbóli felhasználásához. A másolatot hozzáfűzheti a táblázat végéhez vagy beszúrhatja egy adott pozícióba.
- Töltse be a prezentációt a Presentation osztállyal.
- Szerezze meg az első diát.
- Határozza meg az oszlopok szélességét és a sorok magasságát.
- Adjon hozzá egy táblázatot a AddTable metódussal.
- Klónozza a szükséges sorokat.
- Klónozza a szükséges oszlopokat.
- Mentse el a módosított prezentációt.
A példához Test.pptx fájl szükséges, amely legalább egy diát tartalmaz. Létrehoz egy három oszlopos és öt soros táblázatot, a méreteket pontban megadva. Hozzáfűzi az első sor és oszlop másolatait, majd a második sor és oszlop másolatait a 3‑as indexnél (a negyedik pozíció) szúrja be. Az eredményül kapott táblázat hét sorral és öt oszloppal rendelkezik. A false argumentum letiltja a klónozást a szomszédos egyesített sorokba vagy oszlopokba; ez a táblázat nem tartalmaz egyesített cellákat.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
#include <DOM/Table/IRowCollection.h>
#include <DOM/Table/IColumnCollection.h>
#include <DOM/ITextFrame.h>
#include <DOM/Table/ICell.h>
#include <system/array.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"Test.pptx");
auto slide = presentation->get_Slide(0);
auto columnWidths = MakeArray<double>({ 50, 50, 50 });
auto rowHeights = MakeArray<double>({ 50, 30, 30, 30, 30 });
auto table = slide->get_Shapes()->AddTable(100, 50, columnWidths, rowHeights);
table->idx_get(0, 0)->get_TextFrame()->set_Text(u"Row 1 Cell 1");
table->idx_get(1, 0)->get_TextFrame()->set_Text(u"Row 1 Cell 2");
table->get_Rows()->AddClone(table->get_Rows()->idx_get(0), false);
table->idx_get(0, 1)->get_TextFrame()->set_Text(u"Row 2 Cell 1");
table->idx_get(1, 1)->get_TextFrame()->set_Text(u"Row 2 Cell 2");
table->get_Rows()->InsertClone(3, table->get_Rows()->idx_get(1), false);
table->get_Columns()->AddClone(table->get_Columns()->idx_get(0), false);
table->get_Columns()->InsertClone(3, table->get_Columns()->idx_get(1), false);
presentation->Save(u"table_out.pptx", SaveFormat::Pptx);
Sor vagy oszlop eltávolítása a táblázatból
Távolítsa el a táblázatban már nem szükséges sorokat vagy oszlopokat. Egy elem eltávolítása eltolja a mögötte lévő sorok vagy oszlopok indexeit.
- Hozzon létre egy prezentációt a Presentation osztállyal.
- Szerezze meg az első diát.
- Határozza meg az oszlopok szélességét és a sorok magasságát.
- Adjon hozzá egy táblázatot a AddTable metódussal.
- Távolítsa el a második sort és a második oszlopot.
- Mentse el a módosított prezentációt.
Ez a példa egy három‑háromas táblázatot hoz létre, és az 1‑es indexű sort és oszlopot eltávolítja, így egy két‑kétas táblázat marad a TestTable_out.pptx fájlban. A méretek pontban vannak. A false argumentum letiltja a szomszédos egyesített sorok vagy oszlopok eltávolítását; ez a táblázat nem tartalmaz egyesített cellákat.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
#include <DOM/Table/IRowCollection.h>
#include <DOM/Table/IColumnCollection.h>
#include <system/array.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto columnWidths = MakeArray<double>({ 100, 50, 30 });
auto rowHeights = MakeArray<double>({ 30, 50, 30 });
auto table = slide->get_Shapes()->AddTable(100, 100, columnWidths, rowHeights);
table->get_Rows()->RemoveAt(1, false);
table->get_Columns()->RemoveAt(1, false);
presentation->Save(u"TestTable_out.pptx", SaveFormat::Pptx);
Szövegformázás beállítása a táblázat sor szintjén
Alkalmazzon szövegformázást egy teljes sorra, hogy a cellák egységesek legyenek. Beállíthatja a betűtulajdonságokat, bekezdésformázást és a szövegirányt anélkül, hogy egyesével formázná a cellákat.
- Töltse be a prezentációt a Presentation osztállyal.
- Szerezze meg a táblázatot az első dián.
- Állítsa be a betűmagasságot a set_FontHeight metódussal az első sorra.
- Állítsa be az igazítást és a jobb bekezdésmargót a set_Alignment és a set_MarginRight metódusokkal az első sorra.
- Állítsa be a szövegirányt a set_TextVerticalType metódussal a második sorra.
- Mentse el a módosított prezentációt.
A példához table.pptx fájl szükséges, amelyben a táblázat az első dián az első alakzatként szerepel, és legalább két sor van. 25 pontos szöveget, jobb igazítást és 20 pontos jobb bekezdésmargót alkalmaz az első sorra, majd a második sorra függőleges szöveget állít be.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
#include <DOM/Table/IRowCollection.h>
#include <DOM/PortionFormat.h>
#include <DOM/ParagraphFormat.h>
#include <DOM/TextAlignment.h>
#include <DOM/TextFrameFormat.h>
#include <DOM/TextVerticalType.h>
#include <DOM/Table/IRow.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"table.pptx");
auto slide = presentation->get_Slide(0);
auto table = ExplicitCast<ITable>(slide->get_Shape(0));
auto portionFormat = MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25);
table->get_Rows()->idx_get(0)->SetTextFormat(portionFormat);
auto paragraphFormat = MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20);
table->get_Rows()->idx_get(0)->SetTextFormat(paragraphFormat);
auto textFrameFormat = MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
table->get_Rows()->idx_get(1)->SetTextFormat(textFrameFormat);
presentation->Save(u"row_formatting.pptx", SaveFormat::Pptx);
Szövegformázás beállítása a táblázat oszlop szintjén
Alkalmazzon szövegformázást egy teljes oszlopra, hogy a cellák egységesek legyenek. Beállíthatja a betűtulajdonságokat, bekezdésformázást és a szövegirányt anélkül, hogy egyesével formázná a cellákat.
- Töltse be a prezentációt a Presentation osztállyal.
- Szerezze meg a táblázatot az első dián.
- Állítsa be a betűmagasságot a set_FontHeight metódussal az első oszlopra.
- Állítsa be az igazítást és a jobb bekezdésmargót a set_Alignment és a set_MarginRight metódusokkal az első oszlopra.
- Állítsa be a szövegirányt a set_TextVerticalType metódussal a második oszlopra.
- Mentse el a módosított prezentációt.
A példához table.pptx fájl szükséges, amelyben a táblázat az első dián az első alakzatként szerepel, és legalább két oszlop van. 25 pontos szöveget, jobb igazítást és 20 pontos jobb bekezdésmargót alkalmaz az első oszlopra, majd a második oszlopra függőleges szöveget állít be.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
#include <DOM/Table/IColumnCollection.h>
#include <DOM/PortionFormat.h>
#include <DOM/ParagraphFormat.h>
#include <DOM/TextAlignment.h>
#include <DOM/TextFrameFormat.h>
#include <DOM/TextVerticalType.h>
#include <DOM/Table/IColumn.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"table.pptx");
auto slide = presentation->get_Slide(0);
auto table = ExplicitCast<ITable>(slide->get_Shape(0));
auto portionFormat = MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25);
table->get_Columns()->idx_get(0)->SetTextFormat(portionFormat);
auto paragraphFormat = MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20);
table->get_Columns()->idx_get(0)->SetTextFormat(paragraphFormat);
auto textFrameFormat = MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
table->get_Columns()->idx_get(1)->SetTextFormat(textFrameFormat);
presentation->Save(u"column_formatting.pptx", SaveFormat::Pptx);
Táblázat stílusjellemzőinek lekérése
Használja a get_StylePreset metódust egy táblázatra alkalmazott előbeállítás lekéréséhez és annak egy másik táblázaton való újrahasználatához. Ez az előbeállítást azonosítja, nem pedig az egyedi cellaformázási felülírásokat.
A példa létrehoz egy táblázatot, alkalmazza a TableStylePreset::DarkStyle1 előbeállítást, és visszaolvassa azt. Kiírja a DarkStyle1 értéket, és elmenti a táblázatot a table.pptx fájlba.
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Table/ITable.h>
#include <Export/SaveFormat.h>
#include <system/array.h>
#include <system/console.h>
#include <DOM/TableStylePreset.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto columnWidths = MakeArray<double>({ 100, 150 });
auto rowHeights = MakeArray<double>({ 5, 5, 5 });
auto table = slide->get_Shapes()->AddTable(10, 10, columnWidths, rowHeights);
table->set_StylePreset(TableStylePreset::DarkStyle1);
Console::WriteLine(u"{0}", table->get_StylePreset());
presentation->Save(u"table.pptx", SaveFormat::Pptx);
GYIK
Alkalmazhatok PowerPoint témákat/stílusokat egy már létrehozott táblázatra?
Igen. A táblázat örökli a dia/oldal/mester téma beállításait, és továbbra is felülírhatja a kitöltéseket, szegélyeket és szövegszíneket a téma fölött.
Rendezhetem a táblázatsorokat úgy, mint az Excelben?
Nem, az Aspose.Slides táblázatok nem rendelkeznek beépített rendezéssel vagy szűrőkkel. Először rendezze az adatokat a memóriában, majd töltse újra a táblázatsorokat ebben a sorrendben.
Lehetnek csíkos (sávos) oszlopok, miközben egyedi színeket tartok meg bizonyos cellákban?
Igen. Kapcsolja be a csíkos oszlopokat, majd felülírja a specifikus cellákat helyi formázással; a cellaszintű formázás előnyben részesül a táblastílus felett.


