Použít formátování

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í řádků 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é uzel tabulky a jaké nastavení formátování tabulky Aspose.Words Podpora.

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

V této části 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 ukazují zastoupení Table funkce formátování v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formattin-features-table-level-aspose-words-python

formatting-table-options-aspose-words-python

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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Align the table to the center of the page.
table.alignment = aw.tables.TableAlignment.CENTER
# Clear any existing borders from the table.
table.clear_borders()
# Set a green border around the table but not inside.
table.set_border(aw.BorderType.LEFT, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
table.set_border(aw.BorderType.RIGHT, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
table.set_border(aw.BorderType.TOP, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
table.set_border(aw.BorderType.BOTTOM, aw.LineStyle.SINGLE, 1.5, drawing.Color.green, True)
# Fill the cells with a light green solid color.
table.set_shading(aw.TextureIndex.TEXTURE_SOLID, drawing.Color.light_green, drawing.Color.empty())
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.apply_outline_border.docx")

Následující příklad kódu ukazuje, jak vytvořit 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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Clear any existing borders from the table.
table.clear_borders()
# Set a green border around and inside the table.
table.set_borders(aw.LineStyle.SINGLE, 1.5, drawing.Color.green)
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.build_table_with_borders.docx")

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

Úroveň řádku formátování lze ovládat pomocí Row, RowFormat, a RowCollection třídy.

Následující obrázky ukazují zastoupení Row funkce formátování v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formatting-row-level-aspose-words-python

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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Retrieve the first row in the table.
first_row = table.first_row
first_row.row_format.borders.line_style = aw.LineStyle.NONE
first_row.row_format.height_rule = aw.HeightRule.AUTO
first_row.row_format.allow_break_across_pages = 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 ukazují zastoupení Cell funkce formátování v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formatting-cell-level-aspose-words-python

auto-formatting-cell-level-aspose-words-python

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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
first_cell = table.first_row.first_cell
first_cell.cell_format.width = 30
first_cell.cell_format.orientation = aw.TextOrientation.DOWNWARD
first_cell.cell_format.shading.foreground_pattern_color = drawing.Color.light_green

Následující příklad kódu ukazuje, jak nastavit množství prostoru (v bodech), které má být přidáno do levé/nahoře/vpravo/v dolní části obsahu buňky:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.start_table()
builder.insert_cell()
# Sets the amount of space (in points) to add to the left/top/right/bottom of the cell's contents.
builder.cell_format.set_paddings(30, 50, 30, 50)
builder.writeln("I'm a wonderful formatted cell.")
builder.end_row()
builder.end_table()
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.cell_padding.docx")
view raw cell-padding.py hosted with ❤ by GitHub

Zadejte výšku řá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ýšky” Height
  • vlastnost pravidel výšky pro daný řádek HeightRule

Zároveň lze pro každý řádek nastavit jinou výšku. To 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-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
table = builder.start_table()
builder.insert_cell()
row_format = builder.row_format
row_format.height = 100
row_format.height_rule = aw.HeightRule.EXACTLY
# These formatting properties are set on the table and are applied to all rows in the table.
table.left_padding = 30
table.right_padding = 30
table.top_padding = 30
table.bottom_padding = 30
builder.writeln("I'm a wonderful formatted row.")
builder.end_row()
builder.end_table()
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.apply_row_formatting.docx")

Upřesnění tabulky a šířky buňky

Tabulka 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, jakož i jednotlivé buňky, se vypočítají takto:

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

Tento článek popisuje, 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 se uspořádání tabulky nezdá být podle očekávání.

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 metoda 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í přednostně nastavení šířky v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formatting-table-properties-aspose-words-python

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

tables-applying-options-python

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 rovnocenná žá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 uvedené šíř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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Autofit the first table to the page width.
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_WINDOW)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_window.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-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# Insert a table row made up of three cells which have different preferred widths.
builder.start_table()
# Insert an absolute sized cell.
builder.insert_cell()
builder.cell_format.preferred_width = aw.tables.PreferredWidth.from_points(40)
builder.cell_format.shading.background_pattern_color = drawing.Color.light_yellow
builder.writeln("Cell at 40 points width")
# Insert a relative (percent) sized cell.
builder.insert_cell()
builder.cell_format.preferred_width = aw.tables.PreferredWidth.from_percent(20)
builder.cell_format.shading.background_pattern_color = drawing.Color.light_blue
builder.writeln("Cell at 20% width")
# Insert a auto sized cell.
builder.insert_cell()
builder.cell_format.preferred_width = aw.tables.PreferredWidth.AUTO
builder.cell_format.shading.background_pattern_color = drawing.Color.light_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(ARTIFACTS_DIR + "WorkingWithTables.preferred_width_settings.docx")

Nalezení preferovaného typu šířky a hodnoty

Můžete použít Type a Value vlastnosti pro nalezení preferovaných detailů šířky 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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.allow_auto_fit = True
first_cell = table.first_row.first_cell
type_ = first_cell.cell_format.preferred_width.type
value = first_cell.cell_format.preferred_width.value

Jak nastavit Autofit

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 umožnit každé buňce 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 autofit se použije na tabulku.

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

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-Python-via-.NET.git.
table.allow_auto_fit = True

Tabulka AutoFit do okna

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

  1. Table.AllowAutoFit vlastnost je povolena automaticky měnit velikost sloupců tak, aby vyhovovala dostupnému obsahu pomocí Table.PreferredWidth hodnota 100%
  2. CellFormat.PreferredWidth se odstraní ze všech buněk tabulky
  3. Šířka sloupců je přepočítána 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 se přiřadí tabulka k šířce stránky:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Autofit the first table to the page width.
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_WINDOW)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_window.docx")

Tabulka AutoFit k obsahu

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

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

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

  3. Šíře sloupců se přepočítávají pro aktuální obsah tabulky. Konečným výsledkem je tabulka, kde jsou šířky sloupců a šířka celé tabulky automaticky změněny tak, aby co nejlépe vyhovovaly obsahu, jak uživatel upraví text

Následující příklad kódu ukazuje, jak automatizovat tabulku na její obsah:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_CONTENTS)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_contents.docx")

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 Table.PreferredWidth, CellFormat.PreferredWidth se odstraní 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 změněny, když uživatel vstoupí do textu nebo když je stránka změněna velikost

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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Disable autofitting on this table.
table.auto_fit(aw.tables.AutoFitBehavior.FIXED_COLUMN_WIDTHS)
doc.save(ARTIFACTS_DIR + "WorkingWithTables.auto_fit_table_to_fixed_column_widths.docx")

