Como trabalhar com estilos em .NET

Como trabalhar com estilos em .NET

Este guia mostra como localizar, aplicar e criar estilos de parágrafo, caractere, tabela e lista em Aspose.Words FOSS para .NET, usando o Style, StyleCollection, e TableStyle classes. Ele abrange a leitura da coleção de estilos de um documento, a localização confiável de estilos em diferentes idiomas, a aplicação de estilos a parágrafos e trechos, a criação e cópia de estilos, e a configuração de formatação condicional por região em estilos de tabela.

Guia Passo a Passo

Passo 1: Instalar o Pacote

Aspose.Words FOSS for .NET ainda não publica um pacote NuGet – compile a biblioteca a partir do código-fonte em vez disso. Clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, então compile Aspose.Words.sln na configuração Release com o SDK .NET e referencie o assembly Aspose.Words resultante no seu projeto. A biblioteca tem como alvo .NET Standard 2.0, portanto ela roda em .NET Framework 4.6.2+ e .NET 6/8/10.


Passo 2: Importar Classes Necessárias

Adicione uma diretiva using Aspose.Words; – Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection e ConditionalStyleType estão todos no namespace Aspose.Words ao lado de Document.


Etapa 3: Ler a Coleção de Estilos de um Documento

Document.Styles retorna um StyleCollection – todos os Style incorporados e definidos pelo usuário anexados ao documento. StyleCollection.Count informa quantos estilos ele contém, e DefaultFont / DefaultParagraphFormat descrevem a formatação padrão de todo o documento que o novo conteúdo herda antes que qualquer estilo explícito seja aplicado.


Etapa 4: Localizar um Estilo de Forma Confiável

Recupere um estilo pelo seu nome de exibição usando o indexador StyleCollection, styles[name]. Para estilos incorporados, prefira o mesmo indexador com um valor enum StyleIdentifier — styles[sti] — os nomes são localizados, mas os valores StyleIdentifier não são, portanto a pesquisa por identificador funciona da mesma forma independentemente do idioma do documento. Verifique Style.Aliases para nomes alternativos que o Word reconhece para o mesmo estilo se o indexador não encontrar o que você espera, e verifique Style.BuiltIn antes de remover ou renomear um estilo programaticamente, pois estilos incorporados costumam ser referenciados por nome em outras partes do documento.


Etapa 5: Aplicar um Estilo a Parágrafos ou Execuções

Objetos de formatação que carregam um estilo expõem tanto uma propriedade Style (o próprio objeto Style) quanto uma propriedade StyleName (um atalho que resolve, ou cria, um estilo por nome). Defina ParagraphFormat.Style ou ParagraphFormat.StyleName para aplicar um estilo de parágrafo, e Font.Style ou Font.StyleName para aplicar um estilo de caractere à formatação de uma execução. Atribuir StyleName com um nome que ainda não exista na coleção cria esse estilo — confirme primeiro que o estilo existe com o indexador StyleCollection, ou atribua o objeto Style diretamente, se esse não for o comportamento desejado.


Etapa 6: Construir Hierarquias de Estilos

Leia BaseStyleName para encontrar o estilo do qual um determinado estilo herda formatação não definida, LinkedStyleName para um estilo de parágrafo/caractere emparelhado (conforme o Word define para estilos incorporados como um título e seu estilo de caractere vinculado), e NextParagraphStyleName para o estilo que o Word atribui a um novo parágrafo digitado após um que usa esse estilo. Defina BaseStyleName ao definir um conjunto de estilos relacionados — como uma família de estilos de título que devem todos herdar as escolhas de fonte de um estilo base — em vez de repetir a mesma formatação em cada estilo.


Etapa 7: Criar ou Copiar um Estilo

Chame StyleCollection.Add(type, name) com um StyleType (Paragraph, Character, Table ou List) e um nome para criar um novo estilo vazio, então defina suas propriedades Font e ParagraphFormat conforme necessário. Para duplicar um estilo existente — incluindo um de um Document diferente’s StyleCollection — chame StyleCollection.AddCopy(style) em vez de ler manualmente e reaplicar cada propriedade de formatação. Chame Style.Remove() para excluir um estilo de sua coleção.


Etapa 8: Configurar Estilos de Tabela e Formatação Condicional

