Застосувати стиль таблиці

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

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

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

Створіть стиль таблиці

Користувач може створити новий стиль і додати його до колекції стилів. Метод Add використовується для створення нового стилю таблиці.

Наступний приклад коду показує, як створити новий стиль таблиці користувача:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
SharedPtr<Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Name");
builder->InsertCell();
builder->Write(u"Value");
builder->EndRow();
builder->InsertCell();
builder->InsertCell();
builder->EndTable();
auto tableStyle = System::ExplicitCast<TableStyle>(doc->get_Styles()->Add(StyleType::Table, u"MyTableStyle1"));
tableStyle->get_Borders()->set_LineStyle(LineStyle::Double);
tableStyle->get_Borders()->set_LineWidth(1);
tableStyle->set_LeftPadding(18);
tableStyle->set_RightPadding(18);
tableStyle->set_TopPadding(12);
tableStyle->set_BottomPadding(12);
table->set_Style(tableStyle);
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.CreateTableStyle.docx");

Скопіюйте існуючий стиль таблиці

Якщо потрібно, ви можете скопіювати стиль таблиці, який уже існує в певному документі, у свою колекцію стилів, використовуючи метод AddCopy.

Важливо знати, що при такому копіюванні також копіюються пов’язані стилі.

Наступний приклад коду показує, як імпортувати стиль з одного документа в інший:

EXAMPLE

Застосуйте існуючий стиль таблиці

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-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
SharedPtr<Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Name");
builder->InsertCell();
builder->Write(u"Value");
builder->EndRow();
builder->InsertCell();
builder->InsertCell();
builder->EndTable();
auto tableStyle = System::ExplicitCast<TableStyle>(doc->get_Styles()->Add(StyleType::Table, u"MyTableStyle1"));
tableStyle->get_ConditionalStyles()->get_FirstRow()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_GreenYellow());
tableStyle->get_ConditionalStyles()->get_FirstRow()->get_Shading()->set_Texture(TextureIndex::TextureNone);
table->set_Style(tableStyle);
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.DefineConditionalFormatting.docx");

Ви також можете вибрати, до яких частин таблиці застосовувати стилі, наприклад, перший стовпець, останній стовпець, рядки з обмеженнями. Вони перераховані в перерахуванні TableStyleOptions і застосовуються за допомогою властивості StyleOptions. Перерахування TableStyleOptions дозволяє комбінувати ці функції побітово.

Наступний приклад коду показує, як створити нову таблицю із застосованим стилем таблиці:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
SharedPtr<Table> table = builder->StartTable();
// We must insert at least one row first before setting any table formatting.
builder->InsertCell();
// Set the table style used based on the unique style identifier.
table->set_StyleIdentifier(StyleIdentifier::MediumShading1Accent1);
// Apply which features should be formatted by the style.
table->set_StyleOptions(TableStyleOptions::FirstColumn | TableStyleOptions::RowBands | TableStyleOptions::FirstRow);
table->AutoFit(AutoFitBehavior::AutoFitToContents);
builder->Writeln(u"Item");
builder->get_CellFormat()->set_RightPadding(40);
builder->InsertCell();
builder->Writeln(u"Quantity (kg)");
builder->EndRow();
builder->InsertCell();
builder->Writeln(u"Apples");
builder->InsertCell();
builder->Writeln(u"20");
builder->EndRow();
builder->InsertCell();
builder->Writeln(u"Bananas");
builder->InsertCell();
builder->Writeln(u"40");
builder->EndRow();
builder->InsertCell();
builder->Writeln(u"Carrots");
builder->InsertCell();
builder->Writeln(u"50");
builder->EndRow();
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.BuildTableWithStyle.docx");

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

formatting-table-style-aspose-words-cpp

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

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

Наступний приклад коду показує, як перенести форматування зі стилів у рядки таблиці та комірки як пряме форматування:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
// Get the first cell of the first table in the document.
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
SharedPtr<Cell> firstCell = table->get_FirstRow()->get_FirstCell();
// First print the color of the cell shading.
// This should be empty as the current shading is stored in the table style.
System::Drawing::Color cellShadingBefore = firstCell->get_CellFormat()->get_Shading()->get_BackgroundPatternColor();
std::cout << (String(u"Cell shading before style expansion: ") + cellShadingBefore) << std::endl;
doc->ExpandTableStylesToDirectFormatting();
// Now print the cell shading after expanding table styles.
// A blue background pattern color should have been applied from the table style.
System::Drawing::Color cellShadingAfter = firstCell->get_CellFormat()->get_Shading()->get_BackgroundPatternColor();
std::cout << (String(u"Cell shading after style expansion: ") + cellShadingAfter) << std::endl;