Як працювати зі стилями в .NET

Як працювати зі стилями в .NET

Цей посібник показує, як шукати, застосовувати та створювати стилі абзаців, символів, таблиць та списків у Aspose.Words FOSS для .NET, використовуючи Style, StyleCollection, і TableStyle класи. Він охоплює читання колекції стилів документа, надійний пошук стилів у різних мовах, застосування стилів до абзаців і ділянок, створення та копіювання стилів, а також налаштування умовного форматування за регіонами для стилів таблиць.

Покроковий посібник

Крок 1: Встановити пакет

Aspose.Words FOSS for .NET ще не публікує пакет NuGet — зберіть бібліотеку з вихідного коду. Клонуйте https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, потім зберіть Aspose.Words.sln у конфігурації Release за допомогою SDK .NET і підключіть отриману збірку Aspose.Words у вашому проєкті. Бібліотека орієнтована на .NET Standard 2.0, тому вона працює на .NET Framework 4.6.2+ та .NET 6/8/10.


Крок 2: Імпортувати необхідні класи

Додайте директиву using Aspose.Words; — Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection та ConditionalStyleType всі перебувають у просторі імен Aspose.Words разом з Document.


Крок 3: Прочитати колекцію стилів документа

Document.Styles повертає StyleCollection — кожен вбудований та користувацький Style, прикріплений до документа. StyleCollection.Count повідомляє, скільки стилів він містить, а DefaultFont / DefaultParagraphFormat описують документ-широке форматування за замовчуванням, яке успадковується новим вмістом перед застосуванням будь-якого явного стилю.


Крок 4: Надійно знайти стиль

Отримайте стиль за його відображуваною назвою, використовуючи індексатор StyleCollection, styles[name]. Для вбудованих стилів краще використати той самий індексатор з значенням enum StyleIdentifier — styles[sti] — назви локалізуються, а значення StyleIdentifier ні, тому пошук за ідентифікатором працює однаково незалежно від мови документа. Перевірте Style.Aliases для альтернативних назв, які Word розпізнає для того самого стилю, якщо індексатор не знаходить очікуване, і перевірте Style.BuiltIn перед тим, як програмно видаляти або перейменовувати стиль, оскільки вбудовані стилі часто посилаються за назвою в інших частинах документа.


Крок 5: Застосувати стиль до абзаців або фрагментів

Об’єкти форматування, які містять стиль, відкривають як властивість Style (сам об’єкт Style) так і властивість StyleName (скорочення, яке розв’язує або створює стиль за назвою). Встановіть ParagraphFormat.Style або ParagraphFormat.StyleName, щоб застосувати стиль абзацу, і Font.Style або Font.StyleName, щоб застосувати стиль символу до форматування фрагмента. Призначення StyleName з назвою, якої ще немає в колекції, створює такий стиль — спочатку перевірте існування стилю за допомогою індексатора StyleCollection, або призначте об’єкт Style безпосередньо, якщо це не є очікуваною поведінкою.


Крок 6: Побудувати ієрархії стилів

Прочитайте BaseStyleName, щоб знайти стиль, від якого даний стиль успадковує незадані параметри форматування, LinkedStyleName — для парного стилю абзацу/символу (як Word визначає вбудовані стилі, наприклад заголовок і його пов’язаний стиль символу), і NextParagraphStyleName — для стилю, який Word призначає новому абзацу, введеному після абзацу, що використовує цей стиль. Встановіть BaseStyleName, коли визначаєте набір пов’язаних стилів — наприклад сімейство стилів заголовків, які мають успадковувати вибір шрифту від одного базового стилю — замість повторення того самого форматування в кожному стилі.


Крок 7: Створити або скопіювати стиль

Викличте StyleCollection.Add(type, name) з StyleType (Paragraph, Character, Table або List) та назвою, щоб створити новий порожній стиль, потім встановіть його властивості Font і ParagraphFormat за потреби. Щоб продублювати існуючий стиль — включаючи стиль з іншого Document’s StyleCollection — викличте StyleCollection.AddCopy(style), а не вручну читати та повторно застосовувати кожну властивість форматування. Викличте Style.Remove(), щоб видалити стиль із його колекції.


Крок 8: Налаштування стилів таблиць та умовного форматування

TableStyle розширює Style властивостями table-layout — 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 регіон він представляє; задавайте форматування цим регіонам, а не окремим рядкам таблиці, щоб отримати смужкове, заголовкове або куточкове форматування, яке зберігається після редагування таблиці.


Крок 9: Скинути або видалити форматування

Викличте ConditionalStyle.ClearFormatting(), щоб скинути один умовний регіон, або ConditionalStyleCollection.ClearFormatting(), щоб одночасно скинути всі регіони у TableStyle. StyleCollection.ClearQuickStyleGallery() видаляє всі стилі з галереї швидких стилів інтерфейсу Word, не видаляючи самі стилі — корисно для скорочення галереї без зміни вмісту документа.

Типові проблеми та їх вирішення

StyleCollection індексатор повертає null при пошуку імені Ім’я стилю не існує в цьому документі, або вбудований стиль ще не був використаний, тому Word його не створив. Перевірте Style.Aliases на предмет альтернативних імен, або використайте the StyleCollection індексатор з StyleIdentifier для вбудованих стилів замість.

Встановлення StyleName неочікувано створює новий стиль StyleName створює названий стиль, якщо його ще немає в колекції. Використайте StyleCollection спочатку індексатор, щоб підтвердити, що стиль існує, або призначити Style об’єкт безпосередньо через Style властивість замість StyleName.

Смуги таблиці не з’являються після застосування TableStyle Умовні ділянки форматування – OddRowBanding, EvenRowBanding, і подібні – ніколи не були налаштовані в TableStyle.ConditionalStyles. Встановіть форматування для відповідних ConditionalStyle записів у ConditionalStyleCollection.

Зміна стилю не впливає на вміст, який вже використовує цей стиль Пряме (ручне) форматування, застосоване поверх стилю, має пріоритет над власними налаштуваннями стилю. Очистіть пряме форматування в уражених ділянках або абзацах, або встановіть Style.AutomaticallyUpdate так, щоб стиль переопреділився на основі цього ручного форматування.

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

Часто задавані питання

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

Прочитайте 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 – який може походити з StyleCollection іншого Document – щоб додати його копію до цільової колекції.

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

 Українська