Řád přednosti 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ž existuje v tabulce.

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

Usnesení 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ý “rozhraní Сell” 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-python

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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.allow_cell_spacing = True
table.cell_spacing = 2
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.allow_cell_spacing.docx")

Uplatňování hranic 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 specifické buňky používající CellFormat.Borders a CellFormat.Shading. Kromě toho lze nastavit hranice řádku pomocí RowFormat.Borders, Nicméně stínování nelze použít tímto způsobem.

Následující obrázky ukazují hraniční a stínové nastavení Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formatting-border-line-aspose-words-python

formatting-cell-color-aspose-words-python

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-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
table = builder.start_table()
builder.insert_cell()
# Set the borders for the entire table.
table.set_borders(aw.LineStyle.SINGLE, 2.0, drawing.Color.black)
# Set the cell shading for this cell.
builder.cell_format.shading.background_pattern_color = drawing.Color.red
builder.writeln("Cell #1")
builder.insert_cell()
# Specify a different cell shading for the second cell.
builder.cell_format.shading.background_pattern_color = drawing.Color.green
builder.writeln("Cell #2")
builder.end_row()
# Clear the cell formatting from previous operations.
builder.cell_format.clear_formatting()
builder.insert_cell()
# Create larger borders for the first cell of this row. This will be different
# compared to the borders set for the table.
builder.cell_format.borders.left.line_width = 4.0
builder.cell_format.borders.right.line_width = 4.0
builder.cell_format.borders.top.line_width = 4.0
builder.cell_format.borders.bottom.line_width = 4.0
builder.writeln("Cell #3")
builder.insert_cell()
builder.cell_format.clear_formatting()
builder.writeln("Cell #4")
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.format_table_and_cell_with_different_borders.docx")