Použít Styl Tabulky

Styl tabulky definuje sadu formátování, kterou lze snadno použít na tabulku. Formátování, jako jsou ohraničení, stínování, zarovnání a písmo, lze nastavit ve stylu tabulky a použít na mnoho tabulek pro konzistentní vzhled.

Aspose.Words podporuje použití stylu tabulky na tabulku a také čtení vlastností libovolného stylu tabulky. Styly tabulek jsou zachovány během načítání a ukládání následujícími způsoby:

  • Styly tabulek ve formátech DOCX a WordML jsou zachovány při načítání a ukládání do těchto formátů
  • Styly tabulek jsou zachovány při načítání a ukládání ve formátu DOC (ale ne do jiného formátu)
  • Při exportu do jiných formátů, Vykreslování nebo tisku jsou styly tabulky rozšířeny o přímé formátování v tabulce, takže je zachováno veškeré formátování

Vytvoření stylu tabulky

Uživatel může vytvořit nový styl a přidat jej do kolekce stylů. Metoda Add se používá k vytvoření nového stylu tabulky.

Následující příklad kódu ukazuje, jak vytvořit nový styl tabulky definovaný uživatelem:

// 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");

Zkopírujte existující styl tabulky

V případě potřeby můžete zkopírovat styl tabulky, který již v určitém dokumentu existuje, do své kolekce stylů pomocí metody AddCopy.

Je důležité vědět, že při tomto kopírování se také kopírují propojené styly.

Následující příklad kódu ukazuje, jak importovat styl z jednoho dokumentu do jiného dokumentu:

EXAMPLE

Použití existujícího stylu tabulky

Aspose.Words poskytuje TableStyle zděděnou z třídy Style. TableStyle umožňuje uživateli použít různé možnosti stylu, jako je stínování, odsazení, odsazení, CellSpacing a Font atd.

Kromě toho Aspose.Words poskytuje třídu StyleCollection a několik vlastností třídy Table pro určení stylu tabulky, se kterým budeme pracovat: Style, StyleIdentifier, StyleName, a StyleOptions.

Aspose.Words také poskytuje třídu ConditionalStyle, která představuje speciální formátování aplikované na určitou oblast tabulky s přiřazeným stylem tabulky, a ConditionalStyleCollection, která představuje kolekci objektů ConditionalStyle. Tato kolekce obsahuje trvalou sadu položek představujících jednu položku pro každou hodnotu typu výčtu ConditionalStyleType. Výčet ConditionalStyleType definuje všechny možné oblasti tabulky, na které lze podmíněné formátování definovat ve stylu tabulky.

V tomto případě lze podmíněné formátování definovat pro všechny možné oblasti tabulky definované pod typem výčtu ConditionalStyleType.

Následující příklad kódu ukazuje, jak definovat podmíněné formátování pro řádek záhlaví tabulky:

// 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");

Můžete si také vybrat, na které části tabulky použijete styly, například první sloupec, poslední sloupec, pruhované řádky. Jsou uvedeny ve výčtu TableStyleOptions a používají se prostřednictvím vlastnosti StyleOptions. Výčet TableStyleOptions umožňuje bitovou kombinaci těchto funkcí.

Následující příklad kódu ukazuje, jak vytvořit novou tabulku s použitým stylem tabulky:

// 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");

Obrázky níže ukazují reprezentaci Table Styles v Microsoft Word a jejich odpovídající vlastnosti v Aspose.Words.

formatting-table-style-aspose-words-cpp

Vezměte formátování ze stylu tabulky a použijte jej jako přímé formátování

Aspose.Words také poskytuje metodu ExpandTableStylesToDirectFormatting pro formátování nalezené ve stylu tabulky a rozšiřuje jej na řádky a buňky tabulky jako přímé formátování. Zkuste kombinovat formátování se stylem tabulky a stylem buňky.

Následující příklad kódu ukazuje, jak rozbalit formátování ze stylů na řádky a buňky tabulky jako přímé formátování:

// 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;