Trabajando con Estilos

Trabajando con estilos

Esta guía muestra cómo trabajar con estilos de párrafo, carácter, tabla y lista en Aspose.Words FOSS para .NET — buscar y aplicar estilos incorporados y personalizados, y configurar el formato condicional por región en los estilos de tabla.

Un objeto Style representa un único estilo incorporado o definido por el usuario — la colección nombrada de formato de párrafo, fuente y lista que Word aplica cuando a un párrafo o ejecución se le asigna ese estilo. Cada documento expone sus estilos a través de la propiedad Document.Styles, que devuelve un StyleCollection. Los estilos de tabla están representados por TableStyle, una subclase de Style que añade formato específico de tabla y formato condicional por región mediante ConditionalStyleCollection.


Tipos de estilo e identificación

Cada Style tiene una propiedad Type de tipo StyleType, que es una de Paragraph, Character, Table o List — coincidiendo con los cuatro tipos de estilos que Word admite. Los estilos incorporados también poseen un valor enum StyleIdentifier independiente de la configuración regional (por ejemplo valores que corresponden a estilos de encabezados, énfasis y hipervínculo) para que el código pueda buscar un estilo incorporado sin depender de su nombre visible en un idioma particular. El nombre legible por humanos de un estilo está disponible a través de Style.Name, y Style.Aliases devuelve cualquier nombre alternativo que Word reconozca para el mismo estilo. Style.BuiltIn indica si el estilo se entrega con el propio Word o si está definido en el documento, y Style.IsHeading indica si el estilo es uno de los estilos de encabezado incorporados.

Accediendo y gestionando la colección de estilos

StyleCollection es la colección de todos los objetos Style — incorporados y personalizados — adjuntos a un documento, a la que se accede a través de Document.Styles. Obtenga un estilo por su nombre visible usando el indexador StyleCollection — styles[name] — o recupere un estilo incorporado por su StyleIdentifier independiente de la configuración regional usando el mismo indexador — styles[sti] — lo cual es más fiable que buscar por nombre en documentos creados en diferentes idiomas. Los estilos nuevos se crean con StyleCollection.Add(type, name), especificando el StyleType y un nombre, y un estilo existente puede duplicarse en la colección con StyleCollection.AddCopy(style). StyleCollection.Count indica cuántos estilos contiene el documento, y la colección también expone DefaultFont y DefaultParagraphFormat, que describen el formato predeterminado a nivel de documento que el contenido nuevo hereda antes de que se aplique cualquier estilo explícito. StyleCollection.ClearQuickStyleGallery() elimina todos los estilos de la galería de estilos rápidos de la UI de Word sin borrar los propios estilos.

Aplicar estilos a párrafos y ejecuciones

Los objetos de formato que pueden llevar un estilo exponen tanto una propiedad Style (el propio objeto Style) como una propiedad StyleName (un atajo que resuelve o crea un estilo por nombre). ParagraphFormat.Style y ParagraphFormat.StyleName aplican un estilo de párrafo, mientras que Font.Style y Font.StyleName aplican un estilo de carácter al formato de una ejecución. Las propias propiedades LinkedStyleName, BaseStyleName y NextParagraphStyleName de un estilo describen cómo se relaciona con otros estilos: BaseStyleName indica el estilo del que hereda el formato sin establecer, LinkedStyleName indica un estilo de párrafo/caracter emparejado (como Word hace con los estilos incorporados como Encabezado 1 y su estilo de carácter vinculado), y NextParagraphStyleName indica el estilo que Word asigna a un nuevo párrafo escrito después de uno que usa este estilo.

Estilos de tabla y formato condicional

