Можно использовать API DOM, чтобы создать и отформатировать неупорядоченный, упорядоченный, и многоуровневые списки в программе генерации отчета.
Списки представлены как mlreportgen.dom.UnorderedList
или mlreportgen.dom.OrderedList
объекты. Элементы списка представлены как mlreportgen.dom.ListItem
объекты.
Можно создать список из MATLAB® массив, который задает элементы списка или создает список один элемент за один раз. Создание списка от массива является самым простым подходом. Создание списка, один элемент за один раз полезен, когда элементы содержат несколько элементов, таких как абзац и таблица.
Списки форматов и элементы списка при помощи заданных шаблоном стилей или программно при помощи объектов формата.
Можно создать список из одномерного числового массива, массива строк, массива векторов символов, массива ячеек или категориального массива. Задайте элементы списка в массиве ячеек, когда элементы будут иметь различные типы.
Чтобы создать неупорядоченный список из массива, добавьте массив непосредственно к части документа или документа. append
метод:
Создает mlreportgen.dom.UnorderedList
объект.
Создает mlreportgen.dom.ListItem
объект для каждого элемента массива.
Добавляет ListItem
объекты к UnorderedList
возразите и UnorderedList
возразите против части документа или документа.
Например, этот код создает неупорядоченный список из массива строк:
import mlreportgen.dom.* d = Document("fruit","html"); ul = append(d,["apples","oranges","bananas"]); close(d); rptview(d);
Вот список в сгенерированном отчете:
Примечание
Чтобы создать список путем добавления массива к части документа или документа, массив должен быть 1 n. Добавление n-by-1 массив к части документа или документа составляет таблицу, не список.
В качестве альтернативы создайте неупорядоченный список путем обеспечения массива как входа к mlreportegen.dom.UnorderedList
конструктор. Например:
import mlreportgen.dom.* d = Document("fruit","html"); ul = UnorderedList(["apples","oranges","bananas"]); ul = append(d,ul); close(d); rptview(d);
Конструктор создает mlreportgen.dom.ListItem
объект для каждого элемента массива и добавляет ListItem
объекты к UnorderedList
объект.
Чтобы создать упорядоченный список из массива, предоставьте массив, как введено mlreportegen.dom.OrderedList
конструктор. Конструктор создает mlreportgen.dom.ListItem
объект для каждого элемента массива и добавляет ListItem
объекты к OrderedList
объект. Например, этот код создает упорядоченный список из массива строк.
import mlreportgen.dom.* d = Document("weekdays","html"); ol = OrderedList(["Monday","Tuesday","Wednesday","Thursday","Friday"]); append(d,ol); close(d); rptview(d);
Вот список в сгенерированном отчете:
Задайте элементы списка в массиве ячеек, когда элементы будут иметь различные типы. В массиве ячеек можно включать векторы символов, строки, числа и некоторые Объекты DOM, такие как mlreportgen.dom.Text
объект. Для списка Объектов DOM, которые можно включать, смотрите mlreportgen.dom.ListItem
.
Например, этот код создает упорядоченный список из массива ячеек, который содержит векторы символов и mlreportgen.dom.ExternalLink
объект.
import mlreportgen.dom.* d = Document('myreport','html'); ol = UnorderedList({... 'apples',... 'oranges',... ExternalLink('https://en.wikipedia.org/wiki/Mango',... 'mango')}); append(d,ol); close(d); rptview(d);
Вот список в сгенерированном отчете:
Вместо того, чтобы задать целый список как массив, можно задать каждый элемент списка как mlreportgen.dom.ListItem
возразите и добавьте ListItem
объекты к mlreportgen.UnorderedList
или mlreportgen.OrderedList
объект. Этот подход полезен, когда элементы списка содержат несколько абзацев, соединение абзацев и таблиц или других комбинаций элементов документа.
Например, этот код создает список, в котором элементы списка состоят из абзаца и таблицы.
import mlreportgen.dom.* d = Document('magicsquares','html'); ol = UnorderedList(); item1 = ListItem(Paragraph('magic(2)')); append(item1,Table(magic(2))); append(ol,item1); item2 = ListItem(Paragraph('magic(3)')); append(item2,Table(magic(3))); append(ol,item2); append(d,ol); close(d); rptview(d);
Вот список в сгенерированном отчете:
Многоуровневый список является списком, который содержит вложенные списки. Можно вложить любую комбинацию упорядоченных и неупорядоченных списков до девяти уровней вложения.
Можно использовать следующие подходы, чтобы создать многоуровневые списки. Сгенерированный список выглядит одинаково с каждым подходом, но представления API DOM отличаются.
Создайте многоуровневый список из массивов ячеек, которые моделируют иерархию списка. С этим подходом API DOM представляет подсписок как дочерний элемент списка, который содержит его.
Создайте многоуровневый список один список во время с помощью mlreportgen.dom.UnorderedList
, mlreportgen.dom.OrderedList
, и mlreportgen.dom.ListItem
объекты. Добавьте подсписок к списку или перечислите элемент. Если вы добавляете подсписок к списку, API DOM представляет подсписок как дочерний элемент списка. Если вы добавляете подсписок к элементу списка, API DOM представляет подсписок как дочерний элемент элемента списка.
Чтобы создать многоуровневый список из массивов ячеек, используйте один из этих подходов:
Если подсписок является неупорядоченным списком, можно представлять его как 1 n массивом ячеек, который является элементом 1 n массивом ячеек, который представляет список, который является, каждый выравнивает. Например, этот код представляет подсписок как массив ячеек, который является третьим элементом массива ячеек, который представляет список верхнего уровня.
import mlreportgen.dom.*; d = Document('nestedListReport','html'); topList = OrderedList({... 'Start MATLAB',... 'Create a rank 3 or 4 magic square',... {'magic(3)',... % sublist is third element 'magic(4)'},... 'Close MATLAB'}); append(d,topList); close(d); rptview(d);
Вот список в сгенерированном отчете:
Если подсписок является упорядоченным списком, создайте mlreportgen.dom.OrderedList
объект от 1 n массивом ячеек, который представляет подсписок. Включайте OrderedList
возразите как элемент массива ячеек, который представляет список, который является, каждый выравнивает. Например, этот код создает OrderedList
объект от массива ячеек, который представляет подсписок и включает объект как третий элемент массива ячеек, который используется, чтобы создать список верхнего уровня.
import mlreportgen.dom.*; d = Document('orderedListReport','html'); topList = OrderedList({'Start MATLAB', ... 'Create a rank 3 or 4 magic square',... OrderedList({... % sublist is third element 'magic(3)',... 'magic(4)'}),... 'Close MATLAB'}); append(d,topList); close(d); rptview(d);
Вот список в сгенерированном отчете:
В этих двух предыдущих примерах API DOM представляет подсписок как третий дочерний элемент списка верхнего уровня. Чтобы получить доступ к подсписку, используйте Children
свойство списка верхнего уровня.
topList.Children(3)
Когда элементы подсписка содержат несколько абзацев, соединение абзацев и таблиц или других комбинаций элементов документа, создают mlreportgen.dom.ListItem
объекты и добавляют их к mlreportgen.dom.UnorderedList
или mlreportgen.dom.OrderedList
объект. Затем добавьте подсписок к списку или к элементу списка.
Этот пример добавляет подсписок к списку верхнего уровня как третий элемент списка. Элементы в подсписке состоят из текста и таблицы.
import mlreportgen.dom.*; d = Document('orderedListReport','html'); subList = UnorderedList; subListItem1 = ListItem('>> magic(3)'); table = append(subListItem1,Table(magic(3))); table.Width = '1in'; append(subList,subListItem1); subListItem2 = ListItem('>> magic(4)'); table = append(subListItem2,Table(magic(4))); table.Width = '1in'; append(subList,subListItem2); topList = OrderedList(); append(topList,ListItem('Start MATLAB')); append(topList,ListItem('Create a rank 3 or 4 magic square')); append(topList,subList); % sublist is item 3 of topList append(topList,ListItem('Close MATLAB')); append(d,topList); close(d); rptview(d);
Вот список в сгенерированном отчете:
API DOM представляет подсписок как третий дочерний элемент списка верхнего уровня. Чтобы получить доступ к подсписку, используйте Children
свойство списка верхнего уровня.
topList.Children(3)
Вместо того, чтобы добавить подсписок к списку, можно добавить подсписок к элементу списка. Следующий пример добавляет подсписок к второму элементу списка списка верхнего уровня. Сгенерированный список выглядит одинаково как в предыдущем примере.
import mlreportgen.dom.*; d = Document('orderedListReport','html'); topList = OrderedList({ ... 'Start MATLAB', ... 'Create a rank 3 or 4 magic square:', ... 'Close MATLAB'}); subList = UnorderedList; subListItem1 = ListItem('>> magic(3)'); table = append(subListItem1,Table(magic(3))); table.Width = '1in'; append(subList,subListItem1); subListItem2 = ListItem('>> magic(4)'); table = append(subListItem2,Table(magic(4))); table.Width = '1in'; append(subList,subListItem2); % Append the sublist to the second list item topListItem2 = topList.Children(2); append(topListItem2, subList); append(d, topList); close(d); rptview(d);
API DOM представляет подсписок как второй дочерний элемент второго элемента списка верхнего уровня. Чтобы получить доступ к подсписку, используйте этот код:
topList.Children(2).Children(2)
Можно использовать стили списка, заданные в шаблоне, чтобы задать добавление отступа каждого уровня списка и типа маркера, или числовой формат раньше представлял элементы списка.
Чтобы использовать заданный шаблоном стиль списка, чтобы отформатировать список, установите StyleName
свойство списка к имени стиля. Например, этот код указывает, что именем стиля списка является MyListStyle
.
import mlreportgen.dom.*; d = Document('myListReport','html'); list = append(d,{'first item',... OrderedList({'step 1','step 2'}),'second item'}); list.StyleName = 'MyListStyle'; close(d); rptview(d);
Для Microsoft® Документы Word, стиль списка, который вы задаете, должны быть заданы в шаблоне, который присвоен документу.
Примечание
Стиль списка определяет, как элементы списка представляются независимо от типа списка. Если вы не задаете стиль списка, ДОМ АПИ использует стиль списка по умолчанию, который представляет список согласно типу. Например, стиль списка по умолчанию для неупорядоченных списков использует маркеры, чтобы представить элементы списка. Если вы указываете, что список разрабатывает для mlreportegen.dom.UnorderedList
возразите, что элементы чисел, элементы пронумерованы, даже при том, что тип объекта не упорядочен.
Для получения информации о создании шаблона Word смотрите, Создают Шаблон Microsoft Word.
Чтобы задать стиль списка, одним словом, обработайте по шаблону:
Откройте файл шаблона Word при помощи одного из этих методов:
В MATLAB, в Current Folder pane, щелкают правой кнопкой по файлу шаблона и нажимают Open Outside MATLAB.
За пределами MATLAB щелкните правой кнопкой по файлу и нажмите Open.
Примечание
Не дважды кликайте файл шаблона Word, чтобы открыть его. Двойной клик по файлу открывает файл документа Word, который использует шаблон.
В Word, на вкладке Home, в группе Paragraph, кликают по значку Multilevel List и затем нажимают Define New List Style.
Установите Name на свое имя стиля.
Задайте форматирование, такое как стиль маркера и цвет для каждого уровня списка.
Выберите New documents based on this template.
Нажмите OK, чтобы сохранить шаблон.
Для примера, который задает стиль Списка слов, см. Пользовательский Стилизованный Список слов.
Чтобы задать стиль списка в каскадной таблице стилей (CSS) для шаблона HTML или PDF, используйте ul
элемент для неупорядоченных стилей списка и ol
элемент для упорядоченных стилей списка. Можно использовать дочерний селектор (>
) задавать многоуровневые стили списка. Смотрите Изменяют Стили в Шаблонах HTML и Изменяют Стили в Шаблонах PDF.
Например, этот код CSS задает внешний вид двухуровневого неупорядоченного списка, который может содержать упорядоченный или неупорядоченные подсписки.
ul.MyUnorderedList { list-style-type:disc; } ul.MyUnorderedList > ul { list-style-type:circle; } ul.MyUnorderedList > ol { list-style-type:decimal; }
Для получения информации о редактировании CSS см. документацию, такую как руководство по CSS W3Schools.com.
Списки форматов программно путем добавления объектов формата, таких как mlreportgen.dom.Color
объект, к Style
свойство mlreportgen.dom.UnorderedList
, mlreportgen.dom.OrderedList
, или mlreportgen.dom.ListItem
объект. Форматирование этого вы задаете в Style
свойство заменяет заданный шаблоном стиль.
Для списков в PDF и отчетах HTML, можно задать тип маркера или нумерующий тип при помощи mlreportgen.dom.ListStyleType
объект формата.
Например, этот код создает зеленый, упорядоченный список со строчными алфавитными маркерами. Третий элемент списка является синим и курсивным.
import mlreportgen.dom.* d = Document('myreport','html'); ol = OrderedList(["one", "two", "three"]); ol.Style = {Color('Green'),ListStyleType('lower-alpha')}; ol.Children(3).Style = {Color('blue'),Italic(true)}; append(d,ol); close(d); rptview(d);
Вот список в сгенерированном отчете:
Можно также отформатировать Объекты DOM, которые вы используете, чтобы создать элементы списка при помощи свойств формата или объектов формата, сопоставленных с объектом. Например, этот форматы кода mlreportgen.dom.Text
объекты, прежде чем они будут использоваться, чтобы создать список.
import mlreportgen.dom.* d = Document('myreport','html'); li1 = Text('red'); li1.Color = 'Red'; li2 = Text('blue'); li2.Color = 'Blue'; append(d,{li1, li2}); close(d); rptview(d);
Вот список в сгенерированном отчете:
В зависимости от того, как вы создаете многоуровневый список, подсписок может быть дочерним элементом родительского списка или дочерним элементом предыдущего элемента списка в родительском списке. Смотрите Создают Многоуровневый Список.
Если подсписок является дочерним элементом элемента списка родительского списка, подсписок наследовал форматирование от элемента списка. Например, этот код делает подсписок дочерним элементом второго элемента списка в родительском списке.
import mlreportgen.dom.*; d = Document('nestedListReport','html'); parentlist = OrderedList(); li1 = ListItem('List Item 1'); li2 = ListItem('List Item 2'); li2.Style = [li2.Style {Color('red')}]; sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'}); append(li2,sublist); append(parentlist,li1); append(parentlist,li2); append(d,parentlist); close(d); rptview(d);
Подсписок наследовал красный цвет от элемента списка, который содержит его.
Если вы не хотите, чтобы подсписок наследовал форматирование от предыдущего элемента списка, отформатируйте абзац или текст в предыдущем элементе списка вместо того, чтобы форматировать элемент списка. Например:
import mlreportgen.dom.*; d = Document('nestedListReport','html'); parentlist = OrderedList(); li1 = ListItem('List Item 1'); txt = Text('List Item 2'); txt.Color = 'red'; li2 = ListItem(txt); sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'}); append(parentlist,li1); append(parentlist,li2); append(parentlist,sublist); append(d,parentlist); close(d); rptview(d);
import mlreportgen.dom.*; d = Document('nestedListReport','html'); parentlist = OrderedList(); li1 = ListItem('List Item 1'); li2 = ListItem('List Item 2'); li2.Style = [li2.Style {Color('red')}]; sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'}); append(parentlist,li1); append(parentlist,li2); append(parentlist,sublist); append(d,parentlist); close(d); rptview(d);
Второй элемент списка родительского списка является красным, но подсписок является черным.
mlreportgen.dom.OrderedList
| mlreportgen.dom.UnorderedList
| mlreportgen.dom.ListItem
| mlreportgen.dom.ListStyleType