Aplicar estilo de tabela
Um estilo de tabela define um conjunto de formatação que pode ser facilmente aplicado a uma tabela. Formatações como bordas, sombreamento, alinhamento e fonte podem ser definidas em um estilo de tabela e aplicadas a muitas tabelas para obter 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 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, renderizar ou imprimir, os estilos da tabela são expandidos para formatação direta na tabela, portanto toda a formatação é preservada
Crie 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-.NET.git. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Table table = builder.StartTable(); | |
builder.InsertCell(); | |
builder.Write("Name"); | |
builder.InsertCell(); | |
builder.Write("Value"); | |
builder.EndRow(); | |
builder.InsertCell(); | |
builder.InsertCell(); | |
builder.EndTable(); | |
TableStyle tableStyle = (TableStyle) doc.Styles.Add(StyleType.Table, "MyTableStyle1"); | |
tableStyle.Borders.LineStyle = LineStyle.Double; | |
tableStyle.Borders.LineWidth = 1; | |
tableStyle.LeftPadding = 18; | |
tableStyle.RightPadding = 18; | |
tableStyle.TopPadding = 12; | |
tableStyle.BottomPadding = 12; | |
table.Style = tableStyle; | |
doc.Save(ArtifactsDir + "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 esta 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:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document srcDoc = new Document(); | |
// Create a custom style for the source document. | |
Style srcStyle = srcDoc.Styles.Add(StyleType.Paragraph, "MyStyle"); | |
srcStyle.Font.Color = Color.Red; | |
// Import the source document's custom style into the destination document. | |
Document dstDoc = new Document(); | |
Style newStyle = dstDoc.Styles.AddCopy(srcStyle); | |
// The imported style has an appearance identical to its source style. | |
Assert.AreEqual("MyStyle", newStyle.Name); | |
Assert.AreEqual(Color.Red.ToArgb(), newStyle.Font.Color.ToArgb()); |
Aplicar um estilo de tabela existente
Aspose.Words fornece um TableStyle herdado da classe Style. TableStyle facilita ao usuário a aplicação de 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 a classe ConditionalStyle que representa a formatação especial aplicada a alguma área de uma tabela com um estilo de tabela atribuído, e o ConditionalStyleCollection que representa uma coleção de objetos ConditionalStyle. 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 possíveis da tabela para as quais a formatação condicional pode ser definida em um estilo de tabela.
Nesse caso, a formatação condicional pode ser definida para todas as áreas de tabela possíveis definidas no 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-.NET.git. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Table table = builder.StartTable(); | |
builder.InsertCell(); | |
builder.Write("Name"); | |
builder.InsertCell(); | |
builder.Write("Value"); | |
builder.EndRow(); | |
builder.InsertCell(); | |
builder.InsertCell(); | |
builder.EndTable(); | |
TableStyle tableStyle = (TableStyle) doc.Styles.Add(StyleType.Table, "MyTableStyle1"); | |
tableStyle.ConditionalStyles.FirstRow.Shading.BackgroundPatternColor = Color.GreenYellow; | |
tableStyle.ConditionalStyles.FirstRow.Shading.Texture = TextureIndex.TextureNone; | |
table.Style = tableStyle; | |
doc.Save(ArtifactsDir + "WorkingWithTableStylesAndFormatting.DefineConditionalFormatting.docx"); |
Você também pode escolher em quais partes da tabela aplicar estilos, como primeira coluna, última coluna, linhas com faixas. Eles estão listados na enumeração TableStyleOptions e são aplicados por meio da propriedade StyleOptions. A enumeração TableStyleOptions permite uma combinação bit a bit desses recursos.
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-.NET.git. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
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.StyleIdentifier = StyleIdentifier.MediumShading1Accent1; | |
// Apply which features should be formatted by the style. | |
table.StyleOptions = | |
TableStyleOptions.FirstColumn | TableStyleOptions.RowBands | TableStyleOptions.FirstRow; | |
table.AutoFit(AutoFitBehavior.AutoFitToContents); | |
builder.Writeln("Item"); | |
builder.CellFormat.RightPadding = 40; | |
builder.InsertCell(); | |
builder.Writeln("Quantity (kg)"); | |
builder.EndRow(); | |
builder.InsertCell(); | |
builder.Writeln("Apples"); | |
builder.InsertCell(); | |
builder.Writeln("20"); | |
builder.EndRow(); | |
builder.InsertCell(); | |
builder.Writeln("Bananas"); | |
builder.InsertCell(); | |
builder.Writeln("40"); | |
builder.EndRow(); | |
builder.InsertCell(); | |
builder.Writeln("Carrots"); | |
builder.InsertCell(); | |
builder.Writeln("50"); | |
builder.EndRow(); | |
doc.Save(ArtifactsDir + "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 de tabela e aplique-a como formatação direta
Aspose.Words também fornece o método ExpandTableStylesToDirectFormatting para pegar a formatação encontrada em um estilo de tabela e expandi-la nas linhas e células da tabela como formatação direta. Tente combinar a formatação com o estilo da tabela e o estilo da 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-.NET.git. | |
Document doc = new Document(MyDir + "Tables.docx"); | |
// Get the first cell of the first table in the document. | |
Table table = (Table) doc.GetChild(NodeType.Table, 0, true); | |
Cell firstCell = table.FirstRow.FirstCell; | |
// First print the color of the cell shading. | |
// This should be empty as the current shading is stored in the table style. | |
Color cellShadingBefore = firstCell.CellFormat.Shading.BackgroundPatternColor; | |
Console.WriteLine("Cell shading before style expansion: " + cellShadingBefore); | |
doc.ExpandTableStylesToDirectFormatting(); | |
// Now print the cell shading after expanding table styles. | |
// A blue background pattern color should have been applied from the table style. | |
Color cellShadingAfter = firstCell.CellFormat.Shading.BackgroundPatternColor; | |
Console.WriteLine("Cell shading after style expansion: " + cellShadingAfter); |