TableStyle estende Style com propriedades de layout de tabela — Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment e as quatro propriedades de preenchimento (LeftPadding, RightPadding, TopPadding, BottomPadding) — além de RowStripe e ColumnStripe, que controlam quantas linhas ou colunas um padrão de banding se repete. Para formatação por região, configure TableStyle.ConditionalStyles — um ConditionalStyleCollection que contém um ConditionalStyle por região: FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding, e as quatro células de canto (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Cada ConditionalStyle possui seu próprio Font, ParagraphFormat, Shading, Borders e preenchimento de célula, com Type informando qual região ConditionalStyleType ele representa; defina a formatação nessas regiões em vez de nas linhas individuais da tabela para obter formatação de banding, linha de cabeçalho ou célula de canto que persista nas edições da tabela.


Etapa 9: Redefinir ou Remover Formatação

Chame ConditionalStyle.ClearFormatting() para redefinir uma região condicional, ou ConditionalStyleCollection.ClearFormatting() para redefinir todas as regiões em um TableStyle de uma vez. StyleCollection.ClearQuickStyleGallery() remove todos os estilos da galeria de estilos rápidos da interface do Word sem excluir os próprios estilos — útil para reduzir a galeria sem alterar o conteúdo do documento.

Problemas Comuns e Soluções

StyleCollection indexer retorna nulo para uma busca de nome O nome do estilo não existe neste documento, ou um estilo incorporado ainda não foi usado, portanto o Word ainda não o materializou. Verifique Style.Aliases por nomes alternativos, ou use o StyleCollection indexador com um StyleIdentifier para estilos internos em vez disso.

Definir StyleName inesperadamente cria um novo estilo StyleName cria o estilo nomeado se ele ainda não existir na coleção. Use o StyleCollection indexador primeiro para confirmar que o estilo existe, ou atribuir o Style objeto diretamente através do Style propriedade em vez de StyleName.

Table banding não aparece após aplicar um TableStyle As regiões de formatação condicional – OddRowBanding, EvenRowBanding, e semelhantes – nunca foram configurados em TableStyle.ConditionalStyles. Defina a formatação nos relevantes ConditionalStyle entradas em ConditionalStyleCollection.

Uma alteração de estilo não afeta o conteúdo que já usa o estilo A formatação direta (manual) aplicada sobre o estilo tem precedência sobre as próprias configurações do estilo. Limpe a formatação direta nas execuções ou parágrafos afetados, ou defina Style.AutomaticallyUpdate para que o estilo se redefina a partir dessa formatação manual.

Uma busca de estilo incorporado falha em um documento criado em outro idioma O StyleCollection O indexer corresponde ao nome de exibição, que é localizado, quando chamado com um nome. Use o mesmo indexer com o valor de enum correspondente StyleIdentifier em vez disso, pois esse identificador não depende de localidade.

Perguntas Frequentes

Como obtenho a coleção de todos os estilos em um documento?

Leia Document.Styles, que retorna um StyleCollection contendo todos os Style incorporados e definidos pelo usuário naquele documento.

Qual é a diferença entre Style e StyleIdentifier?

Style é o objeto de estilo real com sua formatação; StyleIdentifier é um valor enum independente de localidade usado para procurar um estilo incorporado específico independentemente da linguagem do documento, via o indexador StyleCollection.

Como os estilos de tabela diferem dos estilos de parágrafo ou de caractere?

TableStyle é uma subclasse de Style que adiciona propriedades de layout de tabela (Alignment, CellSpacing, padding) e uma coleção ConditionalStyles para formatação específica de região, como linhas em faixas, linhas de cabeçalho e células de canto — conceitos de formatação que não se aplicam a estilos de parágrafo ou de caractere.

Posso criar um estilo totalmente novo em vez de modificar um existente?

Sim — chame StyleCollection.Add(type, name) com o StyleType desejado e um novo nome para criar um estilo vazio, depois defina suas propriedades de formatação (Font, ParagraphFormat, e assim por diante para estilos de parágrafo ou de caractere).

Como duplico um estilo, incluindo de outro documento?

Chame StyleCollection.AddCopy(style), passando um objeto Style — que pode vir de um Document’s StyleCollection diferente — para adicionar uma cópia dele à coleção de destino.

Ver também

 Português