Wie man mit Stilen in .NET arbeitet
Dieses Handbuch zeigt, wie man Absatz-, Zeichen-, Tabellen- und Listenvorlagen nachschlägt, anwendet und erstellt in Aspose.Words FOSS für .NET, unter Verwendung von Style, StyleCollection, und TableStyle Klassen. Es behandelt das Lesen einer Dokumenten-Stilsammlung, das zuverlässige Nachschlagen von Vorlagen in verschiedenen Sprachen, das Anwenden von Vorlagen auf Absätze und Lauftexte, das Erstellen und Kopieren von Vorlagen sowie das Konfigurieren von regionsspezifischer bedingter Formatierung für Tabellenvorlagen.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
Aspose.Words FOSS für .NET veröffentlicht noch kein NuGet-Paket – bauen Sie stattdessen die Bibliothek aus dem Quellcode. Klonen Sie https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, dann bauen Sie Aspose.Words.sln in der Release-Konfiguration mit dem .NET SDK und binden die resultierende Aspose.Words-Assembly in Ihr Projekt ein. Die Bibliothek zielt auf .NET Standard 2.0 ab, sodass sie auf .NET Framework 4.6.2+ und .NET 6/8/10 läuft.
Schritt 2: Erforderliche Klassen importieren
Fügen Sie eine using Aspose.Words;-Direktive hinzu – Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection und ConditionalStyleType befinden sich alle im Aspose.Words-Namespace zusammen mit Document.
Schritt 3: Lesen Sie die Stilsammlung eines Dokuments
Document.Styles gibt ein StyleCollection zurück – jede integrierte und benutzerdefinierte Style, die dem Dokument zugeordnet ist. StyleCollection.Count gibt an, wie viele Stile es enthält, und DefaultFont / DefaultParagraphFormat beschreiben die dokumentweite Standardformatierung, die neuer Inhalt erbt, bevor ein expliziter Stil angewendet wird.
Schritt 4: Suchen Sie einen Stil zuverlässig
Rufen Sie einen Stil über seinen Anzeigenamen mit dem StyleCollection-Indexer, styles[name], ab. Für integrierte Stile verwenden Sie stattdessen denselben Indexer mit einem StyleIdentifier-Enum-Wert – styles[sti] –; Namen sind lokalisiert, aber StyleIdentifier-Werte nicht, sodass die Suche nach dem Bezeichner unabhängig von der Sprache des Dokuments gleich funktioniert. Prüfen Sie Style.Aliases auf alternative Namen, die Word für denselben Stil erkennt, falls der Indexer nicht das Erwartete findet, und prüfen Sie Style.BuiltIn, bevor Sie einen Stil programmgesteuert entfernen oder umbenennen, da integrierte Stile häufig an anderer Stelle im Dokument per Name referenziert werden.
Schritt 5: Wenden Sie einen Stil auf Absätze oder Laufobjekte an
Formatierungsobjekte, die einen Stil tragen, stellen sowohl eine Style-Eigenschaft (das Style-Objekt selbst) als auch eine StyleName-Eigenschaft (eine Abkürzung, die einen Stil anhand seines Namens auflöst oder erstellt) bereit. Setzen Sie ParagraphFormat.Style oder ParagraphFormat.StyleName, um einen Absatzstil anzuwenden, und Font.Style oder Font.StyleName, um einen Zeichenstil auf die Formatierung eines Laufs anzuwenden. Das Zuweisen von StyleName mit einem Namen, der in der Sammlung noch nicht existiert, erstellt diesen Stil – prüfen Sie zunächst mit dem StyleCollection-Indexer, ob der Stil existiert, oder weisen Sie das Style-Objekt direkt zu, falls dies nicht das beabsichtigte Verhalten ist.
Schritt 6: Erstellen Sie Stilhierarchien
Lesen Sie BaseStyleName, um den Stil zu finden, von dem ein gegebener Stil nicht gesetzte Formatierungen erbt, LinkedStyleName für einen gepaarten Absatz-/Zeichenstil (wie Word für integrierte Stile wie eine Überschrift und den zugehörigen Zeichenstil definiert), und NextParagraphStyleName für den Stil, den Word einem neuen Absatz zuweist, der nach einem Absatz mit diesem Stil eingegeben wird. Setzen Sie BaseStyleName, wenn Sie eine Gruppe verwandter Stile definieren – zum Beispiel eine Familie von Überschriftenstilen, die alle Schriftartauswahlen von einem Basisstil erben – anstatt dieselbe Formatierung bei jedem Stil zu wiederholen.
Schritt 7: Einen Stil erstellen oder kopieren
Rufen Sie StyleCollection.Add(type, name) mit einem StyleType (Paragraph, Character, Table oder List) und einem Namen auf, um einen neuen, leeren Stil zu erstellen, und setzen Sie anschließend seine Font- und ParagraphFormat-Eigenschaften nach Bedarf. Um einen bestehenden Stil zu duplizieren – einschließlich eines Stils aus dem StyleCollection eines anderen Document – rufen Sie StyleCollection.AddCopy(style) auf, anstatt jede Formatierungseigenschaft manuell zu lesen und erneut anzuwenden. Rufen Sie Style.Remove() auf, um einen Stil aus seiner Sammlung zu löschen.
Schritt 8: Tabellenstile und bedingte Formatierung konfigurieren
TableStyle erweitert Style um Tabellenlayout-Eigenschaften – Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment und die vier Innenabstand-Eigenschaften (LeftPadding, RightPadding, TopPadding, BottomPadding) – sowie RowStripe und ColumnStripe, die steuern, über wie viele Zeilen oder Spalten ein Bandmuster wiederholt wird. Für formatierungen pro Region konfigurieren Sie TableStyle.ConditionalStyles – ein ConditionalStyleCollection, das ein ConditionalStyle pro Region enthält: FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding und die vier Eckzellen (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Jede ConditionalStyle hat ihre eigenen Font, ParagraphFormat, Shading, Borders und Zellinnenabstand, wobei Type angibt, welche ConditionalStyleType-Region sie repräsentiert; formatieren Sie diese Regionen statt einzelner Tabellenzeilen, um banded, Kopfzeilen- oder Eckzellen-Formatierungen zu erhalten, die Tabellenbearbeitungen überstehen.
Schritt 9: Formatierung zurücksetzen oder entfernen
Rufen Sie ConditionalStyle.ClearFormatting() auf, um eine bedingte Region zurückzusetzen, oder ConditionalStyleCollection.ClearFormatting(), um alle Regionen auf einem TableStyle gleichzeitig zurückzusetzen. StyleCollection.ClearQuickStyleGallery() entfernt jeden Stil aus der Schnellformatvorlagen-Galerie der Word-Benutzeroberfläche, ohne die Stile selbst zu löschen – nützlich, um die Galerie zu verkleinern, ohne den Dokumentinhalt zu verändern.
Häufige Probleme und Lösungen
StyleCollection Indexer gibt bei einer Namenssuche null zurück Der Vorlagenname existiert in diesem Dokument nicht, oder eine integrierte Vorlage wurde noch nicht verwendet, sodass Word sie nicht materialisiert hat. Prüfen Sie Style.Aliases auf alternative Namen, oder verwenden Sie die StyleCollection Indexer mit einem StyleIdentifier für integrierte Stile stattdessen.
Das Setzen von StyleName erzeugt unerwartet einen neuen Stil StyleName erstellt den benannten Stil, falls er noch nicht in der Sammlung existiert. Verwenden Sie das StyleCollection Indexer zuerst, um zu bestätigen, dass der Stil existiert, oder weisen Sie den Style Objekt direkt über das Style Eigenschaft anstelle von StyleName.
Tabellenbanding erscheint nicht nach dem Anwenden eines TableStyle Die bedingten Formatierungsbereiche – OddRowBanding, EvenRowBanding, und ähnliche – wurden nie konfiguriert auf TableStyle.ConditionalStyles. Setzen Sie die Formatierung für die relevanten ConditionalStyle Einträge in ConditionalStyleCollection.
Eine Stiländerung wirkt sich nicht auf Inhalte aus, die den Stil bereits verwenden Direkte (manuelle) Formatierung, die über dem Stil angewendet wird, hat Vorrang vor den eigenen Einstellungen des Stils. Löschen Sie die direkte Formatierung bei den betroffenen Durchläufen oder Absätzen, oder setzen Sie Style.AutomaticallyUpdate damit der Stil sich selbst aus dieser manuellen Formatierung neu definiert.
Eine integrierte Stil-Suche schlägt in einem in einer anderen Sprache erstellten Dokument fehl Der StyleCollection Der Indexer stimmt mit dem Anzeigenamen überein, der lokalisiert ist, wenn er mit einem Namen aufgerufen wird. Verwenden Sie denselben Indexer mit dem entsprechenden StyleIdentifier Enum-Wert stattdessen, da dieser Bezeichner sprachunabhängig ist.
Häufig gestellte Fragen
Wie erhalte ich die Sammlung aller Stile in einem Dokument?
Lesen Sie Document.Styles, das ein StyleCollection zurückgibt, das jeden integrierten und benutzerdefinierten Style in diesem Dokument enthält.
Was ist der Unterschied zwischen Style und StyleIdentifier?
Style ist das eigentliche Style-Objekt mit seiner Formatierung; StyleIdentifier ist ein sprachunabhängiger Enum-Wert, der über den StyleCollection-Indexer verwendet wird, um einen bestimmten integrierten Stil unabhängig von der Sprache des Dokuments nachzuschlagen.
Wie unterscheiden sich Tabellenstile von Absatz- oder Zeichenstilen?
TableStyle ist eine Unterklasse von Style, die Tabellen-Layout-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 zutreffen.
Kann ich einen brandneuen Style 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 Style zu erstellen, und setzen Sie anschließend seine Formatierungseigenschaften (Font, ParagraphFormat usw. für Absatz- oder Zeichenstile).
Wie kann ich einen Style duplizieren, einschließlich aus einem anderen Dokument?
Rufen Sie StyleCollection.AddCopy(style) auf und übergeben ein Style-Objekt – das aus dem StyleCollection eines anderen Document stammen kann – um eine Kopie davon zur Zielsammlung hinzuzufügen.