Работа со списками
Список в документе Microsoft Word - это набор свойств форматирования списков. Списки можно использовать в ваших документах для форматирования, упорядочивания и выделения текста. Списки - это отличный способ организации данных в документах, и они облегчают читателям понимание ключевых моментов.
Каждый список может иметь до 9 уровней, и свойства форматирования, такие как стиль цифр, начальное значение, отступ, позиция табуляции и т.д., определяются отдельно для каждого уровня.
В Aspose.Words работа со списками представлена модулем Lists. Однако объект List всегда принадлежит коллекции ListCollection.
В этом разделе описывается, как программно работать со списками, используя Aspose.Words.
Создание списков с помощью форматирования списков
Aspose.Words позволяет легко создавать списки, применяя форматирование списка. DocumentBuilder предоставляет свойство DocumentBuilder.list_format, которое возвращает объект ListFormat. У этого объекта есть несколько методов для начала и завершения списка, а также для увеличения/уменьшения отступа. В Microsoft Word есть два основных типа списков: маркированные и нумерованные.
- Чтобы запустить маркированный список, наберите ListFormat.apply_bullet_default.
- Чтобы запустить нумерованный список, наберите ListFormat.apply_number_default.
Маркер или число и форматирование добавляются к текущему абзацу и всем последующим абзацам, созданным с использованием DocumentBuilder, пока не будет вызван ListFormat.remove_numbers для остановки форматирования маркированного списка.
В документах Word списки могут состоять максимум из девяти уровней. Форматирование списка для каждого уровня определяет, какой маркер или число используется, отступ слева, расстояние между маркером и текстом и т.д. Следующие методы изменяют уровень списка и применяют свойства форматирования нового уровня:
- Чтобы увеличить уровень списка текущего абзаца на один уровень, вызовите ListFormat.list_indent
- Чтобы уменьшить уровень списка текущего абзаца на один уровень, вызовите ListFormat.list_outdent
Методы изменяют уровень списка и применяют свойства форматирования нового уровня.
В приведенном ниже примере показано, как создать многоуровневый список.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
builder.list_format.apply_number_default() | |
builder.writeln("Item 1") | |
builder.writeln("Item 2") | |
builder.list_format.list_indent() | |
builder.writeln("Item 2.1") | |
builder.writeln("Item 2.2") | |
builder.list_format.list_indent() | |
builder.writeln("Item 2.2.1") | |
builder.writeln("Item 2.2.2") | |
builder.list_format.list_outdent() | |
builder.writeln("Item 2.3") | |
builder.list_format.list_outdent() | |
builder.writeln("Item 3") | |
builder.list_format.remove_numbers() | |
doc.save(docs_base.artifacts_dir + "DocumentFormatting.multilevel_list_formatting.docx") |
Укажите форматирование для уровня списка
Объекты уровня списка создаются автоматически при создании списка. Используйте свойства и методы класса ListLevel для управления форматированием отдельных уровней списка.
Список перезапусков для каждого раздела
Вы можете перезапустить список для каждого раздела, используя свойство is_restart_at_each_section property. Обратите внимание, что этот параметр поддерживается только в форматах документов RTF, DOC и DOCX. Этот параметр будет записан в DOCX только в том случае, если OoxmlCompliance выше, чем Ecma376.
В следующем примере кода показано, как создать список и перезапустить его для каждого раздела:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
doc.lists.add(aw.lists.ListTemplate.NUMBER_DEFAULT) | |
list = doc.lists[0] | |
list.is_restart_at_each_section = True | |
builder = aw.DocumentBuilder(doc) | |
builder.list_format.list = list | |
for i in range(1, 45) : | |
builder.writeln(f"List Item {i}") | |
if i == 15 : | |
builder.insert_break(aw.BreakType.SECTION_BREAK_NEW_PAGE) | |
# IsRestartAtEachSection will be written only if compliance is higher then OoxmlComplianceCore.ecma_376. | |
options = aw.saving.OoxmlSaveOptions() | |
options.compliance = aw.saving.OoxmlCompliance.ISO29500_2008_TRANSITIONAL | |
doc.save(docs_base.artifacts_dir + "WorkingWithList.restart_list_at_each_section.docx", options) |