TableStyle extiende Style con propiedades de diseño de tabla como Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment, y relleno (LeftPadding, RightPadding, TopPadding, BottomPadding), además de RowStripe y ColumnStripe, que controlan cuántas filas o columnas se repite un patrón de bandas. Más allá del formato de tabla uniforme, TableStyle.ConditionalStyles devuelve un ConditionalStyleCollection que contiene un ConditionalStyle por región de tabla — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding, y las cuatro celdas de esquina (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Cada ConditionalStyle lleva sus propios Font, ParagraphFormat, Shading, Borders, y relleno de celda, y su propiedad Type indica qué región ConditionalStyleType representa. ConditionalStyle.ClearFormatting() y ConditionalStyleCollection.ClearFormatting() restablecen el formato para una región o todo el conjunto de regiones condicionales.

Metadatos de estilo y banderas de comportamiento

Varias propiedades booleanas y numéricas en Style controlan cómo Word trata un estilo en su interfaz de usuario en lugar de cómo lo renderiza: Locked impide que el estilo se cambie cuando la protección de formato está activa, IsQuickStyle controla si aparece en la galería de estilos rápidos, AutomaticallyUpdate hace que el estilo se redefina a partir del formato directo aplicado manualmente, SemiHidden y UnhideWhenUsed controlan la visibilidad en la lista de estilos antes y después del primer uso, y Priority afecta el orden de clasificación en la galería. Un estilo también expone las propiedades List y ListFormat cuando define la numeración de listas, y Style.Remove() elimina el estilo de su StyleCollection.


Consejos y mejores prácticas

  • Prefiera el indexador StyleCollection con un valor StyleIdentifier en lugar de buscar por nombre al encontrar un estilo incorporado — los nombres están localizados, pero los valores StyleIdentifier no lo están.
  • Establezca BaseStyleName para crear jerarquías de estilos (por ejemplo, un conjunto de estilos de encabezado que heredan todas las opciones de fuente de un estilo base) en lugar de repetir el formato en cada estilo.
  • Al copiar un estilo entre documentos, utilice StyleCollection.AddCopy(style) en lugar de leer y volver a aplicar manualmente cada propiedad de formato.
  • Configure regiones TableStyle.ConditionalStyles para tablas con bandas en lugar de formatear manualmente filas alternas en el código — el formato de cada región ConditionalStyle se aplica según su ConditionalStyleType, en lugar de establecer formato directo en filas individuales.
  • Verifique Style.BuiltIn antes de eliminar o renombrar un estilo mediante programación; los estilos incorporados suelen estar referenciados por su nombre en otras partes del documento.

Problemas comunes

ProblemaCausaSolución
StyleCollection indexer devuelve null para una búsqueda de nombreEl nombre del estilo no existe en este documento, o un estilo incorporado aún no se ha usado, por lo que Word no lo ha materializadoVerifique Style.Aliases para nombres alternativos, o use el indexador StyleCollection con un StyleIdentifier para estilos incorporados en su lugar
Establecer StyleName inesperadamente crea un nuevo estiloStyleName crea el estilo con el nombre si aún no existe en la colecciónUtilice primero el indexador StyleCollection para confirmar que el estilo existe, o asigne el objeto Style directamente a través de la propiedad Style
El sombreado de tabla no aparece después de aplicar un TableStyleLas regiones de formato condicional (OddRowBanding, EvenRowBanding, etc.) nunca se configuraron en TableStyle.ConditionalStylesEstablezca el formato en las entradas relevantes de ConditionalStyle en ConditionalStyleCollection
Un cambio de estilo no afecta al contenido que ya utiliza el estiloSe aplicó formato directo (manual) sobre el estilo y tiene precedenciaElimine el formato directo en los fragmentos/párrafos afectados, o establezca Style.AutomaticallyUpdate

FAQ

¿Cómo obtener la colección de todos los estilos en un documento?

Lea Document.Styles, que devuelve un StyleCollection que contiene todos los Style incorporados y definidos por el usuario en ese documento.

¿Cuál es la diferencia entre Style y StyleIdentifier?

Style es el objeto de estilo real con su formato; StyleIdentifier es un valor enum independiente de la configuración regional utilizado para buscar un específico integrado estilo sin importar el idioma del documento, a través del StyleCollection indexador.

¿Cómo difieren los estilos de tabla de los estilos de párrafo o de carácter?

TableStyle es una subclase de Style que agrega propiedades de diseño de tabla (Alignment, CellSpacing, padding) y una colección ConditionalStyles para formato específico de regiones, como filas con bandas, filas de encabezado y celdas de esquina — conceptos de formato que no se aplican a los estilos de párrafo o de carácter.

¿Puedo crear un estilo completamente nuevo en lugar de modificar uno existente?

Sí — llama a StyleCollection.Add(type, name) con el StyleType deseado y un nombre nuevo para crear un estilo vacío, luego establece sus propiedades de formato (Font, ParagraphFormat, y así sucesivamente para estilos de párrafo/caracter).

¿Cómo duplico un estilo, incluyendo de otro documento?

Utiliza StyleCollection.AddCopy(style), pasando un objeto Style (que puede provenir de un Document diferente StyleCollection) para añadir una copia al conjunto de destino.


API Reference Resumen

Clase/MétodoDescripción
StyleUn estilo único de párrafo, carácter, tabla o lista, ya sea incorporado o definido por el usuario
StyleCollectionLa colección de todos los estilos en un documento, accesible mediante Document.Styles
Indexador de StyleCollection por nombreBuscar un estilo por su nombre para mostrar, p.ej. styles["Heading 1"]
Indexador de StyleCollection por identificadorBuscar un estilo incorporado por identificador independiente de la configuración regional, p.ej. styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)Crea un nuevo estilo vacío del StyleType dado
StyleCollection.AddCopy(style)Copia un estilo existente a esta colección
StyleTypeEnumeración que distingue los estilos Paragraph, Character, Table y List
StyleIdentifierIdentificador independiente de la configuración regional para un estilo incorporado
TableStyleUna subclase Style para el formato de tablas, que incluye estilo condicional por región
ConditionalStyleCollectionEl conjunto de entradas ConditionalStyle por región en un TableStyle
ConditionalStyleFormato (fuente, formato de párrafo, sombreado, bordes, relleno) para una región de tabla
ConditionalStyleTypeEnum que identifica a qué región de tabla se aplica un ConditionalStyle

Ver también

 Español