Táblázatok kezelése .NET-ben
Bevezetés
A PowerPoint táblák sorokba és oszlopokba szervezik az információkat, megkönnyítve az értékek olvasását és összehasonlítását.
Aspose.Slides biztosítja a Table osztályt, az ITable interfészt, a Cell osztályt, az ICell interfészt és egyéb típusokat, amelyek lehetővé teszik táblák létrehozását, frissítését és kezelését a prezentációkban.
Táblázat létrehozása az alapoktól
Hozzon létre egy táblázatot a pozíció, az oszlopszélességek és a sormagasságok megadásával. A diára való hozzáadás után formázhatja a cellaszegélyeket, egyesítheti a cellákat, és szöveget illeszthet be.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen hivatkozást a diára a indexe alapján.
- Határozzon meg egy pontban megadott oszlopszélességek tömbjét.
- Határozzon meg egy pontban megadott sormagasságok tömbjét.
- Adjon hozzá egy ITable objektumot a diára a AddTable metódus segítségével.
- Iteráljon végig minden ICell elemen, hogy formázza a felső, alsó, jobb és bal szegélyeket.
- Olvasztja össze a táblázat első sorának első két celláját.
- Érje el az egyesített cellát a TextFrame tulajdonságán keresztül.
- Állítsa be a szöveget az egyesített cellában.
- Mentse a módosított prezentációt.
Az alábbi példa egy három oszlopos és öt soros táblázatot hoz létre (100, 50) pontban. Piros szegélyeket alkalmaz 5 pontos szélességgel, egyesíti az első sor első két celláját, és a végeredményt table.pptx néven menti.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var columnWidths = new double[] { 50, 50, 50 };
var rowHeights = new double[] { 50, 30, 30, 30, 30 };
var table = slide.Shapes.AddTable(100, 50, columnWidths, rowHeights);
foreach (var row in table.Rows)
{
foreach (var cell in row)
{
var cellFormat = cell.CellFormat;
cellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderTop.Width = 5;
cellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderBottom.Width = 5;
cellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderLeft.Width = 5;
cellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderRight.Width = 5;
}
}
table.MergeCells(table[0, 0], table[1, 0], false);
table[0, 0].TextFrame.Text = "Merged Cells";
presentation.Save("table.pptx", SaveFormat.Pptx);
Számozás egy szabványos táblázatban
Egy szabványos táblázatban a cella indexek 0-alapúak, és (oszlop, sor) sorrendet követnek. Az első cella indexe (0, 0).
Például egy 4 oszlopos és 4 soros táblázat cellái így vannak számozva:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
Ez a példa létrehozza a fent ábrázolt 4 × 4-es táblázatot, 70 pontos oszlopszélességgel és sormagassággal, valamint 5 pontos szélességű piros cellaszegélyekkel. A koordináták a cella indexeket mutatják; a példa üresen hagyja a cellákat, és a táblázatot StandardTables_out.pptx néven menti.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var columnWidths = new double[] { 70, 70, 70, 70 };
var rowHeights = new double[] { 70, 70, 70, 70 };
var table = slide.Shapes.AddTable(100, 50, columnWidths, rowHeights);
foreach (var row in table.Rows)
{
foreach (var cell in row)
{
var cellFormat = cell.CellFormat;
cellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderTop.Width = 5;
cellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderBottom.Width = 5;
cellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderLeft.Width = 5;
cellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cellFormat.BorderRight.Width = 5;
}
}
presentation.Save("StandardTables_out.pptx", SaveFormat.Pptx);
Létező táblázat elérése
A táblázatok a dia alakzatgyűjteményében tárolódnak. Iteráljon végig az alakzatokon, hogy megtalálja a táblázatot, majd használja az ITable interfészt a cellák olvasásához vagy frissítéséhez.
- Töltse be a prezentációt a Presentation osztály használatával.
- Szerezzen hivatkozást a táblázatot tartalmazó diára a indexe alapján.
- Iteráljon végig az IShape objektumokon, és álljon meg, amikor táblázatot talál. Ha a dián több táblázat is van, használja az AlternativeText attribútumot a kívánt azonosításához.
- Frissítse a szöveget a célcellaban.
- Mentse a módosított prezentációt.
Az alábbi példa megnyitja a UpdateExistingTable.pptx fájlt, és megtalálja az első táblázatot az első dián. A 0. oszlop, 1. sor cellájában a szöveget New-ra állítja, és a végeredményt table1_out.pptx néven menti. A bemenetnek legalább egy diát kell tartalmaznia, és az első táblázatnak legalább egy oszloppal és két sorral kell rendelkeznie.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("UpdateExistingTable.pptx");
var slide = presentation.Slides[0];
ITable? table = null;
foreach (var shape in slide.Shapes)
{
if (shape is ITable candidateTable)
{
table = candidateTable;
break;
}
}
table![0, 1].TextFrame.Text = "New";
presentation.Save("table1_out.pptx", SaveFormat.Pptx);
Egy létező táblázat sorának átméretezéséhez és annak megértéséhez, hogy miért haladhatja meg a tényleges magasság a kért minimumot, tekintse meg a Sor magasságának vezérlése oldalt.
A szövegkeretet birtokló cella megtalálása
Amikor egy általános szövegfeldolgozó kód egy táblázatból kap egy ITextFrame objektumot, használja az ITextFrame.ParentCell tulajdonságot a tulajdonos ICell lekérdezéséhez. Egy táblázatcella szövegkeret esetén az ITextFrame.ParentCell be van állítva, és az ITextFrame.ParentShape null, még akkor is, ha maga a táblázat egy alakzat.
A cellakoordináták a csak olvasható ICell.FirstColumnIndex és ICell.FirstRowIndex tulajdonságokon keresztül érhetők el. Az ITextFrame.ParentCell szintén csak olvasható: navigációt biztosít a tulajdonos felé, de nem változtatja meg a tulajdonjogot. Mindig ellenőrizze, hogy a visszakapott cella null-e, mielőtt használja.
Egy teljes példáért, amely azonosítja a táblázatcella és alakzat tulajdonosait, beleértve a SmartArt csomópontokhoz kapcsolódó alakzatokat, tekintse meg a Szöveg keresése és cseréje oldalt.
Szöveg igazítása egy táblázatban
Egyes táblázatcellák függőleges rögzítését és szövegirányát szabályozhatja. Ebben a szakaszban szereplő példa középre helyezi a szöveget az első cellában, és 270 fokkal elforgatja.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen hivatkozást a diára a indexe alapján.
- Adjon hozzá egy ITable objektumot a diára.
- Érjen el egy ITextFrame objektumot a táblázatból.
- Érje el az első IParagraph objektumot, és állítsa be a szöveget és a színt.
- Állítsa be a cella TextAnchorType és TextVerticalType értékeit.
- Mentse a módosított prezentációt.
Ez a példa egy 4 × 4-es táblázatot hoz létre 120 pontos oszlopszélességgel és 100 pontos sormagassággal. Formázza a (0, 0) cellában lévő szöveget, hozzáad értékeket az első sor többi cellájához, és a végeredményt Vertical_Align_Text_out.pptx néven menti.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var columnWidths = new double[] { 120, 120, 120, 120 };
var rowHeights = new double[] { 100, 100, 100, 100 };
var table = slide.Shapes.AddTable(100, 50, columnWidths, rowHeights);
table[1, 0].TextFrame.Text = "10";
table[2, 0].TextFrame.Text = "20";
table[3, 0].TextFrame.Text = "30";
var cell = table[0, 0];
var paragraph = cell.TextFrame.Paragraphs[0];
var portion = paragraph.Portions[0];
portion.Text = "Text here";
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
cell.TextAnchorType = TextAnchorType.Center;
cell.TextVerticalType = TextVerticalType.Vertical270;
presentation.Save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
Szövegformázás beállítása táblázat szinten
Használja a SetTextFormat metódust a szövegformázás alkalmazásához a táblázat minden celláján. A túlterhelései lehetővé teszik a rész, bekezdés és szövegkeret formázását, így ezek a tulajdonságok egyenkénti cellák iterálása nélkül állíthatók be.
- Töltse be a prezentációt a Presentation osztály használatával.
- Szerezzen hivatkozást a diára a indexe alapján.
- Érjen el egy ITable objektumot a diáról.
- Állítsa be a szöveg FontHeight értékét.
- Állítsa be az Alignment és a MarginRight értékeket.
- Állítsa be a TextVerticalType értékét.
- Mentse a módosított prezentációt.
Az alábbi példa megnyitja a table.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, azon a dián első alakzatként egy táblázattal. A betűméretet 25 pontra, a bekezdéseket jobbra igazítja 20 pontos jobb margóval, és a szöveget függőlegessé teszi. A formázott prezentációt result.pptx néven menti.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("table.pptx");
var slide = presentation.Slides[0];
var table = (ITable)slide.Shapes[0];
var portionFormat = new PortionFormat();
portionFormat.FontHeight = 25;
table.SetTextFormat(portionFormat);
var paragraphFormat = new ParagraphFormat();
paragraphFormat.Alignment = TextAlignment.Right;
paragraphFormat.MarginRight = 20;
table.SetTextFormat(paragraphFormat);
var textFrameFormat = new TextFrameFormat();
textFrameFormat.TextVerticalType = TextVerticalType.Vertical;
table.SetTextFormat(textFrameFormat);
presentation.Save("result.pptx", SaveFormat.Pptx);
Táblázat stílus tulajdonságainak lekérése
Használja a StylePreset elemet a táblázat előre beállított stílusának olvasásához vagy hozzárendeléséhez. Ez a példa a TableStylePreset.DarkStyle1 stílust alkalmaz egy táblázatra, kiírja az előre beállított névét, és ugyanezt a stílust a második táblázatra is hozzárendeli. Mindkét táblázat a table-style.pptx fájlban kerül mentésre.
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var columnWidths = new double[] { 100, 150 };
var rowHeights = new double[] { 5, 5, 5 };
var table = slide.Shapes.AddTable(10, 10, columnWidths, rowHeights);
table.StylePreset = TableStylePreset.DarkStyle1;
var stylePreset = table.StylePreset;
Console.WriteLine($"Table style preset: {stylePreset}");
var anotherTable = slide.Shapes.AddTable(10, 100, columnWidths, rowHeights);
anotherTable.StylePreset = stylePreset;
presentation.Save("table-style.pptx", SaveFormat.Pptx);
Táblázat képarányának zárolása
A táblázat képaránya a szélesség és a magasság aránya. Használja az AspectRatioLocked elemet a képarány zárolásához egy táblázatnál.
Az alábbi példa megnyitja a pres.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, ahol a táblázat az első alakzat. Kiírja a jelenlegi zárolási állapotot, engedélyezi a képarány zárolását, kiírja a frissített állapotot (True), és a végeredményt pres-out.pptx néven menti.
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("pres.pptx");
var slide = presentation.Slides[0];
var table = (ITable)slide.Shapes[0];
Console.WriteLine($"Lock aspect ratio set: {table.ShapeLock.AspectRatioLocked}");
table.ShapeLock.AspectRatioLocked = true;
Console.WriteLine($"Lock aspect ratio set: {table.ShapeLock.AspectRatioLocked}");
presentation.Save("pres-out.pptx", SaveFormat.Pptx);
GYIK
Engedélyezhetem a jobbról balra (RTL) olvasási irányt egy teljes táblázat és celláiban lévő szöveg számára?
Igen. A táblázat rendelkezik egy RightToLeft tulajdonsággal, a bekezdéseknek pedig ParagraphFormat.RightToLeft beállítása van. Mindkettő használata biztosítja a helyes RTL sorrendet és megjelenítést a cellákon belül.
Hogyan akadályozhatom meg, hogy a felhasználók mozgassák vagy átméretezzék a táblázatot a végleges fájlban?
Használja a alakzat zárolások lehetőséget a mozgatás, átméretezés, kiválasztás stb. letiltására. Ezek a zárolások táblázatokra is vonatkoznak.
Támogatott-e egy kép beillesztése egy cellába háttérként?
Igen. Beállíthat egy képkitöltés kitöltést a cellához; a kép a választott mód (nyújtás vagy csempe) szerint lefedi a cella területét.