Jak pracovat s tabulkami v .NET

Jak pracovat s tabulkami v .NET

Tento průvodce ukazuje, jak programově vytvářet, formátovat a číst tabulky v Aspose.Words FOSS pro .NET, pomocí Table, Row, a Cell třídy v Aspose.Words.Tables jmenném prostoru spolu s DocumentBuilder. Pokrývá vytváření tabulky od nuly, formátování buněk a řádků během tvorby, řízení rozvržení celé tabulky a AutoFit, nastavení preferovaných šířek, sloučení buněk a čtení tabulek již obsažených v načteném dokumentu.

Krok za krokem

Krok 1: Nainstalujte balíček

Aspose.Words FOSS pro .NET zatím nepublikuje balíček NuGet – místo toho sestavte knihovnu ze zdrojového kódu. Naklonujte https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, poté sestavte Aspose.Words.sln v konfiguraci Release pomocí SDK .NET a odkažte na vzniklý sestavení Aspose.Words ve svém projektu. Knihovna cílí na .NET Standard 2.0, takže běží na .NET Framework 4.6.2+ a .NET 6/8/10.


Krok 2: Importujte požadované třídy

Přidejte direktivu using Aspose.Words; pro základní třídy dokumentu (Document, DocumentBuilder) a direktivu using Aspose.Words.Tables; pro tabulkové třídy, které tento průvodce pokrývá – Table, Row, Cell, CellFormat, RowFormat, PreferredWidth a související výčty.


Krok 3: Vytvořte novou tabulku pomocí DocumentBuilder

Vytvořte Document a DocumentBuilder s ním spojený, pak zavolejte DocumentBuilder.StartTable() pro zahájení tabulky na pozici kurzoru. Pro každou buňku v řádku zavolejte DocumentBuilder.InsertCell() a poté řádek uzavřete pomocí DocumentBuilder.EndRow(). Opakujte pro tolik řádků, kolik tabulka potřebuje, a celou tabulku uzavřete pomocí DocumentBuilder.EndTable(). Každý StartTable() potřebuje odpovídající EndTable() a každý řádek potřebuje odpovídající EndRow(), jinak se vnitřní stav tvůrce – a výsledný strom dokumentu – stane poškozeným.


Krok 4: Formátujte buňky a řádky při tvorbě

Nastavte DocumentBuilder.CellFormat a DocumentBuilder.RowFormat před voláním InsertCell() nebo EndRow(), aby se použilo formátování na buňky a řádky, které tvůrce právě vytvoří – tyto dvě vlastnosti fungují jako šablona pro nový obsah, nikoli jako retroaktivní změna již vložených buněk. CellFormat zpřístupňuje Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth a čtyři vlastnosti odsazení (LeftPadding, RightPadding, TopPadding, BottomPadding), které lze všechny najednou nastavit pomocí SetPaddings(). RowFormat zpřístupňuje Borders, Height, HeightRule, AllowBreakAcrossPages a HeadingFormat. Zavolejte CellFormat.ClearFormatting() nebo RowFormat.ClearFormatting() pro resetování kterékoliv z nich na výchozí hodnoty před nastavením nových hodnot pro další řádek nebo buňku.


Krok 5: Nastavte rozvržení celé tabulky a AutoFit

Jakmile tabulka existuje, nastavte vlastnosti rozvržení přímo na objektu Table: Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions) a TextWrapping. Zavolejte Table.SetBorders() pro aplikaci jednoho stylu ohraničení, šířky a barvy na celou tabulku, nebo Table.SetBorder() pro nastavení jedné strany; ClearBorders() a ClearShading() je resetují. Table.AutoFit(AutoFitBehavior) mění velikost tabulky a jejích buněk podle zvoleného chování – zavolejte ji znovu po jakékoli strukturální úpravě, protože odráží stav tabulky jen v okamžiku spuštění, ne průběžně.


Krok 6: Nastavte preferované a šířky buněk

Vytvořte hodnoty šířky pomocí statických továrních metod PreferredWidth.FromPercent() pro rozvržení, které se přizpůsobuje dostupné šířce stránky, nebo PreferredWidth.FromPoints() pro pevnou šířku; PreferredWidthType uvádí, jaký typ hodnoty (Auto, Percent nebo Points) daný PreferredWidth obsahuje. Přiřaďte výsledek buď Table.PreferredWidth pro celou tabulku, nebo CellFormat.PreferredWidth pro jednu buňku.


Krok 7: Sloučit buňky

