Táblákkal való munka

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 a DocumentBuilder.RowFormat értékeket minden InsertCell() vagy EndRow() 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() vagy Cell.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 a PreferredWidth.FromPoints() beállítást rögzített elrendezési szélességhez.
  • A AutoFitBehavior akkor kerül alkalmazásra, amikor meghívja a Table.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émaOkJavítás
A táblázat hibásan jelenik meg, vagy hibát dob mentéskorEgy sor vagy a táblázat sosem lett lezárva a EndRow() / EndTable() segítségévelMindig 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ástA 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ánAutoFit() tükrözi a tábla állapotát a hívás pillanatában, nem folyamatosanHí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 viselkednekA cellákat csak szélesség alapján párosították, nem jelölték meg a CellMerge segítségévelHí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 / EnumLeírás
TableTáblacsomópont; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth
RowTáblasor csomópont; Cells, RowFormat, EnsureMinimum()
CellTáblacella csomópont; CellFormat, EnsureMinimum()
TableCollection / RowCollection / CellCollectionTipizált gyűjtemények a Table / Row / Cell csomópontokból
CellFormatCellánkénti formázás: szegélyek, árnyékolás, kitöltés, egyesítés állapota, függőleges igazítás
RowFormatSoronkénti formázás: szegélyek, magasság, oldaltörés viselkedése
PreferredWidth / PreferredWidthTypeA táblázat vagy cella szélességértéke és egysége (auto, százalék, pont)
AutoFitBehaviorHogyan méretezi a(z) Table.AutoFit() a táblázatot és annak celláit
CellMerge / CellVerticalAlignmentVízszintes/függőleges cella-összevonási állapot és függőleges tartalomigazítás
TableAlignment / TableStyleOptions / TextWrappingTáblázaton belüli igazítás, stílusalkalmazás és a szövegtördelés viselkedése
DocumentBuilder.StartTable / InsertCell / EndRow / EndTableKurzor-alapú táblázatépítés

Lásd még:

 Magyar