Použít formátování tabulky

Každý prvek tabulky lze použít s různým formátováním. Například formátování tabulky bude aplikováno na celou tabulku, formátování řádku pouze na konkrétní řádky, formátování buněk pouze na určité buňky.

Aspose.Words poskytuje bohaté API získat a použít formátování do tabulky. Můžete použít Table, RowFormat, a CellFormat uzly pro nastavení formátování.

V tomto článku, budeme mluvit o tom, jak aplikovat formátování na různé tabulky uzlů a jaké tabulky formátování nastavení Aspose.Words Podpora.

Použít formátování různých uzlů

V této sekci se podíváme na formátování různých stolních uzlů.

Formátování úrovní tabulky

Chcete-li použít formátování do tabulky, můžete použít vlastnosti dostupné na odpovídající Table uzel pomocí Table, PreferredWidth, a TableCollection třídy.

Následující obrázky zobrazují znázornění Table funkce formátování v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

apply-formatting-to-table-level-aspose-words-java

apply-formatting-to-table-level-aspose-words-java

Následující příklad kódu ukazuje, jak použít obrysovou hranici na tabulku:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// Align the table to the center of the page.
table.setAlignment(TableAlignment.CENTER);
// Clear any existing borders from the table.
table.clearBorders();
// Set a green border around the table but not inside.
table.setBorder(BorderType.LEFT, LineStyle.SINGLE, 1.5, Color.GREEN, true);
table.setBorder(BorderType.RIGHT, LineStyle.SINGLE, 1.5, Color.GREEN, true);
table.setBorder(BorderType.TOP, LineStyle.SINGLE, 1.5, Color.GREEN, true);
table.setBorder(BorderType.BOTTOM, LineStyle.SINGLE, 1.5, Color.GREEN, true);
// Fill the cells with a light green solid color.
table.setShading(TextureIndex.TEXTURE_SOLID, Color.lightGray, new Color(0, true));
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.ApplyOutlineBorder.docx");

Následující příklad kódu ukazuje, jak postavit tabulku se všemi povolenými hranicemi (grid):

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// Clear any existing borders from the table.
table.clearBorders();
// Set a green border around and inside the table.
table.setBorders(LineStyle.SINGLE, 1.5, Color.GREEN);
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.BuildTableWithBorders.docx");

Formátování úrovní řádku

Formátování řádku** lze ovládat pomocí formátu Row, RowFormat, a RowCollection třídy.

Následující obrázky zobrazují znázornění Row funkce formátování v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

apply-formatting-to-row-level-aspose-words-java

Následující příklad kódu ukazuje, jak upravit formátování řádku tabulky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// Retrieve the first row in the table.
Row firstRow = table.getFirstRow();
firstRow.getRowFormat().getBorders().setLineStyle(LineStyle.NONE);
firstRow.getRowFormat().setHeightRule(HeightRule.AUTO);
firstRow.getRowFormat().setAllowBreakAcrossPages(true);

Formátování úrovní buněk

Formátování buněk je řízeno Cell, CellFormat, a CellCollection třídy.

Následující obrázky zobrazují znázornění Cell funkce formátování v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

apply-formatting-to-cell-level-aspose-words-java

apply-auto-formatting-to-row-level-aspose-words-java

Následující příklad kódu ukazuje, jak upravit formátování buňky tabulky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
Cell firstCell = table.getFirstRow().getFirstCell();
firstCell.getCellFormat().setWidth(30.0);
firstCell.getCellFormat().setOrientation(TextOrientation.DOWNWARD);
firstCell.getCellFormat().getShading().setForegroundPatternColor(Color.GREEN);

Následující příklad kódu ukazuje, jak nastavit množství místa (v bodech), aby bylo přidáno do levé/v horní/pravé/vnější části obsahu buňky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.startTable();
builder.insertCell();
// Sets the amount of space (in points) to add to the left/top/right/bottom of the cell's contents.
builder.getCellFormat().setPaddings(30.0, 50.0, 30.0, 50.0);
builder.writeln("I'm a wonderful formatted cell.");
builder.endRow();
builder.endTable();
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.CellPadding.docx");

Upřesnění výšek řádku

Nejjednodušší způsob, jak nastavit výšku řádku je použít DocumentBuilder. Použití vhodné RowFormat vlastnosti, můžete nastavit výchozí nastavení výšky nebo použít jinou výšku pro každý řádek v tabulce.

In Aspose.Words, výška řádku tabulky je řízena:

  • vlastnost “rovnice výška” Height
  • vlastnost pravidla výšky pro daný řádek? HeightRule

Zároveň je možné pro každý řádek nastavit jinou výšku, což vám umožní široce kontrolovat nastavení tabulky.

