Arbeiten mit Stilen
Arbeiten mit Stilen
Dieser Leitfaden zeigt, wie man mit Absatz-, Zeichen-, Tabellen- und Listenformatvorlagen arbeitet Aspose.Words FOSS für .NET — Nachschlagen und Anwenden von integrierten und benutzerdefinierten Formatvorlagen sowie Konfigurieren von regionsspezifischer bedingter Formatierung für Tabellenformatvorlagen.
Ein Style-Objekt stellt eine einzelne integrierte oder benutzerdefinierte Formatvorlage dar — die benannte Sammlung von Absatz-, Schrift- und Listformatierungen, die Word anwendet, wenn ein Absatz oder ein Lauf dieser Vorlage zugewiesen wird. Jedes Dokument stellt seine Vorlagen über die Document.Styles-Eigenschaft bereit, die ein StyleCollection zurückgibt. Tabellen-Vorlagen werden durch TableStyle repräsentiert, einer Unterklasse von Style, die tabellenspezifische Formatierungen und regionsspezifische bedingte Formatierung über ConditionalStyleCollection hinzufügt.
Vorlagentypen und Identifizierung
Jedes Style besitzt eine Type-Eigenschaft vom Typ StyleType, die entweder Paragraph, Character, Table oder List sein kann — passend zu den vier von Word unterstützten Vorlagentypen. Integrierte Vorlagen enthalten außerdem einen sprachunabhängigen StyleIdentifier-Enum-Wert (z.B. Werte, die Überschriften, Hervorhebungen und Hyperlink-Vorlagen entsprechen), sodass Code eine integrierte Vorlage nachschlagen kann, ohne vom Anzeigenamen in einer bestimmten Sprache abhängig zu sein. Der menschenlesbare Name einer Vorlage ist über Style.Name verfügbar, und Style.Aliases liefert alle alternativen Namen, die Word für dieselbe Vorlage erkennt. Style.BuiltIn gibt an, ob die Vorlage mit Word selbst ausgeliefert wird oder im Dokument definiert ist, und Style.IsHeading gibt an, ob es sich um eine der integrierten Überschriftsvorlagen handelt.
Zugriff auf und Verwaltung der Vorlagensammlung
StyleCollection ist die Sammlung aller Style-Objekte — integrierte und benutzerdefinierte — die an ein Dokument angehängt sind und über Document.Styles erreichbar ist. Eine Vorlage kann über den StyleCollection-Indexer anhand ihres Anzeigenamens abgerufen werden — styles[name] — oder eine integrierte Vorlage kann über ihr sprachunabhängiges StyleIdentifier mit demselben Indexer abgerufen werden — styles[sti] —, was zuverlässiger ist als die Namenssuche in Dokumenten, die in verschiedenen Sprachen erstellt wurden. Neue Vorlagen werden mit StyleCollection.Add(type, name) erstellt, wobei StyleType und ein Name angegeben werden, und eine bestehende Vorlage kann mit StyleCollection.AddCopy(style) in die Sammlung dupliziert werden. StyleCollection.Count gibt an, wie viele Vorlagen das Dokument enthält, und die Sammlung stellt zudem DefaultFont und DefaultParagraphFormat bereit, die die dokumentweite Standardformatierung beschreiben, die neue Inhalte erben, bevor irgendeine explizite Vorlage angewendet wird. StyleCollection.ClearQuickStyleGallery() entfernt alle Vorlagen aus der Schnellformatvorlagen-Galerie der Word-Benutzeroberfläche, ohne die Vorlagen selbst zu löschen.
Anwenden von Formatvorlagen auf Absätze und Textläufe
Formatierungsobjekte, die eine Formatvorlage tragen können, stellen sowohl eine Style-Eigenschaft (das Style-Objekt selbst) als auch eine StyleName-Eigenschaft (eine Abkürzung, die eine Formatvorlage nach Namen auflöst oder erstellt) zur Verfügung. ParagraphFormat.Style und ParagraphFormat.StyleName wenden eine Absatzformatvorlage an, während Font.Style und Font.StyleName eine Zeichenformatvorlage auf die Formatierung eines Laufs anwenden. Die eigenen LinkedStyleName, BaseStyleName und NextParagraphStyleName Eigenschaften einer Formatvorlage beschreiben, wie sie zu anderen Formatvorlagen steht: BaseStyleName gibt den Namen der Formatvorlage an, von der sie nicht festgelegte Formatierung erbt, LinkedStyleName gibt den Namen einer zugehörigen Absatz-/Zeichenformatvorlage an (wie Word es bei integrierten Formatvorlagen wie Überschrift1 und deren verknüpfter Zeichenformatvorlage tut), und NextParagraphStyleName gibt den Namen der Formatvorlage an, die Word einem neuen Absatz zuweist, der nach einem Absatz mit dieser Formatvorlage getippt wird.
Tabellenformatvorlagen und bedingte Formatierung
TableStyle erweitert Style um tabellenlayoutbezogene Eigenschaften wie Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment und Abstand (LeftPadding, RightPadding, TopPadding, BottomPadding), plus RowStripe und ColumnStripe, die steuern, über wie viele Zeilen oder Spalten ein Bandmuster wiederholt wird. Neben einer einheitlichen Tabellenformatierung liefert TableStyle.ConditionalStyles ein ConditionalStyleCollection, das ein ConditionalStyle pro Tabellenregion enthält — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding und die vier Eckzellen (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Jede ConditionalStyle besitzt ihre eigenen Font, ParagraphFormat, Shading, Borders und Zellenabstand, und ihre Type-Eigenschaft gibt an, welche ConditionalStyleType-Region sie repräsentiert. ConditionalStyle.ClearFormatting() und ConditionalStyleCollection.ClearFormatting() setzen die Formatierung für eine Region bzw. das gesamte Set bedingter Regionen zurück.
Metadaten und Verhaltensschalter von Formatvorlagen
Mehrere boolesche und numerische Eigenschaften von Style steuern, wie Word eine Formatvorlage in seiner Benutzeroberfläche behandelt, anstatt wie sie gerendert wird: Locked verhindert, dass die Formatvorlage geändert wird, wenn der Formatierungsschutz aktiv ist, IsQuickStyle bestimmt, ob sie in der Schnellformatvorlagen-Galerie erscheint, AutomaticallyUpdate lässt die Formatvorlage sich selbst aus manuell angewendeter Direktformatierung neu definieren, SemiHidden und UnhideWhenUsed regeln die Sichtbarkeit in der Formatvorlagenliste vor und nach der ersten Verwendung, und Priority beeinflusst die Sortierreihenfolge in der Galerie. Eine Formatvorlage stellt außerdem List und ListFormat Eigenschaften bereit, wenn sie Listennummerierung definiert, und Style.Remove() löscht die Formatvorlage aus ihrem StyleCollection.
Tipps und bewährte Verfahren
- Bevorzuge den
StyleCollection-Indexer mit einemStyleIdentifier-Wert gegenüber der Suche nach Namen, wenn du eine integrierte Formatvorlage findest – Namen sind lokalisiert, aberStyleIdentifier-Werte nicht. - Legen Sie
BaseStyleNamefest, um Stilhierarchien zu erstellen (zum Beispiel ein Satz von Überschriftenstilen, die alle Schriftwahl von einem Basisstil erben), anstatt die Formatierung bei jedem Stil zu wiederholen. - Verwenden Sie beim Kopieren eines Stils zwischen Dokumenten
StyleCollection.AddCopy(style), anstatt jede Formatierungseigenschaft manuell zu lesen und erneut anzuwenden. - Konfigurieren Sie
TableStyle.ConditionalStyles-Regionen für bandierte Tabellen, anstatt im Code abwechselnde Zeilen manuell zu formatieren — die Formatierung jederConditionalStyle-Region wird basierend auf ihremConditionalStyleTypeangewendet, statt direkte Formatierung für einzelne Zeilen festzulegen. - Prüfen Sie
Style.BuiltIn, bevor Sie einen Stil programmgesteuert entfernen oder umbenennen; integrierte Stile werden normalerweise an anderer Stelle im Dokument per Name referenziert.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
StyleCollection indexer gibt null für eine Namenssuche zurück | Der Formatvorlagenname existiert nicht in diesem Dokument, oder eine integrierte Formatvorlage wurde noch nicht verwendet, sodass Word sie noch nicht materialisiert hat | Überprüfen Sie Style.Aliases auf alternative Namen oder verwenden Sie den StyleCollection-Indexer zusammen mit einem StyleIdentifier für integrierte Stile. |
Das Setzen von StyleName erzeugt unerwartet einen neuen Stil. | StyleName erstellt den benannten Stil, falls er noch nicht in der Sammlung existiert. | Verwenden Sie zuerst den StyleCollection-Indexer, um zu bestätigen, dass der Stil existiert, oder weisen Sie das Style-Objekt direkt über die Style-Eigenschaft zu. |
Tabellenbandierung wird nach dem Anwenden eines TableStyle nicht angezeigt. | Die bedingten Formatierungsbereiche (OddRowBanding, EvenRowBanding usw.) wurden nie auf TableStyle.ConditionalStyles konfiguriert. | Legen Sie die Formatierung für die relevanten ConditionalStyle-Einträge in ConditionalStyleCollection fest. |
| Eine Stiländerung wirkt sich nicht auf Inhalte aus, die den Stil bereits verwenden. | Direkte (manuelle) Formatierung wurde über dem Stil angewendet und hat Vorrang | Löschen Sie die direkte Formatierung in den betroffenen Durchläufen/Absätzen oder setzen Sie Style.AutomaticallyUpdate |
FAQ
Wie erhalte ich die Sammlung aller Stile in einem Dokument?
Lesen Sie Document.Styles, das ein StyleCollection zurückgibt, das alle integrierten und benutzerdefinierten Style in diesem Dokument enthält.
Was ist der Unterschied zwischen Style und StyleIdentifier?
Style ist das eigentliche Stilobjekt mit seiner Formatierung; StyleIdentifier ist ein sprachunabhängiger Enum-Wert, der verwendet wird, um einen bestimmten eingebauten Stil unabhängig von der Sprache des Dokuments, über die StyleCollection Indexer.
Wie unterscheiden sich Tabellenstile von Absatz- oder Zeichenstilen?
TableStyle ist eine Unterklasse von Style, die Tabellenlayout-Eigenschaften (Alignment, CellSpacing, padding) und eine ConditionalStyles-Sammlung für regionsspezifische Formatierung wie banded rows, header rows und corner cells hinzufügt—Formatierungskonzepte, die nicht auf Absatz- oder Zeichenstile anwendbar sind.
Kann ich einen brandneuen Stil erstellen, anstatt einen bestehenden zu ändern?
Ja—rufen Sie StyleCollection.Add(type, name) mit dem gewünschten StyleType und einem neuen Namen auf, um einen leeren Stil zu erstellen, und setzen Sie anschließend seine Formatierungseigenschaften (Font, ParagraphFormat usw. für Absatz-/Zeichenstile).
Wie dupliziere ich einen Stil, einschließlich aus einem anderen Dokument?
Verwenden Sie StyleCollection.AddCopy(style) und übergeben ein Style-Objekt (das von einem anderen Document’s StyleCollection stammen kann), um eine Kopie davon zur Ziel-Sammlung hinzuzufügen.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
Style | Eine einzelne integrierte oder benutzerdefinierte Absatz-, Zeichen-, Tabellen- oder Listenvorlage |
StyleCollection | Die Sammlung aller Formatvorlagen in einem Dokument, erreichbar über Document.Styles |
StyleCollection indexer nach Name | Suche eine Formatvorlage nach ihrem Anzeigenamen, z.B. styles["Heading 1"] |
StyleCollection indexer nach Kennung | Suche eine integrierte Formatvorlage nach einer lokalunabhängigen Kennung, z.B. styles[StyleIdentifier.Heading1] |
StyleCollection.Add(type, name) | Erstelle einen neuen, leeren Stil des angegebenen StyleType |
StyleCollection.AddCopy(style) | Kopiere einen bestehenden Stil in diese Sammlung |
StyleType | Enum zur Unterscheidung von Paragraph, Character, Table und List Stilen |
StyleIdentifier | Lokaleunabhängiger Bezeichner für einen integrierten Stil |
TableStyle | Eine Style-Unterklasse für Tabellenformatierung, einschließlich bedingter regionenbezogener Gestaltung |
ConditionalStyleCollection | Die Menge der regionenbezogenen ConditionalStyle-Einträge auf einem TableStyle |
ConditionalStyle | Formatierung (Schrift, Absatzformat, Schattierung, Rahmen, Abstand) für eine Tabellenregion |
ConditionalStyleType | Enum, das identifiziert, auf welche Tabellenregion ein ConditionalStyle angewendet wird |