Hogyan dolgozzunk táblákkal a .NET
Ez az útmutató bemutatja, hogyan építhető, formázható és olvasható táblázatok programozott módon in Aspose.Words FOSS a .NET számára, a használatával Table, Row, és Cell osztályok a Aspose.Words.Tables névtérrel együtt DocumentBuilder. Tartalmazza a táblázat elejétől való felépítését, a cellák és sorok formázását építés közben, a táblára kiterjedő elrendezés és AutoFit szabályozását, a preferált szélességek beállítását, a cellák egyesítését, valamint a már betöltött dokumentumban létező táblázatok olvasását.
Lépésről-lépésre útmutató
1. lépés: A csomag telepítése
Aspose.Words FOSS for .NET még nem tesz közzé NuGet csomagot – építsd fel a könyvtárat forrásból. Klónozd a https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git repót, majd építsd a Aspose.Words.sln-t Release konfigurációban a .NET SDK-val, és hivatkozz a keletkezett Aspose.Words assembly-re a projektedben. A könyvtár a .NET Standard 2.0-ra céloz, így fut a .NET Framework 4.6.2+ és a .NET 6/8/10 környezetekben.
2. lépés: A szükséges osztályok importálása
Adj hozzá egy using Aspose.Words; direktívát a fő dokumentumosztályokhoz (Document, DocumentBuilder), valamint egy using Aspose.Words.Tables; direktívát a táblákra specifikus osztályokhoz, amelyeket ez az útmutató lefed – Table, Row, Cell, CellFormat, RowFormat, PreferredWidth, és a kapcsolódó felsorolások.
3. lépés: Új táblázat létrehozása a DocumentBuilder segítségével
Hozzon létre egy Document és egy hozzá kötött DocumentBuilder elemet, majd hívja meg a DocumentBuilder.StartTable()-t, hogy a kurzornál táblázatot kezdjen. Minden sor egy cellájához hívja a DocumentBuilder.InsertCell()-t, majd a sort a DocumentBuilder.EndRow()-vel zárja le. Ismételje meg annyi sorral, amennyire a táblázatnak szüksége van, és a teljes táblázatot a DocumentBuilder.EndTable()-vel zárja le. Minden StartTable()nek szüksége van egy megfelelő EndTable()-re, és minden sornak egy megfelelő EndRow()-re, különben a builder belső állapota – és a keletkezett dokumentumfa – hibás lesz.
4. lépés: Formázza a cellákat és sorokat építés közben
Állítsa be a DocumentBuilder.CellFormat és a DocumentBuilder.RowFormat értékeket, mielőtt meghívja a InsertCell() vagy a EndRow() függvényt, hogy formázást alkalmazzon a builder által létrehozandó cellákra és sorokra – ez a két tulajdonság új tartalom sablonjaként működik, nem retroaktív módosításként a már beillesztett cellákra. A CellFormat a következőket teszi elérhetővé: Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, valamint a négy kitöltési tulajdonságot (LeftPadding, RightPadding, TopPadding, BottomPadding), amelyeket egyszerre állíthat be a SetPaddings() segítségével. A RowFormat a Borders, Height, HeightRule, AllowBreakAcrossPages és HeadingFormat elemeket teszi elérhetővé. Hívja a CellFormat.ClearFormatting() vagy a RowFormat.ClearFormatting() függvényt, hogy az egyiket vagy mindkettőt alapértelmezett értékre állítsa vissza, mielőtt új értékeket adna meg a következő sor vagy cella számára.
5. lépés: Állítsa be a táblázat szintű elrendezést és a AutoFit
Amikor a táblázat már létezik, állítsa be az elrendezési tulajdonságokat közvetlenül a Table objektumon: Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions) és TextWrapping. Hívja a Table.SetBorders()-t, hogy egyetlen szegélystílust, szélességet és színt alkalmazzon a teljes táblázatra, vagy a Table.SetBorder()-t egy oldal beállításához; a ClearBorders() és ClearShading() visszaállítja ezeket. A Table.AutoFit(AutoFitBehavior) átméretezi a táblázatot és celláit a választott viselkedés szerint – hívja újra bármilyen strukturális módosítás után, mivel csak abban a pillanatban tükrözi a táblázat állapotát, amikor fut, nem folyamatosan.
6. lépés: Állítsa be az előnyben részesített és a cella szélességeket
Hozzon létre szélességértékeket a PreferredWidth.FromPercent() statikus gyári metódusokkal egy olyan elrendezéshez, amely alkalmazkodik az elérhető oldal szélességhez, vagy a PreferredWidth.FromPoints()-nel rögzített szélességhez; a PreferredWidthType jelzi, hogy egy adott PreferredWidth milyen típusú értéket (Auto, Percent vagy Points) tartalmaz. A eredményt rendelje hozzá a Table.PreferredWidth-hez a teljes táblázathoz vagy a CellFormat.PreferredWidth-hez egyetlen cellához.
7. lépés: Cellák egyesítése
Jelölje meg a cellákat egyesítettként a CellFormat.HorizontalMerge vagy CellFormat.VerticalMerge beállításával (mindkettőt CellMerge típusúra) azon cellákon, amelyek részt kell vegyenek az egyesítésben. Ha a cellák csak úgy néztek ki, mintha egyesítve lennének, a szélességük egyeztetésével, anélkül, hogy kifejezetten meg lettek volna jelölve, hívja meg a Table.ConvertToHorizontallyMergedCells() függvényt, hogy ez a vizuális elrendezés valódi CellMerge állapottal rendelkező cellákká alakuljon. A CellVerticalAlignment szabályozza, hogyan igazodik függőlegesen a tartalom a cellán belül, az egyesítéstől függetlenül.
8. lépés: Táblák beolvasása meglévő dokumentumból
A már betöltött dokumentumban lévő táblákkal való munka érdekében olvassa be a Body.Tables (vagy a Tables tulajdonságot bármely más Story) – egy TableCollection – helyett, hogy újakat építene. A Table.Rows egy RowCollection típusú elemet ad vissza, és a Row.Cells egy CellCollection típusút; mindhárom gyűjteménytípus támogatja a Add(), Insert(), Remove(), RemoveAt(), Contains() és IndexOf() használatát programozott módosításokhoz. Sorok vagy cellák eltávolítása után hívja meg a Table.EnsureMinimum(), Row.EnsureMinimum() vagy Cell.EnsureMinimum() függvényt, hogy a csomópont megőrizze a Word által elvárt legkisebb érvényes szerkezetet – egy üres sort, egy üres cellát vagy egy üres bekezdést, illetően.
Gyakori problémák és megoldások
A mentett dokumentum hibásnak tűnik, vagy hiba lép fel a mentés közben Egy sort vagy a táblázatot soha nem zárták le. Mindig párosítsd DocumentBuilder.StartTable() egy végsővel EndTable(), és zárd le minden sort a EndRow() mielőtt a következőre lépnél, vagy befejeznéd a táblázatot.
Az új cellák nem veszik át a beállított formázást CellFormat and RowFormat megváltoztak a DocumentBuilder a befolyásolt cellák már beszúrása után. Állítsd be DocumentBuilder.CellFormat / RowFormat előtt a InsertCell() or EndRow() az a hívás, amely létrehozza a formázni kívánt tartalmat.
A táblázat nem méreteződik át úgy, ahogy elvárom, miután szerkesztem a tartalmát. Table.AutoFit(AutoFitBehavior) csak a hívás pillanatában tükrözi a táblázat szerkezetét. Hívja meg újra bármilyen strukturális módosítás után – sorok, cellák vagy tartalom hozzáadása vagy eltávolítása – ha az elrendezést újra kell illeszteni.
Az egyesítettnek látszó cellák visszaolvasáskor 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. Hívás Table.ConvertToHorizontallyMergedCells(), vagy állítsa be CellFormat.HorizontalMerge / VerticalMerge explicit módon azon cellákon, amelyeknek egyesülniük kell.
A sorok vagy cellák eltávolítása a táblázatot érvénytelen állapotba helyezi A Word minden Table, Row, és Cell hogy minimális érvényes szerkezetet tartson fenn. Tartalom programozott eltávolítása után hívd EnsureMinimum() az épp módosított csomóponton.
Gyakran Ismételt Kérdések
Hogyan építhetek táblázatot a semmiből ahelyett, hogy egy meglévőt szerkesztenék?
Használja a DocumentBuilder elemet: hívja a StartTable() függvényt, majd a InsertCell() minden egyes cellához egy sorban, a EndRow() a sor lezárásához, ismételje meg a további soroknál, és a EndTable() a táblázat lezárásához.
Hogyan érhetem el a betöltött dokumentumban már létező táblázatokat?
Olvassa el a Tables tulajdonságot (egy TableCollection) a Body részen, amelyik a kívánt szakaszban található, vagy bármely más Story – például fejléc vagy lábléc – esetén.
Hogyan állíthatom be a táblázatot a lap szélességének százalékában, ahelyett, hogy rögzített szélességet adnék meg?
Rendelje a Table.PreferredWidth = PreferredWidth.FromPercent(value) értéket a PreferredWidth.FromPoints(value) helyett.
Mi a különbség a SetBorders és a SetBorder használatával történő szegélybeállítás között?
Table.SetBorders() egy vonalstílust, szélességet és színt alkalmaz egyszerre a táblázat minden szegélyére; Table.SetBorder() egyetlen oldalt állít be, lehetővé téve, hogy a különböző oldalak eltérő formázást kapjanak.
Hogyan állíthatom vissza a formázást egy cellán vagy soron, mielőtt újra felhasználnám?
Hívja a CellFormat.ClearFormatting() függvényt a cella CellFormat elemén, vagy a RowFormat.ClearFormatting() függvényt a sor RowFormat elemén.