Lucrul cu stiluri
Lucrul cu stiluri
Acest ghid arată cum să lucrați cu stiluri de paragraf, caracter, tabel și listă în Aspose.Words FOSS pentru .NET — căutarea și aplicarea stilurilor încorporate și personalizate, și configurarea formatării condiționate pe regiune pentru stilurile de tabel.
Un obiect Style reprezintă un singur stil încorporat sau definit de utilizator — colecţia numită de formatare a paragrafelor, fonturilor şi listelor pe care Word o aplică când un paragraf sau un run este atribuit acelui stil. Fiecare document expune stilurile prin proprietatea Document.Styles, care returnează un StyleCollection. Stilurile de tabel sunt reprezentate de TableStyle, o subclasă a Style care adaugă formatare specifică tabelului şi formatare condiţională pe regiuni prin ConditionalStyleCollection.
Tipuri de stil și identificare
Fiecare Style are o proprietate Type de tip StyleType, care este una dintre Paragraph, Character, Table sau List — corespunzătoare celor patru tipuri de stiluri pe care le suportă Word. Stilurile încorporate au, de asemenea, o valoare enum StyleIdentifier independentă de locală (de exemplu valori care corespund stilurilor de titluri, accentuare și hyperlink) astfel încât codul poate căuta un stil încorporat fără a depinde de numele său afișat într-o anumită limbă. Numele lizibil al unui stil este disponibil prin Style.Name, iar Style.Aliases returnează orice nume alternativ pe care Word îl recunoaște pentru același stil. Style.BuiltIn raportează dacă stilul este livrat împreună cu Word însuși versus dacă este definit în document, iar Style.IsHeading raportează dacă stilul este unul dintre stilurile de titlu încorporate.
Accesarea și gestionarea colecției de stiluri
StyleCollection este colecţia tuturor obiectelor Style — încorporate şi personalizate — ataşate unui document, accesată prin Document.Styles. Recuperaţi un stil prin numele său afișat utilizând indexatorul StyleCollection — styles[name] — sau recuperaţi un stil încorporat prin StyleIdentifier independent de locală utilizând acelaşi indexator — styles[sti] — care este mai fiabil decât căutarea după nume în documente create în diferite limbi. Stilurile noi sunt create cu StyleCollection.Add(type, name), specificând StyleType și un nume, iar un stil existent poate fi duplicat în colecție cu StyleCollection.AddCopy(style). StyleCollection.Count raportează câte stiluri conţine documentul, iar colecţia expune şi DefaultFont şi DefaultParagraphFormat, care descriu formatarea implicită la nivelul întregului document pe care conţinutul nou o moşteneşte înainte de a se aplica vreun stil explicit. StyleCollection.ClearQuickStyleGallery() elimină toate stilurile din galeria rapidă de stiluri a interfeţei Word fără a şterge stilurile în sine.
Aplicarea stilurilor la paragrafe și ruluri
Obiectele de formatare care pot purta un stil expun atât o proprietate Style (obiectul Style în sine), cât și o proprietate StyleName (o scurtătură care rezolvă sau creează un stil după nume). ParagraphFormat.Style și ParagraphFormat.StyleName aplică un stil de paragraf, în timp ce Font.Style și Font.StyleName aplică un stil de caracter la formatarea unui run. Proprietățile proprii ale unui stil LinkedStyleName, BaseStyleName și NextParagraphStyleName descriu cum se raportează la alte stiluri: BaseStyleName denumește stilul de la care moștenește formatarea nedefinită, LinkedStyleName denumește un stil de paragraf/caracter asociat (așa cum Word face pentru stilurile încorporate, cum ar fi Titlu 1 și stilul său de caracter legat), și NextParagraphStyleName denumește stilul pe care Word îl atribuie unui paragraf nou tastat după unul care folosește acest stil.
Stiluri de tabel și formatare condițională
TableStyle extinde Style cu proprietăți de aspect al tabelului, cum ar fi Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment și spațierea (LeftPadding, RightPadding, TopPadding, BottomPadding), plus RowStripe și ColumnStripe, care controlează peste câte rânduri sau coloane se repetă un model de bandă. Dincolo de formatarea uniformă a tabelului, TableStyle.ConditionalStyles returnează un ConditionalStyleCollection care conține un ConditionalStyle pentru fiecare regiune a tabelului — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding și cele patru celule de colț (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Fiecare ConditionalStyle are propriile sale Font, ParagraphFormat, Shading, Borders și spațierea celulei, iar proprietatea sa Type raportează ce regiune ConditionalStyleType reprezintă. ConditionalStyle.ClearFormatting() și ConditionalStyleCollection.ClearFormatting() resetează formatarea pentru o regiune sau pentru întregul set de regiuni condiționale.
Metadate ale stilului și indicatori de comportament
Câteva proprietăți booleene și numerice ale Style controlează modul în care Word tratează un stil în interfața sa, nu modul în care îl redă: Locked împiedică modificarea stilului când protecția de formatare este activă, IsQuickStyle controlează dacă apare în galeria rapidă de stiluri, AutomaticallyUpdate face ca stilul să se redefiniească din formatarea directă aplicată manual, SemiHidden și UnhideWhenUsed controlează vizibilitatea în lista de stiluri înainte și după prima utilizare, iar Priority influențează ordinea de sortare în galerie. Un stil expune, de asemenea, proprietățile List și ListFormat când definește numerotarea listelor, și Style.Remove() șterge stilul din StyleCollection.
Sfaturi și bune practici
- Preferă indexatorul
StyleCollectioncu o valoareStyleIdentifierîn loc să cauți după nume când găsești un stil încorporat — numele sunt localizate, dar valorileStyleIdentifiernu sunt. - Setați
BaseStyleNamepentru a crea ierarhii de stiluri (de exemplu, un set de stiluri de titluri care moștenesc toate alegerile de font dintr-un stil de bază) în loc să repetați formatarea la fiecare stil. - Când copiați un stil între documente, utilizați
StyleCollection.AddCopy(style)în loc să citiți și să reaplicați manual fiecare proprietate de formatare. - Configurați regiunile
TableStyle.ConditionalStylespentru tabele în dungi în loc să formatați manual rândurile alternante în cod — formatarea fiecărei regiuniConditionalStyleeste aplicată în funcție deConditionalStyleType, în loc să se seteze formatarea directă pe rânduri individuale. - Verificați
Style.BuiltInînainte de a elimina sau redenumi un stil programatic; stilurile încorporate sunt de obicei referențiate prin nume în alte părți ale documentului.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
StyleCollection indexer returnează null pentru o căutare de nume | Numele stilului nu există în acest document, sau un stil încorporat nu a fost încă utilizat, astfel încât Word nu l-a materializat încă | Verificați Style.Aliases pentru nume alternative, sau folosiți indexatorul StyleCollection cu un StyleIdentifier pentru stiluri încorporate în schimb |
Setarea StyleName creează în mod neașteptat un stil nou | StyleName creează stilul denumit dacă acesta nu există deja în colecție | Utilizați mai întâi indexatorul StyleCollection pentru a confirma că stilul există, sau atribuiți obiectul Style direct prin proprietatea Style |
Bandarea tabelului nu apare după aplicarea unui TableStyle | Regiunile de formatare condițională (OddRowBanding, EvenRowBanding și altele) nu au fost niciodată configurate pe TableStyle.ConditionalStyles | Setați formatarea pe intrările relevante ConditionalStyle din ConditionalStyleCollection |
| O modificare de stil nu afectează conținutul care deja utilizează stilul | Formatarea directă (manuală) a fost aplicată peste stil și are prioritate | Eliminați formatarea directă pe segmentele/paragrafele afectate sau setați Style.AutomaticallyUpdate |
FAQ
Cum pot obține colecția tuturor stilurilor dintr-un document?
Citiți Document.Styles, care returnează un StyleCollection ce conține fiecare Style încorporat și definit de utilizator în acel document.
Care este diferența dintre Style și StyleIdentifier?
Style este obiectul de stil real cu formatarea sa; StyleIdentifier este o valoare enum independentă de limbă utilizată pentru a căuta un anumit încorporat stil, indiferent de limba documentului, prin StyleCollection indexatorul.
Cum diferă stilurile de tabel de stilurile de paragraf sau de caracter?
TableStyle este o subclasă a Style care adaugă proprietăți de aspect ale tabelului (Alignment, CellSpacing, padding) și o colecție ConditionalStyles pentru formatare specifică regiunii, cum ar fi rânduri grupate, rânduri de antet și celule de colț — concepte de formatare care nu se aplică stilurilor de paragraf sau de caracter.
Pot crea un stil complet nou în loc să modific unul existent?
Da — apelează StyleCollection.Add(type, name) cu StyleType dorit și un nume nou pentru a crea un stil gol, apoi setează proprietățile sale de formatare (Font, ParagraphFormat, și așa mai departe pentru stilurile de paragraf/caracter).
Cum pot duplica un stil, inclusiv dintr-un alt document?
Folosește StyleCollection.AddCopy(style), trecând un obiect Style (care poate proveni dintr-un StyleCollection al unui alt Document) pentru a adăuga o copie a acestuia în colecția țintă.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
Style | Un singur stil de paragraf, caracter, tabel sau listă, încorporat sau definit de utilizator |
StyleCollection | Colecția tuturor stilurilor dintr-un document, accesată prin Document.Styles |
StyleCollection indexer pe nume | Caută un stil după numele său afișat, de exemplu styles["Heading 1"] |
StyleCollection indexer pe identificator | Caută un stil încorporat după identificatorul independent de limbă, de exemplu styles[StyleIdentifier.Heading1] |
StyleCollection.Add(type, name) | Creează un stil nou, gol pentru StyleType dat |
StyleCollection.AddCopy(style) | Copiază un stil existent în această colecție |
StyleType | Enum care diferențiază stilurile Paragraph, Character, Table și List |
StyleIdentifier | Identificator independent de locală pentru un stil încorporat |
TableStyle | O subclasă Style pentru formatarea tabelelor, inclusiv stilizare condițională pe regiune |
ConditionalStyleCollection | Setul de intrări ConditionalStyle pe regiune ale unui TableStyle |
ConditionalStyle | Formatare (font, format de paragraf, umbrire, margini, spațiere) pentru o regiune de tabel |
ConditionalStyleType | Enum care identifică regiunea tabelului la care se aplică ConditionalStyle |