Робота зі стилями

Робота зі стилями

Робота зі стилями

У цьому посібнику показано, як працювати з абзацовими, символьними, табличними та списковими стилями у Aspose.Words FOSS для .NET — пошук та застосування вбудованих і користувацьких стилів, а також налаштування умовного форматування за регіоном для стилів таблиць.

Об’єкт Style представляє один вбудований або користувацький стиль — іменовану колекцію абзацного, шрифтового та спискового форматування, яку Word застосовує, коли абзац або форматований фрагмент отримує цей стиль. Кожен документ відкриває свої стилі через властивість Document.Styles, яка повертає StyleCollection. Табличні стилі представляються TableStyle, підкласом Style, який додає специфічне для таблиць форматування та умовне форматування за регіонами через ConditionalStyleCollection.


Типи стилів і ідентифікація

Кожен Style має властивість Type типу StyleType, яка є однією з Paragraph, Character, Table або List — відповідаючи чотирьом типам стилів, які підтримує Word. Вбудовані стилі також містять незалежне від локалі значення перерахування StyleIdentifier (наприклад, значення, що відповідають заголовкам, акцентам та гіперпосиланням), щоб код міг знайти вбудований стиль без залежності від його відображуваної назви в конкретній мові. Читабельна назва стилю доступна через Style.Name, а Style.Aliases повертає будь-які альтернативні назви, які Word розпізнає для того ж стилю. Style.BuiltIn повідомляє, чи стиль постачається разом з самим Word, чи визначений у документі, а Style.IsHeading повідомляє, чи є стиль одним із вбудованих стилів заголовків.

Доступ і керування колекцією стилів

StyleCollection — це колекція всіх об’єктів Style — вбудованих та користувацьких — прикріплених до документа, доступна через Document.Styles. Отримати стиль за його відображуваною назвою можна за допомогою індексатора StyleCollection — styles[name] — або отримати вбудований стиль за його незалежним від локалі StyleIdentifier, використовуючи той самий індексатор — styles[sti] — що є надійнішим, ніж пошук за назвою у документах, створених різними мовами. Нові стилі створюються за допомогою StyleCollection.Add(type, name), вказуючи StyleType та назву, а існуючий стиль можна дублювати в колекції за допомогою StyleCollection.AddCopy(style). StyleCollection.Count повідомляє, скільки стилів містить документ, і колекція також надає DefaultFont та DefaultParagraphFormat, які описують форматування за замовчуванням для всього документа, яке успадковується новим вмістом перед застосуванням будь-якого явного стилю. StyleCollection.ClearQuickStyleGallery() видаляє всі стилі з галереї швидких стилів інтерфейсу Word без видалення самих стилів.

Застосування стилів до абзаців і фрагментів

Об’єкти форматування, які можуть мати стиль, надають як властивість Style (сам об’єкт Style), так і властивість StyleName (ярлик, який розв’язує або створює стиль за назвою). ParagraphFormat.Style і ParagraphFormat.StyleName застосовують стиль абзацу, тоді як Font.Style і Font.StyleName застосовують стиль символу до форматування фрагмента. Власні властивості LinkedStyleName, BaseStyleName і NextParagraphStyleName стилю описують, як він співвідноситься з іншими стилями: BaseStyleName вказує назву стилю, від якого успадковується незаданe форматування, LinkedStyleName вказує назву парного стилю абзацу/символу (як Word робить для вбудованих стилів типу Heading 1 і його пов’язаного стилю символу), і NextParagraphStyleName вказує назву стилю, який Word призначає новому абзацу, введеному після абзацу, що використовує цей стиль.

Стилі таблиць і умовне форматування

