Применить стиль таблицы

Стиль таблицы определяет набор форматирования, который может быть легко применен к таблице. Форматирование, такое как границы, затенение, выравнивание и шрифт, может быть задано в стиле таблицы и применено ко многим таблицам для обеспечения единообразного внешнего вида.

Aspose.Words поддерживает применение табличного стиля к таблице, а также чтение свойств любого табличного стиля. Стили таблиц сохраняются при загрузке и сохранении следующими способами:

  • Стили таблиц в форматах DOCX и WordML сохраняются при загрузке и сохранении в этих форматах
  • Стили таблиц сохраняются при загрузке и сохранении в формате DOC (но не в каком-либо другом формате)
  • При экспорте в другие форматы, рендеринге или печати стили таблиц расширяются для прямого форматирования в таблице, поэтому все форматирование сохраняется

Создайте стиль таблицы

Пользователь может создать новый стиль и добавить его в коллекцию стилей. Метод Add используется для создания нового стиля таблицы.

В следующем примере кода показано, как создать новый пользовательский стиль таблицы:

# 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()
builder.write("Name")
builder.insert_cell()
builder.write("Value")
builder.end_row()
builder.insert_cell()
builder.insert_cell()
builder.end_table()
table_style = doc.styles.add(aw.StyleType.TABLE, "MyTableStyle1").as_table_style()
table_style.borders.line_style = aw.LineStyle.DOUBLE
table_style.borders.line_width = 1
table_style.left_padding = 18
table_style.right_padding = 18
table_style.top_padding = 12
table_style.bottom_padding = 12
table.style = table_style
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.create_table_style.docx")

Скопируйте существующий стиль таблицы

При необходимости вы можете скопировать стиль таблицы, который уже существует в определенном документе, в свою коллекцию стилей, используя метод AddCopy.

Важно знать, что при таком копировании также копируются связанные стили.

В следующем примере кода показано, как импортировать стиль из одного документа в другой:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
src_doc = aw.Document()
# Create a custom style for the source document.
src_style = src_doc.styles.add(aw.StyleType.PARAGRAPH, "MyStyle")
src_style.font.color = drawing.Color.red
# Import the source document's custom style into the destination document.
dst_doc = aw.Document()
new_style = dst_doc.styles.add_copy(src_style)
# The imported style has an appearance identical to its source style.
self.assertEqual("MyStyle", new_style.name)
self.assertEqual(drawing.Color.red.to_argb(), new_style.font.color.to_argb())

Примените существующий стиль таблицы

Aspose.Words предоставляет TableStyle, унаследованный от класса Style. TableStyle позволяет пользователю применять различные параметры стиля, такие как затенение, заполнение, отступы, CellSpacing и Font и т.д.

Кроме того, Aspose.Words предоставляет класс StyleCollection и несколько свойств класса Table, чтобы указать, с каким стилем таблицы мы будем работать: Style, StyleIdentifier, StyleName, и StyleOptions.

Aspose.Words также предоставляет класс ConditionalStyle, который представляет специальное форматирование, применяемое к некоторой области таблицы с назначенным стилем таблицы, и ConditionalStyleCollection, который представляет коллекцию из ConditionalStyle объектов. Эта коллекция содержит постоянный набор элементов, представляющих по одному элементу для каждого значения типа перечисления ConditionalStyleType. Перечисление ConditionalStyleType определяет все возможные области таблицы, для которых может быть определено условное форматирование в табличном стиле.

В этом случае условное форматирование может быть определено для всей возможной области таблицы, определенной в соответствии с типом перечисления ConditionalStyleType.

В следующем примере кода показано, как определить условное форматирование для строки заголовка таблицы:

# 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()
builder.write("Name")
builder.insert_cell()
builder.write("Value")
builder.end_row()
builder.insert_cell()
builder.insert_cell()
builder.end_table()
table_style = doc.styles.add(aw.StyleType.TABLE, "MyTableStyle1").as_table_style()
table_style.conditional_styles.first_row.shading.background_pattern_color = drawing.Color.green_yellow
table_style.conditional_styles.first_row.shading.texture = aw.TextureIndex.TEXTURE_NONE
table.style = table_style
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.define_conditional_formatting.docx")

