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-Java.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.getStyles().add(StyleType.TABLE, "MyTableStyle1");
tableStyle.getBorders().setLineStyle(LineStyle.DOUBLE);
tableStyle.getBorders().setLineWidth(1.0);
tableStyle.setLeftPadding(18.0);
tableStyle.setRightPadding(18.0);
tableStyle.setTopPadding(12.0);
tableStyle.setBottomPadding(12.0);
table.setStyle(tableStyle);
doc.save(getArtifactsDir() + "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:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document srcDoc = new Document();
// Create a custom style for the source document.
Style srcStyle = srcDoc.getStyles().add(StyleType.PARAGRAPH, "MyStyle");
srcStyle.getFont().setColor(Color.RED);
// Import the source document's custom style into the destination document.
Document dstDoc = new Document();
Style newStyle = dstDoc.getStyles().addCopy(srcStyle);
// The imported style has an appearance identical to its source style.
Assert.assertEquals("MyStyle", newStyle.getName());
Assert.assertEquals(Color.RED.getRGB(), newStyle.getFont().getColor().getRGB());

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-Java.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.getStyles().add(StyleType.TABLE, "MyTableStyle1");
tableStyle.getConditionalStyles().getFirstRow().getShading().setBackgroundPatternColor(Color.yellow);
tableStyle.getConditionalStyles().getFirstRow().getShading().setTexture(TextureIndex.TEXTURE_NONE);
table.setStyle(tableStyle);
doc.save(getArtifactsDir() + "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-Java.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.setStyleIdentifier(StyleIdentifier.MEDIUM_SHADING_1_ACCENT_1);
// Apply which features should be formatted by the style.
table.setStyleOptions(TableStyleOptions.FIRST_COLUMN | TableStyleOptions.ROW_BANDS | TableStyleOptions.FIRST_ROW);
table.autoFit(AutoFitBehavior.AUTO_FIT_TO_CONTENTS);
builder.writeln("Item");
builder.getCellFormat().setRightPadding(40.0);
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(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.BuildTableWithStyle.docx");

As imagens abaixo mostram uma representação do Table Styles em Microsoft Word e suas propriedades correspondentes em Aspose.Words.

table-style-aspose-words-java

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-Java.git.
Document doc = new Document(getMyDir() + "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.getFirstRow().getFirstCell();
// 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.getCellFormat().getShading().getBackgroundPatternColor();
System.out.println("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.getCellFormat().getShading().getBackgroundPatternColor();
System.out.println("Cell shading after style expansion: " + cellShadingAfter);