Cómo trabajar con estilos en .NET
Esta guía muestra cómo buscar, aplicar y crear estilos de párrafo, carácter, tabla y lista en Aspose.Words FOSS para .NET, usando el Style, StyleCollection, y TableStyle clases. Cubre la lectura de la colección de estilos de un documento, la búsqueda de estilos de manera fiable en distintos idiomas, la aplicación de estilos a párrafos y ejecuciones, la creación y copia de estilos, y la configuración de formato condicional por región en los estilos de tabla.
Guía paso a paso
Paso 1: Instalar el paquete
Aspose.Words FOSS for .NET aún no publica un paquete NuGet – construye la biblioteca desde el código fuente en su lugar. Clona https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, luego construye Aspose.Words.sln en configuración Release con el SDK .NET y referencia el ensamblado Aspose.Words resultante desde tu proyecto. La biblioteca tiene como objetivo .NET Standard 2.0, por lo que se ejecuta en .NET Framework 4.6.2+ y .NET 6/8/10.
Paso 2: Importar clases requeridas
Añade una directiva using Aspose.Words; – Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection y ConditionalStyleType viven en el espacio de nombres Aspose.Words junto a Document.
Paso 3: Leer la colección de estilos de un documento
Document.Styles devuelve un StyleCollection — cada Style incorporado y definido por el usuario adjunto al documento. StyleCollection.Count informa cuántos estilos contiene, y DefaultFont / DefaultParagraphFormat describen el formato predeterminado a nivel de documento que el contenido nuevo hereda antes de que se aplique cualquier estilo explícito.
Paso 4: Buscar un estilo de forma fiable
Recupera un estilo por su nombre visible usando el indexador StyleCollection, styles[name]. Para los estilos incorporados, prefiere el mismo indexador con un valor enum StyleIdentifier en su lugar — styles[sti] — los nombres están localizados, pero los valores StyleIdentifier no, por lo que la búsqueda por identificador funciona de la misma manera sin importar el idioma del documento. Verifica Style.Aliases para nombres alternativos que Word reconoce para el mismo estilo si el indexador no encuentra lo que esperas, y verifica Style.BuiltIn antes de eliminar o renombrar un estilo programáticamente, ya que los estilos incorporados a menudo son referenciados por nombre en otras partes del documento.
Paso 5: Aplicar un estilo a párrafos o a segmentos
Los objetos de formato que llevan 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). Asigna ParagraphFormat.Style o ParagraphFormat.StyleName para aplicar un estilo de párrafo, y Font.Style o Font.StyleName para aplicar un estilo de carácter al formato de un segmento. Asignar StyleName con un nombre que no exista ya en la colección crea ese estilo — confirma que el estilo exista con el indexador StyleCollection primero, o asigna directamente el objeto Style, si ese no es el comportamiento deseado.
Paso 6: Construir jerarquías de estilos
Lee BaseStyleName para encontrar el estilo del que un estilo dado hereda el formato no establecido, LinkedStyleName para un estilo de párrafo/caracter emparejado (como Word define para estilos incorporados como un encabezado y su estilo de carácter vinculado), y NextParagraphStyleName para el estilo que Word asigna a un nuevo párrafo escrito después de uno que usa este estilo. Establece BaseStyleName al definir un conjunto de estilos relacionados — como una familia de estilos de encabezado que deben heredar todas las elecciones de fuente de un estilo base — en lugar de repetir el mismo formato en cada estilo.
Paso 7: Crear o copiar un estilo
Llame a StyleCollection.Add(type, name) con un StyleType (Paragraph, Character, Table o List) y un nombre para crear un estilo nuevo y vacío, luego establezca sus propiedades Font y ParagraphFormat según sea necesario. Para duplicar un estilo existente – incluido uno de la StyleCollection de otro Document – llame a StyleCollection.AddCopy(style) en lugar de leer manualmente y volver a aplicar cada propiedad de formato. Llame a Style.Remove() para eliminar un estilo de su colección.
Paso 8: Configurar estilos de tabla y formato condicional
TableStyle amplía Style con propiedades de diseño de tabla – Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment y las cuatro propiedades de padding (LeftPadding, RightPadding, TopPadding, BottomPadding) – más RowStripe y ColumnStripe, que controlan cuántas filas o columnas se repite un patrón de bandas. Para formato por región, configure TableStyle.ConditionalStyles – un ConditionalStyleCollection que contiene un ConditionalStyle por región: FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding, y las cuatro celdas de esquina (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Cada ConditionalStyle lleva su propio Font, ParagraphFormat, Shading, Borders y padding de celda, con Type informando qué región ConditionalStyleType representa; establezca el formato en estas regiones en lugar de en filas de tabla individuales para obtener formato de bandas, fila de encabezado o celda de esquina que sobreviva a las ediciones de la tabla.
Paso 9: Restablecer o eliminar formato
Llame a ConditionalStyle.ClearFormatting() para restablecer una región condicional, o a ConditionalStyleCollection.ClearFormatting() para restablecer todas las regiones en un TableStyle de una vez. StyleCollection.ClearQuickStyleGallery() elimina todos los estilos de la galería de estilos rápidos de la interfaz de Word sin eliminar los propios estilos – útil para reducir la galería sin tocar el contenido del documento.
Problemas comunes y soluciones
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 utilizado, por lo que Word no lo ha materializado. Verifique Style.Aliases para nombres alternativos, o use el StyleCollection indexador con un StyleIdentifier para estilos incorporados en su lugar.
Configurar StyleName inesperadamente crea un nuevo estilo StyleName crea el estilo con nombre si aún no existe en la colección. Use el StyleCollection indexador primero para confirmar que el estilo exista, o asignar el Style objeto directamente a través del Style propiedad en lugar de StyleName.
El banding de tabla no aparece después de aplicar un TableStyle Las regiones de formato condicional – OddRowBanding, EvenRowBanding, y similares – nunca se configuraron en TableStyle.ConditionalStyles. Establezca el formato en los relevantes ConditionalStyle entradas en ConditionalStyleCollection.
Un cambio de estilo no afecta al contenido que ya utiliza el estilo El formato directo (manual) aplicado sobre el estilo tiene precedencia sobre la configuración propia del estilo. Elimine el formato directo en los fragmentos o párrafos afectados, o establezca Style.AutomaticallyUpdate para que el estilo se redefina a partir de ese formato manual.
Una búsqueda de estilo incorporada falla en un documento creado en otro idioma El StyleCollection Utilice el mismo indexador con el valor de enumeración correspondiente StyleIdentifier valor de enumeración en su lugar, ya que ese identificador no depende del locale.
Preguntas frecuentes
¿Cómo obtengo 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 que se usa para buscar un estilo incorporado específico sin importar el idioma del documento, a través del indexador StyleCollection.
¿Cómo difieren los estilos de tabla de los estilos de párrafo o de carácter?
TableStyle es una subclase de Style que añade propiedades de diseño de tabla (Alignment, CellSpacing, padding) y una colección ConditionalStyles para formato específico de región, 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 o de carácter).
¿Cómo duplico un estilo, incluso desde otro documento?
Llama a StyleCollection.AddCopy(style), pasando un objeto Style — que puede provenir del StyleCollection de otro Document — para añadir una copia al conjunto de destino.