TableStyle розширює Style властивостями розташування таблиці, такими як Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment та відступами (LeftPadding, RightPadding, TopPadding, BottomPadding), плюс RowStripe і ColumnStripe, які керують кількістю рядків або стовпців, на яких повторюється шаблон смужкування. Окрім уніфікованого форматування таблиці, TableStyle.ConditionalStyles повертає ConditionalStyleCollection, що містить один ConditionalStyle для кожного регіону таблиці — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding та чотири кутові клітинки (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Кожен ConditionalStyle має власні Font, ParagraphFormat, Shading, Borders та відступ клітини, а його властивість Type повідомляє, який ConditionalStyleType регіон він представляє. ConditionalStyle.ClearFormatting() і ConditionalStyleCollection.ClearFormatting() скидають форматування для одного регіону або всього набору умовних регіонів.

Метадані стилю та прапорці поведінки

Кілька булевих і числових властивостей у Style керують тим, як Word обробляє стиль у своєму інтерфейсі, а не тим, як він рендериться: Locked запобігає зміні стилю, коли активний захист форматування, IsQuickStyle визначає, чи відображається він у галереї швидких стилів, AutomaticallyUpdate змушує стиль переозначити себе на основі вручну застосованого прямого форматування, SemiHidden і UnhideWhenUsed керують видимістю у списку стилів до і після першого використання, а Priority впливає на порядок сортування в галереї. Стиль також надає властивості List і ListFormat, коли він визначає нумерацію списку, і Style.Remove() видаляє стиль із його StyleCollection.


Поради та найкращі практики

  • Віддавайте перевагу індексатору StyleCollection з значенням StyleIdentifier замість пошуку за назвою, коли шукаєте вбудований стиль — назви локалізовані, а значення StyleIdentifier ні.
  • Встановіть BaseStyleName, щоб створювати ієрархії стилів (наприклад, набір заголовкових стилів, які всі успадковують вибір шрифтів від одного базового стилю), замість повторення форматування в кожному стилі.
  • При копіюванні стилю між документами використовуйте StyleCollection.AddCopy(style), а не вручну зчитувати та повторно застосовувати кожну властивість форматування.
  • Налаштуйте області TableStyle.ConditionalStyles для смугастих таблиць замість ручного форматування чергування рядків у коді — форматування кожної області ConditionalStyle застосовується на основі її ConditionalStyleType, а не шляхом встановлення прямого форматування окремих рядків.
  • Перевірте Style.BuiltIn перед тим, як програмно видаляти або перейменовувати стиль; вбудовані стилі зазвичай посилаються за назвою в інших частинах документа.

Типові проблеми

ПроблемаПричинаВиправлення
StyleCollection індексатор повертає null під час пошуку іменіНазва стилю не існує в цьому документі, або вбудований стиль ще не був використаний, тому Word ще не створив йогоПеревірте Style.Aliases на наявність альтернативних імен або використайте індексатор StyleCollection з StyleIdentifier для вбудованих стилів замість цього
Встановлення StyleName неочікувано створює новий стильStyleName створює названий стиль, якщо він ще не існує в колекціїСпочатку використайте індексатор StyleCollection, щоб підтвердити, що стиль існує, або призначте об’єкт Style безпосередньо через властивість Style
Полосування таблиці не відображається після застосування TableStyleРегони умовного форматування (OddRowBanding, EvenRowBanding тощо) ніколи не були налаштовані на TableStyle.ConditionalStylesВстановіть форматування для відповідних записів ConditionalStyle у ConditionalStyleCollection
Зміна стилю не впливає на вміст, який вже використовує цей стильПряме (ручне) форматування було застосовано поверх стилю і воно має перевагуОчистити пряме форматування у відповідних ділянках/абзацах, або встановити Style.AutomaticallyUpdate

FAQ

Як отримати колекцію всіх стилів у документі?

Прочитайте Document.Styles, який повертає StyleCollection, що містить усі вбудовані та користувацькі Style у цьому документі.

У чому різниця між Style і StyleIdentifier?

Style є фактичним об’єктом стилю з його форматуванням; StyleIdentifier є незалежним від локалі значенням enum, що використовується для пошуку конкретного вбудованого стилю незалежно від мови документа, через StyleCollection індексатор.

Чим стилі таблиць відрізняються від стилів абзаців або символів?

TableStyle — це підклас Style, який додає властивості розмітки таблиці (Alignment, CellSpacing, padding) і колекцію ConditionalStyles для регіонального форматування, такого як смугові рядки, заголовкові рядки та кутові клітинки — концепції форматування, які не застосовуються до стилів абзаців або символів.

Чи можу я створити зовсім новий стиль замість того, щоб змінювати існуючий?

Так — викличте StyleCollection.Add(type, name) з потрібним StyleType і новою назвою, щоб створити порожній стиль, потім встановіть його властивості форматування (Font, ParagraphFormat і так далі для стилів абзаців/символів).

Як я можу дублювати стиль, включаючи його з іншого документа?

Використайте StyleCollection.AddCopy(style), передавши об’єкт Style (який може походити з іншого Document’s StyleCollection) для додавання його копії до цільової колекції.


API Reference Підсумок

Клас/МетодОпис
StyleОдин вбудований або визначений користувачем стиль абзацу, символу, таблиці або списку
StyleCollectionКолекція всіх стилів у документі, доступна через Document.Styles
StyleCollection індексатор за назвоюЗнайти стиль за його відображуваною назвою, наприклад styles["Heading 1"]
StyleCollection індексатор за ідентифікаторомЗнайти вбудований стиль за ідентифікатором, незалежним від локалі, наприклад styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)Створити новий, порожній стиль заданого StyleType
StyleCollection.AddCopy(style)Скопіювати існуючий стиль у цю колекцію
StyleTypeПерерахування, що розрізняє стилі Paragraph, Character, Table та List
StyleIdentifierІдентифікатор, незалежний від локалі, для вбудованого стилю
TableStyleПідклас Style для форматування таблиці, включаючи умовну стилізацію за регіонами
ConditionalStyleCollectionНабір ConditionalStyle записів за регіонами на TableStyle
ConditionalStyleФорматування (шрифт, формат абзацу, затінення, межі, відступи) для одного регіону таблиці
ConditionalStyleTypeEnum, який визначає, до якого регіону таблиці застосовується ConditionalStyle

Дивіться також

 Українська