Прилагане на форматиране

Всеки елемент от таблицата може да бъде приложен с различен формат. Например форматирането на таблицата ще се прилага към цялата таблица, форматиране на реда само за определени редове, форматиране на клетки само за определени клетки.

Aspose.Words осигурява богат API за извличане и прилагане форматиране на таблица. Можете да използвате Table, RowFormat, както и CellFormat Възел за форматиране.

В тази статия ще говорим за това как да се прилага форматиране на различни възли на таблицата и какви настройки за форматиране на таблицата Aspose.Words Подкрепления.

Прилагане на форматиране към различни възли

В този раздел ще разгледаме прилагането на форматиране на различни възли на таблицата.

Форматиране на нивото на таблица

За да приложите форматиране към таблица, можете да използвате наличните свойства на съответната Table Възел с използване на Table, PreferredWidth, както и TableCollection Класове.

Снимките по-долу показват представяне на Table форматиране на функции в Microsoft Word и съответните им свойства в Aspose.Words.

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

formatting-table-options-aspose-words-python

Следният пример за код показва как да се приложи контурна граница към таблица:

# 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")

Следният пример за код показва как да се изгради таблица с всички възможни граници (мрежа):

# 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")

Форматиране на нивото на реда

Редово ниво форматирането може да се контролира с помощта на Row, RowFormat, както и RowCollection Класове.

Снимките по-долу показват представяне на Row форматиране на функции в Microsoft Word и съответните им свойства в Aspose.Words.

formatting-row-level-aspose-words-python

Следният пример с код показва как да се промени форматирането на реда в таблицата:

# 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

Форматиране на ниво на клетка

Форматирането на ниво клетки се контролира от Cell, CellFormat, както и CellCollection Класове.

Снимките по-долу показват представяне на Cell форматиране на функции в Microsoft Word и съответните им свойства в Aspose.Words.

formatting-cell-level-aspose-words-python

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

Следният пример за код показва как да се промени форматирането на таблица:

# 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

Следният пример за код показва как да се определи количеството пространство (в точки), за да се добави към лявото/горе/дясно/долу на съдържанието на клетката:

# 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

Посочва се височината на реда

Най-простият начин да зададете височината на реда е да използвате DocumentBuilder. Използване на подходящия RowFormat свойства, можете да зададете настройка по подразбиране височина или да приложите различна височина за всеки ред в таблицата.

В Aspose.Words, височината на реда в таблицата се контролира от:

  • височината на греблото Height
  • правилото за височината на имота за даден ред HeightRule

В същото време, различна височина може да бъде зададена за всеки ред … това ви позволява да контролирате широко настройките на таблицата.

Следният пример за код показва как да се създаде таблица, която съдържа една клетка и да се приложи форматиране на ред:

# 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")

Посочване на таблицата и широчината на клетките

Таблица в Microsoft Word документът предоставя няколко различни начина за преоразмеряване на таблицата и отделните клетки. Тези свойства позволяват значителен контрол върху външния вид и поведението на масата, така че Aspose.Words поддържа поведението на масите, като Microsoft Word.

Важно е да се знае, че елементите на таблицата представят няколко различни свойства, които могат да повлияят на това как се изчислява широчината на общата таблица, както и отделните клетки:

  • Предпочитана ширина на масата
  • Предпочитана ширина на отделните клетки
  • Позволява автоматизация на масата

Тази статия описва как различните свойства за изчисляване ширина на таблицата работят и как да получите пълен контрол над таблицата ширина изчисление. Това е особено полезно да се знае в такива случаи, когато оформлението на таблицата не изглежда както се очаква.

Как да използвате Предпочитаната ширина

Желаната ширина на таблица или отделни клетки се определя чрез предпочитаното свойство за широчина, което е размерът, който елементът се стреми да побере. Това означава, че предпочитаната широчина може да бъде посочена за цялата таблица или за отделните клетки. В някои ситуации може да не е възможно да се побере точно тази ширина, но действителната ширина ще бъде близо до тази стойност в повечето случаи.

Подходящият предпочитан тип и стойност на ширината се определят чрез методите на PreferredWidth клас:

  • на Auto метод за определяне на авто или горно предпочитана ширина
  • на FromPercent метод за определяне на ширината на процента
  • на FromPoints метод за определяне на широчината в точки

Снимките по-долу показват представяне на * предпочитаните характеристики на ширината* в Microsoft Word и съответните им свойства в Aspose.Words.

formatting-table-properties-aspose-words-python

Пример за това как тези опции се прилагат към реална таблица в документ може да се види на снимката по-долу.

tables-applying-options-python

Посочете предпочитаната таблица или широчина на клетката

В Aspose.Words, Таблицата и широчината на клетките са определени с помощта на Table.PreferredWidth собственост и CellFormat.PreferredWidth имот, с опции, налични в PreferredWidthType Изброяване:

  • Auto, която е еквивалентна на непредпочитана широчина
  • Percent, който съответства на елемента спрямо наличното пространство в прозореца или размера на контейнера и преизчислява стойността, когато наличната ширина се променя
  • Points, което съответства на елемент от посочената широчина в точки

Използване на Table.PreferredWidth Имотът ще коригира предпочитаната си ширина спрямо своя контейнер: страница, текстова колона или външна таблица, ако е гнездена маса.

Следният пример за код показва как да се постави таблицата автоматично да се поберат до 50% от ширината на страницата:

# 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")

Използване на CellFormat.PreferredWidth Имотът върху дадена клетка ще коригира предпочитаната ширина.

Следният пример за код показва как да зададете различните предпочитани настройки на ширината:

