Aplicar Estilo De Tabela
Um estilo de tabela define um conjunto de formatação que pode ser facilmente aplicado a uma tabela. A formatação, como bordas, sombreamento, alinhamento e fonte, pode ser definida em um estilo de tabela e aplicada a muitas tabelas para uma aparência consistente.
Aspose.Words suporta a aplicação de um estilo de tabela a uma tabela e também a leitura de propriedades de qualquer estilo de tabela. Os estilos de tabela são preservados durante o carregamento e o salvamento das seguintes maneiras:
- Os estilos de tabela nos formatos DOCX e WordML são preservados ao carregar e salvar nesses formatos
- Os estilos de tabela são preservados ao carregar e salvar no formato DOC (mas não em qualquer outro formato)
- Ao exportar para outros formatos, renderização ou impressão, os estilos de tabela são expandidos para formatação direta na tabela, para que toda a formatação seja preservada
Criar um estilo de tabela
O usuário pode criar um novo estilo e adicioná-lo à coleção de estilos. O método Add é usado para criar um novo estilo de tabela.
O exemplo de código a seguir mostra como criar um novo estilo de tabela definido pelo Usuário:
// 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"); |
Copiar um estilo de tabela existente
Se necessário, você pode copiar um estilo de tabela que já existe em um determinado documento para sua coleção de estilos usando o método AddCopy
.
É importante saber que, com essa cópia, os estilos vinculados também são copiados.
O exemplo de código a seguir mostra como importar um estilo de um documento para outro documento:
EXAMPLE
Aplicar um estilo de tabela existente
Aspose.Words fornece um TableStyle herdado da classe Style. TableStyle facilita o usuário a aplicar diferentes opções de estilo, como sombreamento, preenchimento, recuo, CellSpacing e Font, etc.
Além disso, Aspose.Words fornece a classe StyleCollection e algumas propriedades da classe Table
para especificar com qual estilo de tabela trabalharemos: Style, StyleIdentifier, StyleName, e StyleOptions.
Aspose.Words também fornece ConditionalStyle classe que representa formatação especial aplicada a alguma área de uma tabela com um estilo de tabela atribuído e ConditionalStyleCollection que representa uma coleção de ConditionalStyle objetos. Esta coleção contém um conjunto permanente de itens que representam um item para cada valor do tipo de enumeração ConditionalStyleType. A enumeração ConditionalStyleType define todas as áreas de tabela possíveis para as quais a formatação condicional pode ser definida em um estilo de tabela.
Neste caso, a formatação condicional pode ser definida para todas as áreas de tabela possíveis definidas sob o tipo de enumeração ConditionalStyleType.
O exemplo de código a seguir mostra como definir a formatação condicional para a linha de cabeçalho da tabela:
// 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"); |
Você também pode escolher a quais partes da tabela aplicar estilos, como primeira coluna, última coluna, linhas em faixas. Eles são listados na enumeração TableStyleOptions e são aplicados através da propriedade StyleOptions. A enumeração TableStyleOptions permite uma combinação bit a bit dessas características.
O exemplo de código a seguir mostra como criar uma nova tabela com um estilo de tabela aplicado:
// 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"); |
As imagens abaixo mostram uma representação do Table Styles em Microsoft Word e suas propriedades correspondentes em Aspose.Words.
Pegue a formatação do estilo da tabela e aplique-a como formatação direta
Aspose.Words também fornece o método ExpandTableStylesToDirectFormatting para obter a formatação encontrada em um estilo de tabela e expandi-la para as linhas e células da tabela como formatação direta. Tente combinar formatação com estilo de tabela e estilo de célula.
O exemplo de código a seguir mostra como expandir a formatação de estilos para linhas e células da tabela como formatação direta:
// 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; |