Následující příklad kódu ukazuje, jak vytvořit tabulku, která obsahuje jednu buňku a použít formátování řádku:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Table table = builder.startTable();
builder.insertCell();
RowFormat rowFormat = builder.getRowFormat();
rowFormat.setHeight(100.0);
rowFormat.setHeightRule(HeightRule.EXACTLY);
// These formatting properties are set on the table and are applied to all rows in the table.
table.setLeftPadding(30.0);
table.setRightPadding(30.0);
table.setTopPadding(30.0);
table.setBottomPadding(30.0);
builder.writeln("I'm a wonderful formatted row.");
builder.endRow();
builder.endTable();
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.ApplyRowFormatting.docx");

Zadejte tabulku a šířku buňky

Stůl v Microsoft Word dokument poskytuje několik různých způsobů, jak změnit velikost tabulky a jednotlivých buněk. Tyto vlastnosti umožňují značnou kontrolu nad vzhledem a chováním tabulky, takže Aspose.Words podporuje chování tabulek, jako v Microsoft Word.

Je důležité vědět, že prvky tabulky představují několik různých vlastností, které mohou ovlivnit šířku celkové tabulky, stejně jako jednotlivé buňky, se vypočítají:

  • Preferovaná šířka tabulky
  • Preferovaná šířka jednotlivých buněk
  • Umožňuje autofit na stole

Tento článek uvádí, jak fungují různé vlastnosti výpočtu šířky tabulky a jak získat plnou kontrolu nad výpočtem šířky tabulky. Tohle je zvláště užitečné vědět, v takových případech, kdy uspořádání tabulky se nezdá, jak se očekávalo.

Jak používat preferovanou šířku

Požadovaná šířka tabulky nebo jednotlivých buněk je definována preferovanou vlastností šířky, což je velikost, kterou se prvek snaží zapadnout. To znamená, že preferovanou šířku lze určit pro celou tabulku nebo pro jednotlivé buňky. V některých situacích nemusí být možné přesně zadat tuto šířku, ale skutečná šířka bude ve většině případů blízko této hodnoty.

Upřednostňovaný typ šířky a hodnota jsou nastaveny pomocí metod PreferredWidth třída:

  • Auto pole pro upřesnění automatické nebo preferované šířky
  • FromPercent metoda stanovení procentní šířky
  • FromPoints způsob určení šířky v bodech

Níže uvedené obrázky zobrazují zobrazení preferovaných funkcí nastavení šířky Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formatting-table-properties-aspose-words-java

Příklad, jak jsou tyto možnosti aplikovány na skutečnou tabulku v dokumentu, je vidět na obrázku níže.

table-applied-options-java

Zadejte preferovanou tabulku nebo šířku buňky

In Aspose.Words, Tabulka a šířky buněk jsou nastaveny pomocí Table.PreferredWidth majetek a CellFormat.PreferredWidth nemovitost, s možnostmi k dispozici v PreferredWidthType číslice:

  • Auto, který je ekvivalentní žádné preferované šířce
  • Percent, který odpovídá prvku vzhledem k dostupnému prostoru v okně nebo velikosti kontejneru a přepočítá hodnotu při změně dostupné šířky
  • Points, který odpovídá prvku stanovené šířky v bodech

Použití Table.PreferredWidth vlastnost upraví preferovanou šířku vzhledem ke svému kontejneru: stránku, textový sloupec nebo vnější tabulku, pokud se jedná o vnořenou tabulku.

Následující příklad kódu ukazuje, jak nastavit tabulku pro automatické nastavení na 50% šířky stránky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert a table with a width that takes up half the page width.
Table table = builder.startTable();
builder.insertCell();
table.setPreferredWidth(PreferredWidth.fromPercent(50.0));
builder.writeln("Cell #1");
builder.insertCell();
builder.writeln("Cell #2");
builder.insertCell();
builder.writeln("Cell #3");
doc.save(getArtifactsDir() + "WorkingWithTables.AutoFitToPageWidth.docx");

Použití CellFormat.PreferredWidth vlastnost na dané buňce upraví preferovanou šířku.