# 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")

Търсене Предпочитан тип ширина и стойност

Можеш да използваш Type както и Value свойства, за да намерите предпочитаната ширина детайли на желаната таблица или клетка.

Следният пример с код показва как да се извлече предпочитаният тип широчина на таблица:

# 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

Как да зададете автоматично

На AllowAutoFit Имотът позволява клетките в таблица да растат и свиват според избрания критерий. Например, можете да използвате Автоматично свързване към прозорец опция да се поберат таблицата на ширината на страницата, и Автоматично свързване към съдържанието възможност да се позволи на всяка клетка да расте или да се свива според съдържанието си.

По подразбиране, Aspose.Words вмъква нова таблица, като използва Автоматично свързване към прозорец. Таблицата ще бъде обозначена според широчината на страницата. За да преоразмерите масата, можете да се обадите на AutoFit метод. Този метод приема AutoFitBehavior изброяване, което посочва какъв тип автофит се прилага към таблицата.

Важно е да знаете, че автофитът метод всъщност е пряк път, който прилага различни свойства към таблицата в същото време. Това са свойства, които всъщност дават на таблицата наблюдаваното поведение. Ще обсъдим тези имоти за всяка опция за автоматизация.

Следният пример за код показва как да се постави таблица за свиване или отглеждане на всяка клетка в зависимост от съдържанието ѝ:

# 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

Автофит таблица до прозорец

Когато автоматичното монтиране към прозорец се прилага към таблица, зад кулисите се извършват следните операции:

  1. На Table.AllowAutoFit Имотът е активиран за автоматично преоразмеряване на колоните, за да се побере съдържанието, като се използва Table.PreferredWidth стойност от 100%
  2. CellFormat.PreferredWidth се отстранява от всички клетки на таблицата
  3. Ширините на колоните са преброени за текущото съдържание на таблицата
  4. Ширината на колоните в таблицата се променя автоматично, когато потребителят редактира текста

Следният пример за код показва как да автоматизирате таблица на ширината на страницата:

# 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")

Автофит таблица към съдържанието

Когато масата е автоматизирана, следните стъпки се извършват зад кулисите:

  1. На Table.AllowAutoFit свойството е активирано автоматично за преоразмеряване на всяка клетка според нейното съдържание

  2. Предпочитаната широчина на таблицата се премахва от Table.PreferredWidth, CellFormat.PreferredWidth се отстранява за всяка таблица

  3. Ширините на колоните са преброени за текущото съдържание на таблицата

Следният пример за код показва как да се пригоди към съдържанието на таблицата:

# 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")

Изключване на автофит в таблица и използване на фиксирани колони

Ако вместо това таблица е с деактивиран автофит и се използват фиксирани ширини на колоните, се извършват следните стъпки:

  1. Table.AllowAutoFit Имотът е деактивиран, така че колоните не растат или не се свиват до тяхното съдържание
  2. Предпочитаната широчина на цялата таблица се отстранява от Table.PreferredWidth, CellFormat.PreferredWidth се отстранява от всички клетки на таблицата
  3. Крайният резултат е таблица, чиято ширина на колоната се определя от CellFormat.Width собственост, и чиито колони не са автоматично преоразмерени, когато потребителят влиза текст или когато страницата е преоразмерена

Следният пример за код показва как да се деактивира автофитът и да се даде възможност за фиксирана ширина за посочената таблица:

# 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")

Редът на точност при изчисляване на широчината на клетките

Aspose.Words позволява на потребителите да определят ширината на таблица или клетка чрез множество обекти, включително CellFormat го Width Имотът е предимно оставен от предишни версии, но все пак е полезен за опростяване на настройката на широчината на клетката.

Важно е да се знае, че CellFormat.Width Имотът работи различно в зависимост от това кои от другите свойства на ширината вече съществуват в таблицата.

Aspose.Words използва следния ред за изчисляване на широчината на клетките:

Ред Имоти Описание
1 AllowAutoFit се определя Ако AutoFit е включена:
- таблицата може да се разрастне покрай предпочитаната ширина, за да се настанява съдържанието, обикновено не се свива под предпочитаната ширина
- промяна в CellFormat.Width стойност се игнорира и клетката ще се побере в съдържанието си вместо
2 PreferredWidthType със стойност Points или Percent CellFormat.Width е игнориран
3 PreferredWidthType със стойност Auto Стойността от CellFormat.Width е копиран и става предпочитаната ширина на клетката (в точки)

Разрешаване на разделяне между клетките

Можете да получите или да зададете допълнително пространство между клетките на таблицата, подобно на опцията “Продавай разстоянието” в Microsoft Word. Това може да се направи с помощта на AllowCellSpacing собственост.

Пример за това как тези опции се прилагат към реална таблица в документ може да се види на снимката по-долу.

formatting-spacing-between-cells-aspose-words-python

Следният пример за код показва как да се определи разстоянието между клетките:

# 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")

Прилагане на граници и оформяне

Граници и сенки могат да се прилагат към цялата таблица, като се използва Table.SetBorder, Table.SetBorders както и Table.SetShading, или само за специфични клетки, използващи CellFormat.Borders както и CellFormat.Shading. Освен това могат да се настроят греди RowFormat.Borders, Но по този начин не може да се приложи сянка.

Снимките по-долу показват границите и настройките на сянката в Microsoft Word и съответните им свойства в Aspose.Words.

formatting-border-line-aspose-words-python

formatting-cell-color-aspose-words-python

Следният пример за код показва как да се форматира таблица и клетка с различни граници и сенки:

# 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")