Вы также можете выбрать, к каким частям таблицы применять стили, например, к первому столбцу, последнему столбцу, строкам с ограничениями. Они перечислены в перечислении TableStyleOptions и применяются с помощью свойства StyleOptions. Перечисление TableStyleOptions позволяет комбинировать эти функции побитово.

В следующем примере кода показано, как создать новую таблицу с примененным стилем таблицы:

# 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()
# We must insert at least one row first before setting any table formatting.
builder.insert_cell()
# Set the table style used based on the unique style identifier.
table.style_identifier = aw.StyleIdentifier.MEDIUM_SHADING1_ACCENT1
# Apply which features should be formatted by the style.
table.style_options = aw.tables.TableStyleOptions.FIRST_COLUMN | aw.tables.TableStyleOptions.ROW_BANDS | aw.tables.TableStyleOptions.FIRST_ROW
table.auto_fit(aw.tables.AutoFitBehavior.AUTO_FIT_TO_CONTENTS)
builder.writeln("Item")
builder.cell_format.right_padding = 40
builder.insert_cell()
builder.writeln("Quantity (kg)")
builder.end_row()
builder.insert_cell()
builder.writeln("Apples")
builder.insert_cell()
builder.writeln("20")
builder.end_row()
builder.insert_cell()
builder.writeln("Bananas")
builder.insert_cell()
builder.writeln("40")
builder.end_row()
builder.insert_cell()
builder.writeln("Carrots")
builder.insert_cell()
builder.writeln("50")
builder.end_row()
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.build_table_with_style.docx")

На рисунках ниже показано представление Table Styles в Microsoft Word и их соответствующих свойств в Aspose.Words.

formatting-table-style-aspose-words-python

Работа со стилями таблиц

Стиль таблицы определяет набор форматирования, который может быть легко применен к таблице. Форматирование, такое как границы, затенение, выравнивание и шрифт, может быть задано в стиле таблицы и применено ко многим таблицам для обеспечения единообразного внешнего вида.

Aspose.Words поддерживает применение табличного стиля к таблице, а также чтение свойств любого табличного стиля. Стили таблиц сохраняются при загрузке и сохранении следующими способами:

  • Стили таблиц в форматах DOCX и WordML сохраняются при загрузке и сохранении в этих форматах.
  • Стили таблиц сохраняются при загрузке и сохранении в формате DOC (но не в каком-либо другом формате).
  • При экспорте в другие форматы, визуализации или печати стили таблиц расширяются для прямого форматирования таблицы, поэтому все форматирование сохраняется.

В настоящее время вы не можете создавать новые стили таблиц. Вы можете применять к таблице только встроенные стили таблиц или пользовательские стили таблиц, которые уже существуют в документе.

Возьмите форматирование из стиля таблицы и примените его как прямое форматирование

Aspose.Words также предоставляет метод ExpandTableStylesToDirectFormatting, позволяющий использовать форматирование, найденное в табличном стиле, и распространить его на строки и ячейки таблицы в качестве прямого форматирования. Попробуйте комбинировать форматирование со стилем таблицы и стилем ячеек.

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

# 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")
# Get the first cell of the first table in the document.
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
first_cell = table.first_row.first_cell
# First print the color of the cell shading.
# This should be empty as the current shading is stored in the table style.
cell_shading_before = first_cell.cell_format.shading.background_pattern_color
print("Cell shading before style expansion:", cell_shading_before)
doc.expand_table_styles_to_direct_formatting()
# Now print the cell shading after expanding table styles.
# A blue background pattern color should have been applied from the table style.
cell_shading_after = first_cell.cell_format.shading.background_pattern_color
print("Cell shading after style expansion:", cell_shading_after)