Táblákkal való munka
Táblákkal való munka
Táblázatok a Aspose.Words FOSS a .NET a következő által vannak ábrázolva Aspose.Words.Tables névtér: Table, Row, és Cell háromszintű összetett csomópont hierarchiát alkotnak, amely a dokumentumfában a bekezdésekkel együtt helyezkedik el. Ez az oldal a táblázatok létrehozásával DocumentBuilder,sorok és cellák formázása, a táblázat szintű elrendezés szabályozása, valamint cellák egyesítése.
A táblázat objektummodell
A Table egy CompositeNode, amely Row csomópontokat tartalmaz, és minden Row egy CompositeNode, amely Cell csomópontokat tartalmaz; egy Cell ezzel szemben bekezdéseket és esetleg beágyazott táblákat tartalmaz. Table.Rows egy RowCollection értéket ad vissza, Row.Cells egy CellCollection értéket ad vissza, és egy Body vagy más Story minden felső szintű táblát elérhetővé tesz benne a Tables tulajdonságán keresztül, amely egy TableCollection. Mindhárom gyűjtemény támogatja a Add(), Insert(), Remove(), RemoveAt(), Contains() és IndexOf() műveleteket. Table.EnsureMinimum(), Row.EnsureMinimum() és Cell.EnsureMinimum() mindegyike kitölti a legkisebb érvényes tartalmat, amelyre az adott típusú csomópontnak szüksége van (egy üres sor, egy üres cella vagy egy üres bekezdés, rendre), miután a programozott módosítások egyet anélkül hagynak.
Táblák építése DocumentBuilder használatával
A DocumentBuilder.StartTable() új táblát kezd a kurzornál, a InsertCell() cellát ad hozzá az aktuális sorhoz, a EndRow() lezárja az aktuális sort, és a EndTable() lezárja a táblát. Állítsa be a DocumentBuilder.CellFormat és DocumentBuilder.RowFormat értékeket a InsertCell() vagy EndRow() hívása előtt, hogy az alapértelmezett formázást alkalmazzák a cellákra és sorokra a létrehozásukkor – ezek a tulajdonságok sablonként szolgálnak a következőként beillesztett tartalomra, nem retroaktív módosítást jelentenek a dokumentumban már létező cellákra.
Cella- és sorformázás
Cell.CellFormat egy CellFormat példány (Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation) ClearFormatting() a visszaállításhoz és SetPaddings() az összes négy cella paddingjének egyidejű beállításához. Row.RowFormat egy RowFormat példány (Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat) saját ClearFormatting().
Táblaszerte formázás és AutoFit
Table maga is elérhetővé teszi a layout tulajdonságokat – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, és a hozzáférhetőségi metaadatokat a Title és Description segítségével. Table.AutoFit(AutoFitBehavior) a táblát és celláit a megadott viselkedés szerint méretezi át. SetBorder() egy szegélyoldalt állít be, és SetBorders() az összes szegélyt ugyanarra a vonalstílusra, szélességre és színre állítja az egész táblában; ClearBorders() és ClearShading() visszaállítják ezeket. ConvertToHorizontallyMergedCells() a szélesség egyezésével egyesített cellákat olyan cellákká alakítja, amelyek kifejezetten a HorizontalMerge jelzővel vannak megjelölve.
Preferált és cellaszélességek
PreferredWidth egy szélességet és annak egységét képviseli, amelyet a statikus gyári metódusokkal PreferredWidth.FromPercent() vagy PreferredWidth.FromPoints() hoznak létre; PreferredWidthType meghatározza, hogy egy adott PreferredWidth milyen típusú értéket (Auto, Percent vagy Points) tartalmaz. Mind a Table.PreferredWidth, mind a CellFormat.PreferredWidth elfogadja ezeket az értékeket.
Egyesített cellák
CellFormat.HorizontalMerge és CellFormat.VerticalMerge (CellMerge) jelzik, hogy egy cella hogyan vesz részt vízszintes vagy függőleges egyesítésben a szomszédokkal. CellVerticalAlignment szabályozza, hogy a tartalom hogyan igazodik függőlegesen a cellában, függetlenül bármilyen egyesítési állapottól.
Tippek és bevált gyakorlatok
- Zárja le minden
StartTable()elemet egy megfelelőEndRow()elemre soronként, valamint egy végsőEndTable()elemre – egy nem lezárt sor vagy táblázat a builder belső állapotát (és a létrejövő dokumentumfát) hibásan hagyja. - Állítsa be a
DocumentBuilder.CellFormatés aDocumentBuilder.RowFormatértékeket mindenInsertCell()vagyEndRow()hívás előtt, ha a ugyanabban a táblázatban lévő különböző sorok vagy cellák különböző formázást igényelnek; a builder a beszúrás pillanatában beállított értékeket alkalmazza. - Hívja meg a
Table.EnsureMinimum(),Row.EnsureMinimum()vagyCell.EnsureMinimum()függvényt a tartalom programozott eltávolítása után, hogy a csomópont megőrizze a Word által elvárt minimális érvényes szerkezetet. - Használja a
PreferredWidth.FromPercent()beállítást olyan táblázatokhoz, amelyeknek alkalmazkodniuk kell a rendelkezésre álló oldal szélességéhez, és aPreferredWidth.FromPoints()beállítást rögzített elrendezési szélességhez. - A
AutoFitBehaviorakkor kerül alkalmazásra, amikor meghívja aTable.AutoFit()funkciót – nem fut le folyamatosan, amikor tartalmat ad hozzá vagy távolít el, ezért jelentős módosítások után hívja meg újra, ha a táblázatot újra kell illeszteni.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
| A táblázat hibásan jelenik meg, vagy hibát dob mentéskor | Egy sor vagy a táblázat sosem lett lezárva a EndRow() / EndTable() segítségével | Mindig párosítsd a StartTable() elemet egy végső EndTable() elemmel, és zárd le minden sort a EndRow() segítségével |
| Az új cellák nem veszik át a beállított formázást | A CellFormat / RowFormat módosult a szerkesztőben, miután a cellák már be lettek szúrva | Állítsd be a DocumentBuilder.CellFormat / RowFormat értékeket, mielőtt meghívod a InsertCell() / EndRow() függvényt az adott tartalomhoz |
| A táblázat nem úgy méreteződik újra, ahogy elvárom a szerkesztések után | AutoFit() tükrözi a tábla állapotát a hívás pillanatában, nem folyamatosan | Hívja újra a Table.AutoFit(AutoFitBehavior)-t a szerkezeti módosítások után |
| Az egymás melletti, egyesítettnek tűnő cellák különálló cellaként viselkednek | A cellákat csak szélesség alapján párosították, nem jelölték meg a CellMerge segítségével | Hívja a Table.ConvertToHorizontallyMergedCells()-t, vagy állítsa be explicit módon a CellFormat.HorizontalMerge / VerticalMerge értékeket |
FAQ
Hogyan építhetek táblázatot a semmiből a DocumentBuilder segítségével?
Hívja a StartTable(), majd a InsertCell() minden cellához egy sorban, a EndRow() a sor lezárásához, ismételje a további soroknál, és végül a EndTable() a táblázat lezárásához.
Hogyan állíthatok be százalékos táblázatszélességet a fix szélesség helyett?
Rendelje hozzá a Table.PreferredWidth = PreferredWidth.FromPercent(value) értéket a PreferredWidth.FromPoints(value) helyett.
Hogyan állíthatom vissza egy cella vagy sor összes formázását?
Hívja a CellFormat.ClearFormatting() egy cella CellFormat elemén, vagy a RowFormat.ClearFormatting() egy sor RowFormat elemén.
Hogyan állíthatom be egyszerre a teljes táblázat szegélyeit és árnyékolását?
Használja a Table.SetBorders() minden oldalra egységes szegélyhez, a Table.SetBorder() egyes oldalakonként, és a Table.SetShading() egységes árnyékoláshoz; a ClearBorders() és a ClearShading() visszaállítják őket.
API Reference összegzés
| Osztály / Enum | Leírás |
|---|---|
Table | Táblacsomópont; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth |
Row | Táblasor csomópont; Cells, RowFormat, EnsureMinimum() |
Cell | Táblacella csomópont; CellFormat, EnsureMinimum() |
TableCollection / RowCollection / CellCollection | Tipizált gyűjtemények a Table / Row / Cell csomópontokból |
CellFormat | Cellánkénti formázás: szegélyek, árnyékolás, kitöltés, egyesítés állapota, függőleges igazítás |
RowFormat | Soronkénti formázás: szegélyek, magasság, oldaltörés viselkedése |
PreferredWidth / PreferredWidthType | A táblázat vagy cella szélességértéke és egysége (auto, százalék, pont) |
AutoFitBehavior | Hogyan méretezi a(z) Table.AutoFit() a táblázatot és annak celláit |
CellMerge / CellVerticalAlignment | Vízszintes/függőleges cella-összevonási állapot és függőleges tartalomigazítás |
TableAlignment / TableStyleOptions / TextWrapping | Táblázaton belüli igazítás, stílusalkalmazás és a szövegtördelés viselkedése |
DocumentBuilder.StartTable / InsertCell / EndRow / EndTable | Kurzor-alapú táblázatépítés |