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
StyleCollectioncon un valorStyleIdentifieren lugar de buscar por nombre al encontrar un estilo incorporado — los nombres están localizados, pero los valoresStyleIdentifierno lo están. - Establezca
BaseStyleNamepara 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.ConditionalStylespara tablas con bandas en lugar de formatear manualmente filas alternas en el código — el formato de cada regiónConditionalStylese aplica según suConditionalStyleType, en lugar de establecer formato directo en filas individuales. - Verifique
Style.BuiltInantes 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
| Problema | Causa | Solución |
|---|---|---|
StyleCollection indexer devuelve null para una búsqueda de nombre | El 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 materializado | Verifique 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 estilo | StyleName crea el estilo con el nombre si aún no existe en la colección | Utilice 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 TableStyle | Las regiones de formato condicional (OddRowBanding, EvenRowBanding, etc.) nunca se configuraron en TableStyle.ConditionalStyles | Establezca el formato en las entradas relevantes de ConditionalStyle en ConditionalStyleCollection |
| Un cambio de estilo no afecta al contenido que ya utiliza el estilo | Se aplicó formato directo (manual) sobre el estilo y tiene precedencia | Elimine 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étodo | Descripción |
|---|---|
Style | Un estilo único de párrafo, carácter, tabla o lista, ya sea incorporado o definido por el usuario |
StyleCollection | La colección de todos los estilos en un documento, accesible mediante Document.Styles |
Indexador de StyleCollection por nombre | Buscar un estilo por su nombre para mostrar, p.ej. styles["Heading 1"] |
Indexador de StyleCollection por identificador | Buscar 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 |
StyleType | Enumeración que distingue los estilos Paragraph, Character, Table y List |
StyleIdentifier | Identificador independiente de la configuración regional para un estilo incorporado |
TableStyle | Una subclase Style para el formato de tablas, que incluye estilo condicional por región |
ConditionalStyleCollection | El conjunto de entradas ConditionalStyle por región en un TableStyle |
ConditionalStyle | Formato (fuente, formato de párrafo, sombreado, bordes, relleno) para una región de tabla |
ConditionalStyleType | Enum que identifica a qué región de tabla se aplica un ConditionalStyle |