Lavorare con gli Stili

Lavorare con gli Stili

Lavorare con gli Stili

Questa guida mostra come lavorare con gli stili di paragrafo, carattere, tabella e elenco in Aspose.Words FOSS per .NET — ricerca e applicazione di stili predefiniti e personalizzati, e configurazione della formattazione condizionale per regione sugli stili di tabella.

Un oggetto Style rappresenta un singolo stile predefinito o definito dall’utente — la raccolta nominata di formattazione di paragrafi, caratteri e elenchi che Word applica quando un paragrafo o una sequenza è assegnato a quello stile. Ogni documento espone i propri stili tramite la proprietà Document.Styles, che restituisce un StyleCollection. Gli stili di tabella sono rappresentati da TableStyle, una sottoclasse di Style che aggiunge formattazione specifica per tabelle e formattazione condizionale per regione tramite ConditionalStyleCollection.


Tipi di Stile e Identificazione

Ogni Style ha una proprietà Type di tipo StyleType, che è una tra Paragraph, Character, Table o List — corrispondente ai quattro tipi di stili supportati da Word. Gli stili predefiniti includono anche un valore enum StyleIdentifier indipendente dalla lingua (ad esempio valori corrispondenti a titoli, enfasi e stili di collegamento ipertestuale) in modo che il codice possa cercare uno stile predefinito senza dipendere dal suo nome visualizzato in una lingua specifica. Il nome leggibile dall’utente di uno stile è disponibile tramite Style.Name, e Style.Aliases restituisce eventuali nomi alternativi che Word riconosce per lo stesso stile. Style.BuiltIn indica se lo stile è fornito con Word stesso rispetto a essere definito nel documento, e Style.IsHeading indica se lo stile è uno dei tipi di titolo predefiniti.

Accesso e Gestione della Raccolta di Stili

StyleCollection è la raccolta di tutti gli oggetti Style — predefiniti e personalizzati — associati a un documento, accessibile tramite Document.Styles. Recupera uno stile per il suo nome visualizzato usando l’indicizzatore StyleCollection — styles[name] — o recupera uno stile predefinito per il suo valore StyleIdentifier indipendente dalla lingua usando lo stesso indicizzatore — styles[sti] —, il che è più affidabile rispetto alla ricerca per nome tra documenti redatti in lingue diverse. I nuovi stili vengono creati con StyleCollection.Add(type, name), specificando il StyleType e un nome, e uno stile esistente può essere duplicato nella raccolta con StyleCollection.AddCopy(style). StyleCollection.Count indica quante stilistiche contiene il documento, e la raccolta espone anche DefaultFont e DefaultParagraphFormat, che descrivono la formattazione predefinita a livello di documento che il nuovo contenuto eredita prima che venga applicato uno stile esplicito. StyleCollection.ClearQuickStyleGallery() rimuove tutti gli stili dalla galleria rapida degli stili dell’interfaccia di Word senza eliminare gli stessi stili.

Applicare gli stili a paragrafi e run

Oggetti di formattazione che possono contenere uno stile espongono sia una proprietà Style (l’oggetto Style stesso) sia una proprietà StyleName (una scorciatoia che risolve o crea uno stile per nome). ParagraphFormat.Style e ParagraphFormat.StyleName applicano uno stile di paragrafo, mentre Font.Style e Font.StyleName applicano uno stile di carattere alla formattazione di un run. Le proprie proprietà LinkedStyleName, BaseStyleName e NextParagraphStyleName di uno stile descrivono come si relaziona ad altri stili: BaseStyleName indica il nome dello stile da cui eredita la formattazione non impostata, LinkedStyleName indica lo stile di paragrafo/carattere associato (come Word fa per gli stili predefiniti come Titolo 1 e il suo stile di carattere collegato), e NextParagraphStyleName indica lo stile che Word assegna a un nuovo paragrafo digitato dopo uno che utilizza questo stile.

Stili di tabella e formattazione condizionale