Následující příklad kódu ukazuje, jak nastavit různá preferovaná nastavení šířky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert a table row made up of three cells which have different preferred widths.
builder.startTable();
// Insert an absolute sized cell.
builder.insertCell();
builder.getCellFormat().setPreferredWidth(PreferredWidth.fromPoints(40.0));
builder.getCellFormat().getShading().setBackgroundPatternColor(Color.YELLOW);
builder.writeln("Cell at 40 points width");
// Insert a relative (percent) sized cell.
builder.insertCell();
builder.getCellFormat().setPreferredWidth(PreferredWidth.fromPercent(20.0));
builder.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
builder.writeln("Cell at 20% width");
// Insert a auto sized cell.
builder.insertCell();
builder.getCellFormat().setPreferredWidth(PreferredWidth.AUTO);
builder.getCellFormat().getShading().setBackgroundPatternColor(Color.GREEN);
builder.writeln(
"Cell automatically sized. The size of this cell is calculated from the table preferred width.");
builder.writeln("In this case the cell will fill up the rest of the available space.");
doc.save(getArtifactsDir() + "WorkingWithTables.PreferredWidthSettings.docx");

Najít preferovaný typ šířky a hodnotu

Můžete použít Type a Value vlastnosti najít preferované informace o šířce požadované tabulky nebo buňky.

Následující příklad kódu ukazuje, jak získat preferovaný typ šířky buňky tabulky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
table.setAllowAutoFit(true);
Cell firstCell = table.getFirstRow().getFirstCell();
/*PreferredWidthType*/int type = firstCell.getCellFormat().getPreferredWidth().getType();
double value = firstCell.getCellFormat().getPreferredWidth().getValue();

Jak nastavit Autofit

The AllowAutoFit vlastnost umožňuje buňkám v tabulce růst a zmenšovat se podle zvoleného kritéria. Například můžete použít AutoFit do okna možnost uložení tabulky na šířku stránky a AutoFit na obsah možnost nechat každou buňku růst nebo se zmenšit podle jejího obsahu.

Ve výchozím nastavení Aspose.Words vloží novou tabulku pomocí AutoFit do okna. Tabulka bude dimenzována podle dostupné šířky stránky. Chcete-li změnit velikost stolu, můžete zavolat AutoFit metoda. Tato metoda přijímá AutoFitBehavior číslice, která určuje, jaký typ autofitu se použije na tabulku.

Je důležité vědět, že autofit metoda je ve skutečnosti zkratka, která platí různé vlastnosti pro tabulku současně. Toto jsou vlastnosti, které dávají tabulce pozorované chování. Probereme tyto vlastnosti pro každou možnost autofitu.

Následující příklad kódu ukazuje, jak nastavit tabulku ke zmenšení nebo růstu každé buňky podle jejího obsahu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
table.setAllowAutoFit(true);

Budeme používat následující tabulku k aplikaci různých nastavení auto fit jako ukázku.

apply-different-autofit-settings-to-a-table-aspose-words-java

Tabulka AutoFit do okna

Při automatickém nastavení okna na stůl se v zákulisí provádějí tyto operace:

  1. The Table.AllowAutoFit vlastnost je povolena automaticky měnit velikost sloupců tak, aby vyhovovala dostupnému obsahu pomocí Table.PreferredWidth hodnota 100%
  2. CellFormat.PreferredWidth je odstraněn ze všech buněk tabulky
  3. Šíře sloupců jsou přepočítány pro aktuální obsah tabulky
  4. Šířka sloupců v tabulce se automaticky mění, když uživatel upraví text

Následující příklad kódu ukazuje, jak přiřadit tabulku na šířku stránky:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// Autofit the first table to the page width.
table.autoFit(AutoFitBehavior.AUTO_FIT_TO_WINDOW);
doc.save(getArtifactsDir() + "WorkingWithTables.AutoFitTableToWindow.docx");

Příklad toho, jak jsou tyto možnosti aplikovány na výše uvedenou tabulku, je vidět na obrázku níže.

autofit-table-aspose-words-java

Tabulka AutoFit k obsahu

Při automatickém nastavení tabulky se v zákulisí provádějí následující kroky:

  1. The Table.AllowAutoFit vlastnost je povolena automaticky měnit velikost každé buňky podle jejího obsahu

  2. Upřednostňovaná šířka tabulky se odstraní z Table.PreferredWidth, CellFormat.PreferredWidth se odstraní pro každou tabulku

  3. Šířka sloupců jsou přepočítány pro aktuální obsah tabulky

Následující příklad kódu ukazuje, jak se k jejímu obsahu přiřadí tabulka:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
table.autoFit(AutoFitBehavior.AUTO_FIT_TO_CONTENTS);
doc.save(getArtifactsDir() + "WorkingWithTables.AutoFitTableToContents.docx");

Příklad toho, jak jsou tyto možnosti aplikovány na výše uvedenou tabulku, je vidět na obrázku níže.

resize-column-autofit-settings-aspose-words-java

Zakázat AutoFit v tabulce a používat pevné šířky sloupce