Označte buňky jako sloučené nastavením CellFormat.HorizontalMerge nebo CellFormat.VerticalMerge (oba zadané jako CellMerge) na buňkách, které mají být součástí sloučení. Pokud byly buňky jen vizuálně sloučeny nastavením jejich šířek místo explicitního označení, zavolejte Table.ConvertToHorizontallyMergedCells(), aby se toto vizuální uspořádání převedlo na buňky se skutečným stavem CellMerge. CellVerticalAlignment určuje, jak je obsah ve buňce vertikálně zarovnán, nezávisle na jakémkoli sloučení.


Krok 8: Načíst tabulky z existujícího dokumentu

Pro práci s tabulkami, které již jsou načtené v dokumentu, čtěte Body.Tables (nebo vlastnost Tables na jakémkoli jiném Story) – TableCollection – místo vytváření nových. Table.Rows vrací RowCollection a Row.Cells vrací CellCollection; všechny tři typy kolekcí podporují Add(), Insert(), Remove(), RemoveAt(), Contains() a IndexOf() pro programové úpravy. Po odebrání řádků nebo buněk zavolejte Table.EnsureMinimum(), Row.EnsureMinimum() nebo Cell.EnsureMinimum(), aby uzel zachoval minimální platnou strukturu, kterou Word očekává – prázdný řádek, prázdnou buňku nebo prázdný odstavec, v tomto pořadí.

Časté problémy a opravy

Uložený dokument vypadá poškozeně, nebo při ukládání nastane chyba Řádek nebo samotná tabulka nebyly nikdy uzavřeny. Vždy párujte DocumentBuilder.StartTable() s konečným EndTable(), a uzavřete každý řádek s EndRow() před přesunutím na další nebo ukončením tabulky.

Nové buňky nepřebírají formátování, které jsem nastavil CellFormat and RowFormat byly změněny na DocumentBuilder po tom, co byly dotčené buňky již vloženy. Nastavte DocumentBuilder.CellFormat / RowFormat před InsertCell() or EndRow() volání, které vytvoří obsah, který chcete formátovat.

Tabulka se po úpravě jejího obsahu nezmění velikost tak, jak očekávám. Table.AutoFit(AutoFitBehavior) odráží strukturu tabulky pouze v okamžiku, kdy je zavolána. Zavolejte ji znovu po jakékoli úpravě struktury – přidání nebo odebrání řádků, buněk nebo obsahu – pokud je potřeba rozložení upravit.

Buňky, které vypadají sloučené, se při zpětném čtení chovají jako samostatné buňky. Buňky byly spárovány pouze podle šířky, neoznačeny pomocí CellMerge. Zavolejte Table.ConvertToHorizontallyMergedCells(), nebo nastavit CellFormat.HorizontalMerge / VerticalMerge explicitně na buňkách, které mají být sloučeny.

Odstranění řádků nebo buněk ponechává tabulku v neplatném stavu Word očekává každou Table, Row, a Cell aby zachoval minimální platnou strukturu. Po programovém odstranění obsahu zavolejte EnsureMinimum() na právě upraveném uzlu.

Často kladené otázky

Jak vytvořit tabulku od nuly místo úpravy existující?

Použijte DocumentBuilder: zavolejte StartTable(), poté InsertCell() pro každou buňku v řádku, EndRow() pro uzavření řádku, opakujte pro další řádky a EndTable() pro uzavření tabulky.

Jak získat tabulky, které již existují v načteném dokumentu?

Přečtěte si vlastnost Tables (jedná se o TableCollection) na Body sekce, o kterou máte zájem, nebo na jakémkoli jiném Story, například v záhlaví nebo zápatí.

Jak nastavit tabulku na procento šířky stránky místo pevné šířky?

Přiřaďte Table.PreferredWidth = PreferredWidth.FromPercent(value) místo PreferredWidth.FromPoints(value).

Jaký je rozdíl mezi nastavením okrajů pomocí SetBorders a SetBorder?

Table.SetBorders() použije jeden styl čáry, šířku a barvu na všechny okraje v tabulce najednou; Table.SetBorder() nastaví jednotlivou stranu, což umožňuje, aby různé strany měly odlišné formátování.

Jak resetovat formátování buňky nebo řádku před jeho opětovným použitím?

Zavolejte CellFormat.ClearFormatting() na CellFormat buňky, nebo RowFormat.ClearFormatting() na RowFormat řádku.

Viz také:

 Čeština