Jak pracować ze stylami w .NET
Ten przewodnik pokazuje, jak wyszukiwać, stosować i tworzyć style akapitów, znaków, tabel oraz list w Aspose.Words FOSS dla .NET, używając Style, StyleCollection, oraz TableStyle klasy. Obejmuje to odczytywanie kolekcji stylów dokumentu, niezawodne wyszukiwanie stylów w różnych językach, stosowanie stylów do akapitów i fragmentów, tworzenie i kopiowanie stylów oraz konfigurowanie warunkowego formatowania regionalnego w stylach tabel.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
Aspose.Words FOSS for .NET nie opublikował jeszcze pakietu NuGet – zamiast tego zbuduj bibliotekę ze źródeł. Sklonuj https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, a następnie zbuduj Aspose.Words.sln w konfiguracji Release przy użyciu zestawu SDK .NET i odwołaj się do powstałego zestawu Aspose.Words w swoim projekcie. Biblioteka jest skierowana na .NET Standard 2.0, więc działa na .NET Framework 4.6.2+ oraz .NET 6/8/10.
Krok 2: Importuj wymagane klasy
Dodaj dyrektywę using Aspose.Words; – Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection i ConditionalStyleType znajdują się wszystkie w przestrzeni nazw Aspose.Words obok Document.
Krok 3: Odczytaj kolekcję stylów dokumentu
Document.Styles zwraca StyleCollection – każdy wbudowany i definiowany przez użytkownika Style dołączony do dokumentu. StyleCollection.Count raportuje, ile stylów zawiera, a DefaultFont / DefaultParagraphFormat opisują domyślne formatowanie obowiązujące w całym dokumencie, które nowa zawartość dziedziczy przed zastosowaniem jakiegokolwiek jawnego stylu.
Krok 4: Niezawodnie znajdź styl
Pobierz styl według jego nazwy wyświetlanej przy użyciu indeksatora StyleCollection, styles[name]. Dla wbudowanych stylów lepiej używać tego samego indeksatora z wartością wyliczeniową StyleIdentifier zamiast – styles[sti] – nazwy są lokalizowane, ale wartości StyleIdentifier nie, więc wyszukiwanie po identyfikatorze działa tak samo, niezależnie od języka dokumentu. Sprawdź Style.Aliases pod kątem alternatywnych nazw, które Word rozpoznaje dla tego samego stylu, jeśli indeksator nie znajdzie tego, czego oczekujesz, oraz sprawdź Style.BuiltIn przed usunięciem lub zmianą nazwy stylu programowo, ponieważ wbudowane style są często odwoływane po nazwie w innych częściach dokumentu.
Krok 5: Zastosuj styl do akapitów lub fragmentów
Obiekty formatowania, które niosą 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 po nazwie). Ustaw ParagraphFormat.Style lub ParagraphFormat.StyleName, aby zastosować styl akapitu, oraz Font.Style lub Font.StyleName, aby zastosować styl znakowy do formatowania fragmentu. Przypisanie StyleName z nazwą, która nie istnieje jeszcze w kolekcji, tworzy ten styl – najpierw potwierdź, że styl istnieje przy użyciu indeksatora StyleCollection, lub przypisz obiekt Style bezpośrednio, jeśli takie zachowanie nie jest zamierzone.
Krok 6: Buduj hierarchie stylów
Odczytaj BaseStyleName, aby znaleźć styl, z którego dany styl dziedziczy nieustawione formatowanie, LinkedStyleName dla sparowanego stylu akapitu/znaku (zgodnie z definicją Worda dla wbudowanych stylów, takich jak nagłówek i powiązany z nim styl znakowy) oraz NextParagraphStyleName dla stylu, który Word przypisuje nowemu akapitowi wpisanemu po tym używającym tego stylu. Ustaw BaseStyleName przy definiowaniu zestawu powiązanych stylów – na przykład rodziny stylów nagłówków, które wszystkie powinny dziedziczyć wybory czcionek z jednego stylu bazowego – zamiast powtarzać to samo formatowanie w każdym stylu.
Krok 7: Utwórz lub skopiuj styl
Wywołaj StyleCollection.Add(type, name) z StyleType (Paragraph, Character, Table lub List) oraz nazwą, aby utworzyć nowy, pusty styl, a następnie ustaw jego właściwości Font i ParagraphFormat w razie potrzeby. Aby zduplikować istniejący styl — w tym z StyleCollection innego Document — wywołaj StyleCollection.AddCopy(style) zamiast ręcznie odczytywać i ponownie stosować każdą właściwość formatowania. Wywołaj Style.Remove(), aby usunąć styl z jego kolekcji.
Krok 8: Konfiguruj style tabel i formatowanie warunkowe
TableStyle rozszerza Style o właściwości układu tabeli — Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment oraz cztery właściwości wypełnienia (LeftPadding, RightPadding, TopPadding, BottomPadding) — plus RowStripe i ColumnStripe, które kontrolują, ile wierszy lub kolumn powtarza się wzorzec paskowania. Do formatowania per-region, skonfiguruj TableStyle.ConditionalStyles — ConditionalStyleCollection zawierający po jednym ConditionalStyle na region: 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 wypełnienie komórki, przy czym Type informuje, który region ConditionalStyleType reprezentuje; ustaw formatowanie na tych regionach zamiast na poszczególnych wierszach tabeli, aby uzyskać paskowane, nagłówkowe lub narożne formatowanie komórek, które przetrwa edycje tabeli.
Krok 9: Resetuj lub usuń formatowanie
Wywołaj ConditionalStyle.ClearFormatting(), aby zresetować jeden region warunkowy, lub ConditionalStyleCollection.ClearFormatting(), aby jednocześnie zresetować wszystkie regiony w TableStyle. StyleCollection.ClearQuickStyleGallery() usuwa każdy styl z galerii szybkich stylów w interfejsie Worda, nie usuwając samych stylów — przydatne do ograniczenia galerii bez modyfikacji zawartości dokumentu.
Typowe problemy i rozwiązania
StyleCollection indeksator zwraca null przy wyszukiwaniu nazwy Nazwa stylu nie istnieje w tym dokumencie, lub wbudowany styl nie został jeszcze użyty, więc Word nie zmaterializował go. Sprawdź Style.Aliases dla alternatywnych nazw, lub użyj the StyleCollection indeksator z StyleIdentifier dla wbudowanych stylów zamiast tego.
Ustawienie StyleName nieoczekiwanie tworzy nowy styl StyleName tworzy nazwany styl, jeśli nie istnieje już w kolekcji. Użyj StyleCollection najpierw indeksatora, aby potwierdzić, że styl istnieje, lub przypisz Style obiekt bezpośrednio przez Style właściwość zamiast StyleName.
Paskowanie tabeli nie pojawia się po zastosowaniu TableStyle Regiony formatowania warunkowego – OddRowBanding, EvenRowBanding, oraz podobne – nigdy nie zostały skonfigurowane w TableStyle.ConditionalStyles. Ustaw formatowanie w odpowiednich ConditionalStyle wpisach w ConditionalStyleCollection.
Zmiana stylu nie wpływa na treść, która już używa tego stylu Bezpośrednie (ręczne) formatowanie zastosowane na stylu ma pierwszeństwo przed własnymi ustawieniami stylu. Usuń bezpośrednie formatowanie w dotkniętych fragmentach lub akapitach, lub ustaw Style.AutomaticallyUpdate tak, aby styl ponownie zdefiniował się na podstawie tego ręcznego formatowania.
Wbudowane wyszukiwanie stylu nie powodzi się w dokumencie utworzonym w innym języku Ten StyleCollection indeksator dopasowuje się do nazwy wyświetlanej, która jest lokalizowana, gdy wywoływany jest z nazwą. Użyj tego samego indeksatora z odpowiadającą StyleIdentifier wartością wyliczenia zamiast tego, ponieważ ten identyfikator jest niezależny od ustawień regionalnych.
Najczęściej zadawane pytania
Jak uzyskać kolekcję wszystkich stylów w dokumencie?
Przeczytaj 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 lokalizacji wartością wyliczeniową używaną do wyszukiwania konkretnego wbudowanego stylu niezależnie od języka dokumentu, za pośrednictwem indeksatora StyleCollection.
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 do formatowania specyficznego dla regionu, takiego jak wiersze pasowane, wiersze nagłówka i komórki narożne — koncepcje formatowania, które nie mają zastosowania do stylów akapitu lub 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 lub znakowych).
Jak mogę zduplikować styl, w tym z innego dokumentu?
Wywołaj StyleCollection.AddCopy(style), przekazując obiekt Style — który może pochodzić z StyleCollection innego Document — aby dodać jego kopię do docelowej kolekcji.