Pokud má tabulka autofit vypnutý a místo toho se použijí pevné šířky sloupců, provedou se následující kroky:

  1. Table.AllowAutoFit vlastnost je vypnuta, takže sloupce nerostou nebo se zmenšují na jejich obsah
  2. Upřednostňovaná šířka celé tabulky je odstraněna z Table.PreferredWidth, CellFormat.PreferredWidth je odstraněn ze všech buněk tabulky
  3. Konečným výsledkem je tabulka, jejíž šířky sloupců jsou určeny CellFormat.Width vlastnost a jejíž sloupce nejsou automaticky měněny při vstupu uživatele do textu nebo při změně velikosti stránky

Následující příklad kódu ukazuje, jak zakázat autofit a povolit pevnou šířku pro zadanou tabulku:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// Disable autofitting on this table.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);
doc.save(getArtifactsDir() + "WorkingWithTables.AutoFitTableToFixedColumnWidths.docx");

Příklad toho, jak jsou tyto možnosti aplikovány na výše uvedenou tabulku, je vidět na obrázku níže.

disable-autofit-settings-to-a-table-aspose-words-java

Řád precedence při výpočtu šířky buňky

Aspose.Words umožňuje uživatelům definovat šířku tabulky nebo buňky prostřednictvím více objektů, včetně CellFormat Jeho Width vlastnost je většinou ponechána z předchozích verzí, nicméně je stále užitečná pro zjednodušení nastavení šířky buňky.

Je důležité vědět, že CellFormat.Width vlastnost funguje jinak v závislosti na tom, které z ostatních vlastností šířky již existují v tabulce.

Aspose.Words používá pro výpočet šířky buňky následující pořadí:

Pořadí Majetek Popis zboží
1 AllowAutoFit je určena Pokud AutoFit je povoleno:
- tabulka může růst za preferovanou šířku tak, aby vyhovovala obsahu, který obvykle nesnižuje pod preferovanou šířku
- jakékoli změny CellFormat.Width hodnota je ignorována a buňka bude místo toho odpovídat jejímu obsahu
2 PreferredWidthType s hodnotou Points nebo Percent CellFormat.Width ignoruje
3 PreferredWidthType s hodnotou Auto Hodnota CellFormat.Width se kopíruje a stává se preferovanou šířkou buňky (v bodech)

Povolit rozprostření mezi buňkami

Můžete získat nebo nastavit jakýkoli další prostor mezi stolními buňkami, podobně jako možnost “Сell distance” v Microsoft Word. To lze provést pomocí AllowCellSpacing majetek.

Příklad, jak jsou tyto možnosti aplikovány na skutečnou tabulku v dokumentu, je vidět na obrázku níže.

formatting-spacing-between-cells-aspose-words-java

Následující příklad kódu ukazuje, jak nastavit vzdálenost mezi buňkami:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
table.setAllowCellSpacing(true);
table.setCellSpacing(2.0);
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.AllowCellSpacing.docx");

Použít hranice a stínění

Hranice a stínování lze aplikovat buď na celou tabulku pomocí Table.SetBorder, Table.SetBorders a Table.SetShading, nebo pouze pro konkrétní buňky používající CellFormat.Borders a CellFormat.Shading. Kromě toho lze nastavit okraj řádku pomocí RowFormat.Borders, Takto však stínování nelze uplatnit.

Obrázky níže ukazují hraniční a stínové nastavení Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

apply-borders-shading-aspose-words-java-1

apply-borders-shading-aspose-words-java-2

Následující příklad kódu ukazuje, jak formátovat tabulku a buňku s různými hranicemi a stíny:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Table table = builder.startTable();
builder.insertCell();
// Set the borders for the entire table.
table.setBorders(LineStyle.SINGLE, 2.0, Color.BLACK);
// Set the cell shading for this cell.
builder.getCellFormat().getShading().setBackgroundPatternColor(Color.RED);
builder.writeln("Cell #1");
builder.insertCell();
// Specify a different cell shading for the second cell.
builder.getCellFormat().getShading().setBackgroundPatternColor(Color.GREEN);
builder.writeln("Cell #2");
builder.endRow();
// Clear the cell formatting from previous operations.
builder.getCellFormat().clearFormatting();
builder.insertCell();
// Create larger borders for the first cell of this row. This will be different
// compared to the borders set for the table.
builder.getCellFormat().getBorders().getLeft().setLineWidth(4.0);
builder.getCellFormat().getBorders().getRight().setLineWidth(4.0);
builder.getCellFormat().getBorders().getTop().setLineWidth(4.0);
builder.getCellFormat().getBorders().getBottom().setLineWidth(4.0);
builder.writeln("Cell #3");
builder.insertCell();
builder.getCellFormat().clearFormatting();
builder.writeln("Cell #4");
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.FormatTableAndCellWithDifferentBorders.docx");