Travailler avec les styles
Travailler avec les styles
Ce guide montre comment travailler avec les styles de paragraphe, de caractère, de tableau et de liste dans Aspose.Words FOSS pour .NET — rechercher et appliquer les styles intégrés et personnalisés, et configurer le formatage conditionnel par région sur les styles de tableau.
Un objet Style représente un style unique intégré ou défini par l’utilisateur — la collection nommée de formatage de paragraphe, de police et de liste que Word applique lorsqu’un paragraphe ou une séquence de texte se voit attribuer ce style. Chaque document expose ses styles via la propriété Document.Styles, qui renvoie un StyleCollection. Les styles de tableau sont représentés par TableStyle, une sous-classe de Style qui ajoute un formatage spécifique aux tableaux et un formatage conditionnel par région via ConditionalStyleCollection.
Types de styles et identification
Chaque Style possède une propriété Type de type StyleType, qui est l’une de Paragraph, Character, Table ou List — correspondant aux quatre types de styles pris en charge par Word. Les styles intégrés possèdent également une valeur d’énumération StyleIdentifier indépendante de la langue (par exemple des valeurs correspondant aux styles de titre, d’emphase et de lien hypertexte) afin que le code puisse rechercher un style intégré sans dépendre de son nom affiché dans une langue particulière. Le nom lisible par l’homme d’un style est disponible via Style.Name, et Style.Aliases renvoie les éventuels noms alternatifs que Word reconnaît pour le même style. Style.BuiltIn indique si le style est fourni avec Word lui-même ou s’il est défini dans le document, et Style.IsHeading indique si le style fait partie des styles de titre intégrés.
Accéder à la collection de styles et la gérer
StyleCollection est la collection de tous les objets Style — intégrés et personnalisés — attachés à un document, accessible via Document.Styles. Récupérez un style par son nom affiché à l’aide de l’indexeur StyleCollection — styles[name] — ou récupérez un style intégré par son StyleIdentifier indépendant de la langue en utilisant le même indexeur — styles[sti] — ce qui est plus fiable que la recherche par nom dans des documents rédigés dans différentes langues. Les nouveaux styles sont créés avec StyleCollection.Add(type, name), en spécifiant le StyleType et un nom, et un style existant peut être dupliqué dans la collection avec StyleCollection.AddCopy(style). StyleCollection.Count indique le nombre de styles que le document contient, et la collection expose également DefaultFont et DefaultParagraphFormat, qui décrivent le formatage par défaut du document que le nouveau contenu hérite avant l’application d’un style explicite. StyleCollection.ClearQuickStyleGallery() supprime tous les styles de la galerie de styles rapides de l’interface Word sans supprimer les styles eux-mêmes.
Appliquer des styles aux paragraphes et aux segments
Les objets de mise en forme qui peuvent porter un style exposent à la fois une propriété Style (l’objet Style lui-même) et une propriété StyleName (un raccourci qui résout ou crée un style par son nom). ParagraphFormat.Style et ParagraphFormat.StyleName appliquent un style de paragraphe, tandis que Font.Style et Font.StyleName appliquent un style de caractère au formatage d’un run. Les propriétés LinkedStyleName, BaseStyleName et NextParagraphStyleName d’un style décrivent comment il se rapporte aux autres styles: BaseStyleName indique le style dont il hérite du formatage non défini, LinkedStyleName indique un style de paragraphe/caractère apparié (comme Word le fait pour les styles intégrés tels que Heading 1 et son style de caractère lié), et NextParagraphStyleName indique le style que Word attribue à un nouveau paragraphe saisi après un paragraphe utilisant ce style.
Styles de tableau et mise en forme conditionnelle
TableStyle étend Style avec des propriétés de mise en page de tableau telles que Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment et le remplissage (LeftPadding, RightPadding, TopPadding, BottomPadding), ainsi que RowStripe et ColumnStripe, qui contrôlent le nombre de lignes ou de colonnes sur lesquelles un motif de bandes se répète. Au-delà d’une mise en forme de tableau uniforme, TableStyle.ConditionalStyles renvoie un ConditionalStyleCollection contenant un ConditionalStyle par région de tableau — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding, et les quatre cellules d’angle (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Chaque ConditionalStyle possède ses propres Font, ParagraphFormat, Shading, Borders et son remplissage de cellule, et sa propriété Type indique quelle région ConditionalStyleType elle représente. ConditionalStyle.ClearFormatting() et ConditionalStyleCollection.ClearFormatting() réinitialisent la mise en forme pour une région ou l’ensemble complet des régions conditionnelles.
Métadonnées de style et indicateurs de comportement
Plusieurs propriétés booléennes et numériques sur Style contrôlent la façon dont Word traite un style dans son interface utilisateur plutôt que la façon dont il le rend: Locked empêche la modification du style lorsque la protection du formatage est active, IsQuickStyle contrôle son affichage dans la galerie de styles rapides, AutomaticallyUpdate fait que le style se redéfinit à partir du formatage direct appliqué manuellement, SemiHidden et UnhideWhenUsed contrôlent la visibilité dans la liste des styles avant et après la première utilisation, et Priority influence l’ordre de tri dans la galerie. Un style expose également les propriétés List et ListFormat lorsqu’il définit la numérotation des listes, et Style.Remove() supprime le style de son StyleCollection.
Conseils et bonnes pratiques
- Privilégiez l’indexeur
StyleCollectionavec une valeurStyleIdentifierplutôt que la recherche par nom lors de la localisation d’un style intégré— les noms sont localisés, mais les valeursStyleIdentifierne le sont pas. - Définissez
BaseStyleNamepour créer des hiérarchies de styles (par exemple, un ensemble de styles de titres qui héritent tous des choix de police à partir d’un style de base) au lieu de répéter le formatage sur chaque style. - Lors de la copie d’un style entre documents, utilisez
StyleCollection.AddCopy(style)plutôt que de lire manuellement et de réappliquer chaque propriété de formatage. - Configurez des régions
TableStyle.ConditionalStylespour les tableaux à bandes au lieu de formater manuellement les lignes alternées dans le code — le formatage de chaque régionConditionalStyleest appliqué en fonction de sonConditionalStyleType, plutôt qu’en définissant un formatage direct sur chaque ligne. - Vérifiez
Style.BuiltInavant de supprimer ou de renommer un style par programme ; les styles intégrés sont généralement référencés par leur nom ailleurs dans le document.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
StyleCollection indexer renvoie null pour une recherche de nom | Le nom du style n’existe pas dans ce document, ou un style intégré n’a pas encore été utilisé, si bien que Word ne l’a pas encore matérialisé. | Vérifiez Style.Aliases pour des noms alternatifs, ou utilisez l’indexeur StyleCollection avec un StyleIdentifier pour les styles intégrés à la place |
Définir StyleName crée de manière inattendue un nouveau style | StyleName crée le style nommé s’il n’existe pas déjà dans la collection | Utilisez d’abord l’indexeur StyleCollection pour confirmer que le style existe, ou assignez l’objet Style directement via la propriété Style |
Le banding du tableau n’apparaît pas après l’application d’un TableStyle | Les régions de mise en forme conditionnelle (OddRowBanding, EvenRowBanding, etc.) n’ont jamais été configurées sur TableStyle.ConditionalStyles | Définissez la mise en forme sur les entrées ConditionalStyle pertinentes dans ConditionalStyleCollection |
| Une modification de style n’affecte pas le contenu qui utilise déjà le style | Un formatage direct (manuel) a été appliqué au-dessus du style et l’emporte | Effacez le formatage direct sur les passages/paragraphes concernés, ou définissez Style.AutomaticallyUpdate |
FAQ
Comment obtenir la collection de tous les styles d’un document?
Lisez Document.Styles, qui renvoie un StyleCollection contenant tous les Style intégrés et définis par l’utilisateur dans ce document.
Quelle est la différence entre Style et StyleIdentifier?
Style est l’objet de style réel avec son formatage ; StyleIdentifier est une valeur d’énumération indépendante de la locale utilisée pour rechercher un spécifique intégré style indépendamment de la langue du document, via le StyleCollection indexeur.
En quoi les styles de tableau diffèrent-ils des styles de paragraphe ou de caractère?
TableStyle est une sous-classe de Style qui ajoute des propriétés de mise en page de tableau (Alignment, CellSpacing, padding) et une collection ConditionalStyles pour le formatage spécifique à une région tel que les lignes bandées, les lignes d’en-tête et les cellules d’angle — des concepts de formatage qui ne s’appliquent pas aux styles de paragraphe ou de caractère.
Puis-je créer un tout nouveau style au lieu de modifier un existant?
Oui — appelez StyleCollection.Add(type, name) avec le StyleType souhaité et un nouveau nom pour créer un style vide, puis définissez ses propriétés de formatage (Font, ParagraphFormat, etc. pour les styles de paragraphe/caractère).
Comment dupliquer un style, y compris depuis un autre document?
Utilisez StyleCollection.AddCopy(style), en transmettant un objet Style (qui peut provenir du StyleCollection d’un autre Document) pour ajouter une copie à la collection cible.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
Style | Un seul style de paragraphe, de caractère, de tableau ou de liste intégré ou défini par l’utilisateur |
StyleCollection | La collection de tous les styles d’un document, accessible via Document.Styles |
indexeur StyleCollection par nom | Rechercher un style par son nom d’affichage, par ex. styles["Heading 1"] |
indexeur StyleCollection par identifiant | Rechercher un style intégré par identifiant indépendant de la locale, par ex. styles[StyleIdentifier.Heading1] |
StyleCollection.Add(type, name) | Créer un nouveau style vide du StyleType fourni |
StyleCollection.AddCopy(style) | Copier un style existant dans cette collection |
StyleType | Enum distinguant les styles Paragraph, Character, Table et List |
StyleIdentifier | Identifiant indépendant de la locale pour un style intégré |
TableStyle | Une sous-classe Style pour le formatage de tableau, incluant un style conditionnel par région |
ConditionalStyleCollection | L’ensemble des entrées ConditionalStyle par région sur un TableStyle |
ConditionalStyle | Mise en forme (police, format de paragraphe, ombrage, bordures, remplissage) pour une région de tableau |
ConditionalStyleType | Enum identifiant à quelle région de tableau un ConditionalStyle s’applique |