Praca ze stylami
Praca ze stylami
Ten przewodnik pokazuje, jak pracować ze stylami akapitu, znaku, tabeli i listy w Aspose.Words FOSS dla .NET — przeglądanie i stosowanie wbudowanych i niestandardowych stylów oraz konfigurowanie formatowania warunkowego per-region w stylach tabel.
Obiekt Style reprezentuje pojedynczy wbudowany lub definiowany przez użytkownika styl — nazwany zestaw formatowania akapitu, czcionki i listy, które Word stosuje, gdy akapit lub fragment tekstu jest przypisany do tego stylu. Każdy dokument udostępnia swoje style poprzez własność Document.Styles, która zwraca StyleCollection. Style tabel są reprezentowane przez TableStyle, podklasę Style, która dodaje formatowanie specyficzne dla tabel oraz formatowanie warunkowe per-regionowe za pomocą ConditionalStyleCollection.
Typy stylów i identyfikacja
Każdy Style posiada własność Type typu StyleType, która jest jedną z Paragraph, Character, Table lub List — odpowiadającą czterem rodzajom stylów obsługiwanych przez Word. Wbudowane style posiadają także niezależną od ustawień regionalnych wartość wyliczeniową StyleIdentifier (na przykład wartości odpowiadające stylom nagłówków, wyróżnień i hiperłączy), co umożliwia kodowi wyszukiwanie wbudowanego stylu bez zależności od jego wyświetlanej nazwy w danym języku. Czytelna dla człowieka nazwa stylu jest dostępna poprzez Style.Name, a Style.Aliases zwraca wszelkie alternatywne nazwy rozpoznawane przez Word dla tego samego stylu. Style.BuiltIn informuje, czy styl jest dostarczany razem z Wordem, czy jest zdefiniowany w dokumencie, a Style.IsHeading informuje, czy styl jest jednym z wbudowanych stylów nagłówków.
Uzyskiwanie dostępu i zarządzanie kolekcją stylów
StyleCollection jest zbiorcą wszystkich obiektów Style — wbudowanych i niestandardowych — przypisanych do dokumentu, dostępnych poprzez Document.Styles. Pobierz styl według jego wyświetlanej nazwy używając indeksatora StyleCollection — styles[name] — lub pobierz wbudowany styl według jego niezależnej od ustawień regionalnych StyleIdentifier przy użyciu tego samego indeksatora — styles[sti] — co jest bardziej niezawodne niż wyszukiwanie po nazwie w dokumentach tworzonych w różnych językach. Nowe style są tworzone za pomocą StyleCollection.Add(type, name), określając StyleType i nazwę, a istniejący styl można zduplikować w kolekcji przy użyciu StyleCollection.AddCopy(style). StyleCollection.Count podaje, ile stylów zawiera dokument, a kolekcja udostępnia także DefaultFont i DefaultParagraphFormat, które opisują domyślne formatowanie obowiązujące w całym dokumencie, które nowa treść dziedziczy przed zastosowaniem jakiegokolwiek wyraźnego stylu. StyleCollection.ClearQuickStyleGallery() usuwa wszystkie style z galerii szybkich stylów interfejsu Worda bez usuwania samych stylów.
Stosowanie stylów do akapitów i fragmentów
Obiekty formatowania, które mogą nosić styl, udostępniają zarówno właściwość Style (sam obiekt Style), jak i właściwość StyleName (skrót, który rozwiązuje lub tworzy styl na podstawie nazwy). ParagraphFormat.Style i ParagraphFormat.StyleName stosują styl akapitu, podczas gdy Font.Style i Font.StyleName stosują styl znakowy do formatowania fragmentu. Własne właściwości stylu LinkedStyleName, BaseStyleName i NextParagraphStyleName opisują jego relacje z innymi stylami: BaseStyleName określa nazwę stylu, z którego dziedziczy nieustawione formatowanie, LinkedStyleName określa sparowany styl akapitu/znaku (tak jak Word robi to dla wbudowanych stylów, takich jak Nagłówek 1 i powiązanego z nim stylu znakowego), a NextParagraphStyleName określa nazwę stylu, który Word przypisuje nowemu akapitowi wpisanemu po akapicie używającym tego stylu.
Style tabel i formatowanie warunkowe
TableStyle rozszerza Style o właściwości układu tabeli, takie jak Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment oraz odstępy (LeftPadding, RightPadding, TopPadding, BottomPadding), plus RowStripe i ColumnStripe, które kontrolują, na ilu wierszach lub kolumnach powtarza się wzorzec paskowania. Poza jednolitym formatowaniem tabeli, TableStyle.ConditionalStyles zwraca ConditionalStyleCollection zawierający jeden ConditionalStyle dla każdego regionu tabeli — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding oraz cztery komórki narożne (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Każdy ConditionalStyle posiada własne Font, ParagraphFormat, Shading, Borders oraz odstępy komórek, a jego właściwość Type informuje, który region ConditionalStyleType reprezentuje. ConditionalStyle.ClearFormatting() i ConditionalStyleCollection.ClearFormatting() resetują formatowanie dla jednego regionu lub całego zestawu regionów warunkowych.
Metadane stylu i flagi zachowania
Kilka właściwości logicznych i liczbowych w Style kontroluje, jak Word traktuje styl w interfejsie użytkownika, a nie jak jest renderowany: Locked uniemożliwia zmianę stylu, gdy ochrona formatowania jest aktywna, IsQuickStyle decyduje, czy styl pojawia się w galerii szybkich stylów, AutomaticallyUpdate powoduje, że styl redefiniuje się na podstawie ręcznie zastosowanego formatowania bezpośredniego, SemiHidden i UnhideWhenUsed kontrolują widoczność w liście stylów przed i po pierwszym użyciu, a Priority wpływa na kolejność sortowania w galerii. Styl udostępnia także właściwości List i ListFormat, gdy definiuje numerację listy, oraz Style.Remove() usuwa styl z jego StyleCollection.
Wskazówki i najlepsze praktyki
- Preferuj indeksator
StyleCollectionz wartościąStyleIdentifierzamiast wyszukiwania po nazwie przy znajdowaniu wbudowanego stylu — nazwy są lokalizowane, ale wartościStyleIdentifiernie. - Ustaw
BaseStyleName, aby budować hierarchie stylów (na przykład zestaw stylów nagłówków, które wszystkie dziedziczą wybory czcionek z jednego stylu bazowego) zamiast powtarzać formatowanie w każdym stylu. - Podczas kopiowania stylu między dokumentami, użyj
StyleCollection.AddCopy(style)zamiast ręcznego odczytywania i ponownego stosowania każdej właściwości formatowania. - Skonfiguruj regiony
TableStyle.ConditionalStylesdla tabel paskowanych zamiast ręcznie formatować naprzemienne wiersze w kodzie — formatowanie każdego regionuConditionalStylejest stosowane na podstawie jegoConditionalStyleType, a nie poprzez bezpośrednie ustawianie formatowania na poszczególnych wierszach. - Sprawdź
Style.BuiltInprzed programowym usunięciem lub zmianą nazwy stylu; wbudowane style są zazwyczaj odwoływane po nazwie w innych miejscach dokumentu.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
StyleCollection indeksator zwraca null dla wyszukiwania nazwy | Nazwa stylu nie istnieje w tym dokumencie, lub wbudowany styl nie został jeszcze użyty, więc Word go nie zmaterializował. | Sprawdź Style.Aliases pod kątem alternatywnych nazw lub użyj indeksatora StyleCollection z StyleIdentifier dla wbudowanych stylów zamiast |
Ustawienie StyleName nieoczekiwanie tworzy nowy styl | StyleName tworzy nazwany styl, jeśli nie istnieje jeszcze w kolekcji | Najpierw użyj indeksatora StyleCollection, aby potwierdzić, że styl istnieje, lub przypisz obiekt Style bezpośrednio przez własność Style |
Zabarwienie tabeli nie pojawia się po zastosowaniu TableStyle | Regiony formatowania warunkowego (OddRowBanding, EvenRowBanding i tak dalej) nigdy nie zostały skonfigurowane w TableStyle.ConditionalStyles | Ustaw formatowanie w odpowiednich wpisach ConditionalStyle w ConditionalStyleCollection |
| Zmiana stylu nie wpływa na treść, która już używa tego stylu | Bezpośrednie (ręczne) formatowanie zostało zastosowane na stylu i ma pierwszeństwo | Wyczyść bezpośrednie formatowanie w dotkniętych fragmentach/akapity, lub ustaw Style.AutomaticallyUpdate |
FAQ
Jak uzyskać kolekcję wszystkich stylów w dokumencie?
Odczytaj Document.Styles, który zwraca StyleCollection zawierający wszystkie wbudowane i zdefiniowane przez użytkownika Style w tym dokumencie.
Jaka jest różnica między Style a StyleIdentifier?
Style jest rzeczywistym obiektem stylu wraz z jego formatowaniem; StyleIdentifier jest niezależną od ustawień regionalnych wartością wyliczeniową używaną do wyszukiwania określonego wbudowanego stylu niezależnie od języka dokumentu, za pośrednictwem StyleCollection indeksatora.
Jak style tabel różnią się od stylów akapitu lub znakowych?
TableStyle jest podklasą Style, która dodaje właściwości układu tabeli (Alignment, CellSpacing, padding) oraz kolekcję ConditionalStyles służącą do formatowania zależnego od regionu, takiego jak wiersze paskowane, wiersze nagłówka i komórki narożne — koncepcje formatowania, które nie mają zastosowania w stylach akapitu ani znakowych.
Czy mogę utworzyć zupełnie nowy styl zamiast modyfikować istniejący?
Tak — wywołaj StyleCollection.Add(type, name) z żądanym StyleType i nową nazwą, aby utworzyć pusty styl, a następnie ustaw jego właściwości formatowania (Font, ParagraphFormat i tak dalej dla stylów akapitu/znakowych).
Jak mogę zduplikować styl, w tym z innego dokumentu?
Użyj StyleCollection.AddCopy(style), przekazując obiekt Style (który może pochodzić z StyleCollection innego Document), aby dodać jego kopię do docelowej kolekcji.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Style | Pojedynczy wbudowany lub definiowany przez użytkownika styl akapitu, znaku, tabeli lub listy |
StyleCollection | Zbiór wszystkich stylów w dokumencie, dostępny poprzez Document.Styles |
Indeksator StyleCollection według nazwy | Wyszukaj styl według jego wyświetlanej nazwy, np. styles["Heading 1"] |
Indeksator StyleCollection według identyfikatora | Wyszukaj wbudowany styl według niezależnego od ustawień regionalnych identyfikatora, np. styles[StyleIdentifier.Heading1] |
StyleCollection.Add(type, name) | Utwórz nowy, pusty styl podanego StyleType |
StyleCollection.AddCopy(style) | Skopiuj istniejący styl do tej kolekcji |
StyleType | Wyliczenie rozróżniające style Paragraph, Character, Table i List |
StyleIdentifier | Identyfikator niezależny od ustawień regionalnych dla wbudowanego stylu |
TableStyle | Podklasa Style do formatowania tabel, w tym warunkowego stylowania poszczególnych regionów |
ConditionalStyleCollection | Zestaw wpisów ConditionalStyle dla poszczególnych regionów na TableStyle |
ConditionalStyle | Formatowanie (czcionka, format akapitu, cieniowanie, obramowania, wypełnienie) jednego regionu tabeli |
ConditionalStyleType | Enum określający, do którego regionu tabeli odnosi się ConditionalStyle |