TableStyle estende Style con proprietà di layout della tabella come Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment e padding (LeftPadding, RightPadding, TopPadding, BottomPadding), oltre a RowStripe e ColumnStripe, che controllano su quante righe o colonne si ripete un modello di bande. Oltre alla formattazione uniforme della tabella, TableStyle.ConditionalStyles restituisce un ConditionalStyleCollection contenente un ConditionalStyle per ogni regione della tabella — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding e le quattro celle d’angolo (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Ogni ConditionalStyle possiede i propri Font, ParagraphFormat, Shading, Borders e padding della cella, e la sua proprietà Type indica quale regione ConditionalStyleType rappresenta. ConditionalStyle.ClearFormatting() e ConditionalStyleCollection.ClearFormatting() reimpostano la formattazione per una regione o per l’intero insieme di regioni condizionali.

Metadati dello stile e flag di comportamento

Diverse proprietà booleane e numeriche su Style controllano come Word gestisce uno stile nella sua interfaccia utente piuttosto che come lo rende: Locked impedisce che lo stile venga modificato quando la protezione della formattazione è attiva, IsQuickStyle controlla se appare nella galleria rapida degli stili, AutomaticallyUpdate fa sì che lo stile si ridefinisca a partire dalla formattazione diretta applicata manualmente, SemiHidden e UnhideWhenUsed controllano la visibilità nell’elenco degli stili prima e dopo il primo utilizzo, e Priority influisce sull’ordine di ordinamento nella galleria. Uno stile espone inoltre le proprietà List e ListFormat quando definisce la numerazione delle liste, e Style.Remove() elimina lo stile dal suo StyleCollection.


Suggerimenti e migliori pratiche

  • Preferisci l’indicizzatore StyleCollection con un valore StyleIdentifier piuttosto che cercare per nome quando trovi uno stile predefinito — i nomi sono localizzati, ma i valori StyleIdentifier no.
  • Imposta BaseStyleName per creare gerarchie di stile (ad esempio, un insieme di stili di intestazione che ereditano tutti le scelte di carattere da uno stile base) invece di ripetere la formattazione su ogni stile.
  • Quando copi uno stile tra documenti, utilizza StyleCollection.AddCopy(style) anziché leggere e riapplicare manualmente ogni proprietà di formattazione.
  • Configura le regioni TableStyle.ConditionalStyles per tabelle a bande invece di formattare manualmente le righe alternate nel codice — la formattazione di ogni regione ConditionalStyle viene applicata in base al suo ConditionalStyleType, piuttosto che impostare una formattazione diretta sulle singole righe.
  • Verifica Style.BuiltIn prima di rimuovere o rinominare uno stile in modo programmatico; gli stili predefiniti sono solitamente referenziati per nome altrove nel documento.

Problemi comuni

ProblemaCauseCorrezione
StyleCollection indexer restituisce null per una ricerca di nomeIl nome dello stile non esiste in questo documento, o uno stile predefinito non è stato ancora utilizzato, quindi Word non lo ha ancora materializzato.Verifica Style.Aliases per i nomi alternativi, oppure usa l’indicizzatore StyleCollection con un StyleIdentifier per gli stili incorporati
Impostare StyleName crea inaspettatamente un nuovo stileStyleName crea lo stile nominato se non esiste già nella raccoltaUsa prima l’indicizzatore StyleCollection per confermare che lo stile esista, oppure assegna direttamente l’oggetto Style tramite la proprietà Style
La bandeatura della tabella non appare dopo aver applicato un TableStyleLe regioni di formattazione condizionale (OddRowBanding, EvenRowBanding e così via) non sono mai state configurate su TableStyle.ConditionalStylesImposta la formattazione sulle voci ConditionalStyle pertinenti in ConditionalStyleCollection
Una modifica allo stile non influisce sul contenuto che utilizza già lo stileLa formattazione diretta (manuale) è stata applicata sopra lo stile e ha la precedenzaRimuovi la formattazione diretta sui run/paragrafi interessati, oppure imposta Style.AutomaticallyUpdate

FAQ

Come posso ottenere la raccolta di tutti gli stili in un documento?

Leggi Document.Styles, che restituisce un StyleCollection contenente tutti gli Style predefiniti e definiti dall’utente in quel documento.

Qual è la differenza tra Style e StyleIdentifier?

Style è l’oggetto stile effettivo con la sua formattazione; StyleIdentifier è un valore enum indipendente dalla locale usato per cercare un specifico integrato stile indipendentemente dalla lingua del documento, tramite il StyleCollection indicizzatore.

In che modo gli stili di tabella differiscono dagli stili di paragrafo o di carattere?

TableStyle è una sottoclasse di Style che aggiunge proprietà di layout della tabella (Alignment, CellSpacing, padding) e una collezione ConditionalStyles per la formattazione specifica della regione, come righe a bande, righe di intestazione e celle d’angolo — concetti di formattazione che non si applicano agli stili di paragrafo o di carattere.

Posso creare uno stile completamente nuovo invece di modificare uno esistente?

Sì — chiama StyleCollection.Add(type, name) con il StyleType desiderato e un nuovo nome per creare uno stile vuoto, quindi imposta le sue proprietà di formattazione (Font, ParagraphFormat, e così via per gli stili di paragrafo/carattere).

Come duplico uno stile, incluso da un altro documento?

Usa StyleCollection.AddCopy(style), passando un oggetto Style (che può provenire da un StyleCollection di un Document diverso) per aggiungere una sua copia alla collezione di destinazione.


API Reference Riepilogo

Classe/MetodoDescrizione
StyleUn singolo stile di paragrafo, carattere, tabella o elenco incorporato o definito dall’utente
StyleCollectionL’insieme di tutti gli stili in un documento, raggiunto tramite Document.Styles
StyleCollection indicizzatore per nomeCerca uno stile per il suo nome visualizzato, ad es. styles["Heading 1"]
StyleCollection indicizzatore per identificatoreCerca uno stile incorporato per identificatore indipendente dalla locale, ad es. styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)Crea un nuovo stile vuoto del StyleType fornito
StyleCollection.AddCopy(style)Copia uno stile esistente in questa raccolta
StyleTypeEnum che distingue gli stili Paragraph, Character, Table e List
StyleIdentifierIdentificatore locale-indipendente per uno stile integrato
TableStyleUna sottoclasse Style per la formattazione delle tabelle, inclusa la stilizzazione condizionale per regione
ConditionalStyleCollectionL’insieme delle voci ConditionalStyle per regione su un TableStyle
ConditionalStyleFormattazione (font, formato del paragrafo, ombreggiatura, bordi, spaziatura interna) per una regione della tabella
ConditionalStyleTypeEnum che identifica a quale regione della tabella si applica un ConditionalStyle

Vedi anche

 Italiano