Можно использовать API DOM, чтобы создать два типа таблиц, которые отличаются по структуре.
Неофициальная таблица (т.е. таблица) состоят из строк, которые содержат записи таблицы.
Формальная таблица содержит заголовок, тело и раздел нижнего колонтитула. Каждый раздел содержит строки, которые содержат записи таблицы.
Неофициальные таблицы полезны для большинства ваших потребностей создания отчетов. Используйте формальные таблицы для таблиц, заголовки которых или нижние колонтитулы содержат несколько строк.
Для получения дополнительной информации о неофициальных таблицах, см.:
Для получения дополнительной информации о формальных таблицах, см.:
Можно составить таблицу путем добавления двумерного числового массива или массива ячеек, содержащего встроенные в MATLAB® данные (текст и числа) и Объекты DOM (Text
, Table
, Image
, и т.д.) к документу. Функция append
преобразовывает массив в объект Table
, добавляет его к документу и возвращает объект Table
, который можно затем отформатировать. Можно также создать объект Table
непосредственно включением двумерного массива в его конструкторе.
Этот пример показывает, как составить таблицу от числового массива и другую таблицу от массива ячеек различных типов объектов. Массив ячеек содержит магический квадрат, который представляется как внутренняя таблица. Массив ячеек также включает конструктора Object Text
, который использует стиль шаблонов AlertLevel
.
import mlreportgen.dom.*; doc = Document('test'); table1 = append(doc,magic(5)); table1.Border = 'single'; table1.ColSep = 'single'; table1.RowSep = 'single'; ca = {'text entry',Paragraph('a paragraph entry'); ... Text('Danger!','AlertLevel'),magic(4)}; table2 = Table(ca); append(doc,table2); close(doc); rptview(doc.OutputPath);
Можно использовать функцию entry
с объектом Table
добавить содержимое в запись таблицы или отформатировать запись. Этот подход полезен, когда необходимо отформатировать записи таблицы индивидуально. Например:
import mlreportgen.dom.*; doc = Document('test'); a = magic(5); [v,i] = max(a); [v1,i1] = max(max(a)); table = Table(a); text = table.entry(i(i1),i1).Children(1); text.Color = 'red'; append(doc,table); close(doc); rptview(doc.OutputPath);
Можно составить таблицу с нуля путем создания объектов TableEntry
, добавление их к объектам TableRow
и добавление TableRow
возражают против объекта Table
. Этот подход полезен, когда необходимо создать записи таблицы, которые охватывают несколько столбцов или строк, которые имеют различное количество записей. Этот пример показывает, как составить таблицу с четырьмя столбцами и двумя строками. В первой строке таблицы вторая запись охватывает вторые и третьи столбцы.
import mlreportgen.dom.*; doc = Document('test'); table = Table(4); table.Border = 'single'; table.ColSep = 'single'; table.RowSep = 'single'; row = TableRow; append(row, TableEntry('entry 11')); te = TableEntry('entry 12-13'); te.ColSpan = 2; te.Border = 'single'; append(row, te); append(row, TableEntry('entry 14')); append(table,row); row = TableRow; for c = 1:4 append(row, TableEntry(sprintf('entry 2%i', c))); end append(table,row); append(doc,table); close(doc); rptview(doc.OutputPath);
Можно отформатировать таблицу программно, с помощью объектов формата DOM или свойств формата. Можно также использовать стили шаблонов. Для получения информации об этих методах форматирования и наследовании формата, см. Отчет Форматировать Подходы.
Можно использовать объекты формата, чтобы отформатировать таблицы или использовать свойства формата Table
, чтобы задать обычно используемые форматы таблицы. Этот пример использование:
Border
, ColSep
и объекты формата RowSep
, чтобы задать красную границу таблицы и зеленый столбец и разделители строки
Свойство формата Width
, чтобы задать таблицу width
import mlreportgen.dom.*; d = Document('test','html'); table = Table(magic(5)); table.Style = {Border('inset','red','3px'), ... ColSep('single','green','1px'), ... RowSep('single','green','1px')}; table.Width = '50%'; append(d, table); close(d); rptview(d.OutputPath);
Используйте эти объекты формата и свойства формата, чтобы отформатировать таблицу.
Форматирование | Объект формата | Свойство формата |
---|---|---|
Ширина таблицы |
|
|
Цвет табличного фона |
|
|
Создайте границу вокруг таблицы |
|
|
Цвет границы |
|
|
Толщина границы |
|
|
Создайте оставленный, право, верхняя часть или нижняя граница таблицы |
| нет данных |
Сверните границы записи таблицы и записи таблицы (HTML) |
|
|
Создайте разделитель столбцов |
|
|
Цвет разделителя столбцов |
|
|
Толщина разделителя столбцов |
|
|
Создайте разделитель строки |
|
|
Цвет разделителя строки |
|
|
Толщина разделителя строки |
|
|
Таблица Indent от левого поля |
|
|
Пробел прежде или после таблицы |
| нет данных |
Пробел направо от таблицы |
| нет данных |
Выровняйте по левому краю таблицу, право или центр |
|
|
Задайте направление потока записи таблицы (слева направо или справа налево) |
|
|
Измените размер столбцов таблицы, чтобы соответствовать содержимому |
| нет данных |
Объект Table
имеет свойства, которые позволяют вам задавать тот же формат или набор форматов для всех его записей.
Форматирование | Свойство объекта таблицы |
---|---|
Выровняйте записи вертикально (верхняя часть, середина, нижняя часть) |
|
Выровняйте записи горизонтально (оставленный, право, центр) |
|
Создайте пространство (дополнение) между контуром записи и содержимым |
|
Примените набор объектов формата ко всем записям таблицы |
|
Можно использовать объект формата mlreportgen.dom.TextOrientation
, чтобы сделать текст в записи таблицы вертикальным или горизонтальным.
Используйте KeepLinesTogether
и форматы абзаца KeepWithNext
, чтобы держать вместе табличный заголовок и таблицу на той же странице. Этот пример создает табличный заголовок, создает табличное содержимое и делает табличную строку заголовка полужирной, использующей индексацией записи таблицы. Чтобы сохранить таблицу на той же странице, код задает KeepLinesTogether
и KeepWithNext
для всех строк кроме последней строки. Последняя строка имеет только набор KeepLinesTogether
и не KeepWithNext
. Это препятствует тому, чтобы таблица была обеспечена, чтобы остаться с абзацем, который следует.
import mlreportgen.dom.* rpt = Document('test','docx'); p = Paragraph('Table 1'); p.Style = {Bold,KeepLinesTogether,KeepWithNext}; append(rpt, p); ca = {Paragraph('Col 1'),Paragraph('Col 2'); ... Paragraph('data 11'),Paragraph('Data 12'); ... Paragraph('data 21'),Paragraph('Data 22')}; ca{1,1}.Children(1).Bold = true; ca{1,2}.Children(1).Bold = true; for r = 1:2 for c = 1:2 ca{r, c}.Style = {KeepLinesTogether,KeepWithNext}; end end for c = 1:2 ca{3, c}.Style = {KeepLinesTogether}; end append(rpt, ca); close(rpt); rptview(rpt.OutputPath);
Можно отформатировать таблицы с помощью существующего стиля Word в шаблоне или стиле шаблонов, который вы изменяете или добавляете.
Чтобы задать стиль таблицы, одним словом, обрабатывают по шаблону, запускаются при помощи этих шагов.
Откройте шаблон Word, используемый с отчетом.
Откройте панель Styles.
Нажмите кнопку Manage Styles.
Нажмите New Style.
В диалоговом окне Create New Style from Formatting, набор Style type к Table
.
Для получения дополнительной информации об использовании стилей Word с Объектами DOM смотрите, Изменяют Стили в Шаблоне Microsoft Word.
Можно отформатировать таблицы HTML и PDF с помощью стиля CSS, заданного в шаблоне.
Чтобы задать стиль таблицы в шаблоне HTML или PDF, используйте селектор на стиле table
. Например:
table.MyTable { border-style: solid; border-bottom-color: rgb(128, 128, 128); border-bottom-width: thin; border-collapse: collapse; }
Используйте дочерний селектор CSS (>
), чтобы задать формат дочерних элементов таблицы. Например, этот код CSS задает формат записей таблицы (элементы td
) таблицы, стилем которой является MyTable
.
table.MyTable > tbody > tr > td { font-family: Arial, Helvetica, sans-serif; font-size: 11pt; text-align: center; }
Если вы задали стиль таблицы в шаблоне, можно применить его к объекту Table
в программе отчета или в качестве второго аргумента в конструкторе Object Table
или путем установки его на свойство StyleName
объекта Table
. Например, предположите, что вы задали стили под названием BodyPara
, TableTitle
и RuledTable
в шаблоне для вашего отчета. Этот пример задает имена стиля в конструкторе Paragraph
в свойстве StyleName
объекта Paragraph
, и в конструкторе Table
.
import mlreportgen.dom.*; rank = 5; rpt = Document('MyReport','html','MyTemplate'); p = Paragraph('Here is a magic square or rank 5:','BodyPara'); append(rpt,p); p = Paragraph(sprintf('Rank %d MagicSquare',rank)); p.StyleName = 'TableTitle'; append(rpt,Table(magic(rank),'RuledTable')); close(rpt); rptview(rpt.OutputPath);
Можно использовать программируемые форматы, чтобы заменить стили, заданные в основанном на шаблоне стиле таблицы. Например, предположите, что вы задаете стиль таблицы под названием UnruledTable
в вашем шаблоне, чтобы составить таблицы без любых границ или разделители строки или столбец. Можно затем заменить стиль в программе отчета, чтобы чертить кадр вокруг таблицы.
import mlreportgen.dom.*; rpt = Document('MyReport','html','MyTemplate'); table = Table(magic(5),'UnruledTable'); table.Border = 'single'; append(rpt,table); close(rpt); rptview(rpt.OutputPath);
Чтобы составить формальную таблицу, используйте те же основные подходы в качестве с неофициальной таблицей, за исключением того, что вы используете конструктора mlreportgen.domlFormalTable
, чтобы создать формальную таблицу. Конструктор опционально принимает двумерный числовой массив или массив ячеек данных MATLAB для тела, заголовка и разделов нижнего колонтитула.
Если вы создаете формальную таблицу полностью или частично с нуля, можно использовать функции объекта FormalTable
appendHeaderRow
и appendBodyRow
, чтобы добавить строки к табличному заголовку и разделам нижнего колонтитула. Функция FormalTable.append
добавляет строку к разделу тела. Также можно получить доступ к разделу с помощью Header
, Body
или свойств Footer
объекта FormalTable
.
import mlreportgen.dom.* d = Document('test'); t = FormalTable({'a','b';'c','d'}); r = TableRow(); append(r,TableEntry('Column 1')); append(r,TableEntry('Column 2')); append(t.Header,r); append(d,t); close(d); rptview(d.OutputPath);
Можно отформатировать формальную таблицу программно, с помощью объектов формата DOM или свойств формата. Можно также использовать стили шаблонов. Для получения информации об этих методах форматирования и наследовании формата, см. Отчет Форматировать Подходы.
Можно отформатировать формальную таблицу программно тот же способ, которым вы форматируете неофициальную таблицу. Объекты формата и свойства, которые применяются к неофициальной таблице также, применяются к формальным таблицам. Кроме того, можно отформатировать заголовок, тело и разделы нижнего колонтитула неофициальной таблицы программно. Если вы задаете формат для таблицы и одного из ее разделов, значение, которое вы задаете для раздела, заменяет значение, которое вы задаете для таблицы в целом. Не все формальные форматы таблицы применяются к формальным табличным разделам. Например, вы не можете расположить с отступом заголовок, тело или раздел нижнего колонтитула независимо от содержания таблицы. Другими словами, свойство OuterLeftMargin
не применяется к формальным табличным разделам.
Используйте ту же процедуру для определения формальных стилей таблицы в шаблонах, как вы используете для определения неофициальных стилей таблицы.
Можно применить стиль таблицы к формальной таблице и к каждому из ее разделов. Если вы применяете стиль таблицы к самой таблице и к одному из ее разделов (например, заголовок), стиль раздела заменяет стиль таблицы.
Если вы применяете стиль таблицы к одному или нескольким разделам Word формальная таблица, задаете ширины каждого из столбцов таблицы. В противном случае столбцы разделов не могут выстроиться в линию.
Если вы хотите создать таблицу с нуля, можно использовать конструктора TableRow
, чтобы создать строки. Отформатируйте строки и затем добавьте строки к таблице, которую вы создаете.
Конструктор mlreportgen.dom.TableRow
не берет аргументов и возвращает объект TableRow
. Можно затем создать и добавить объекты TableEntry
к объекту завершить конструкцию строки. Если вы создаете строку, можно добавить строку в таблицу, с помощью функции append
. Этот пример составляет таблицу 2D столбца с двумя строками.
import mlreportgen.dom.* rpt = Document('test'); table = Table(2); row = TableRow(); append(row,TableEntry('Col1')); append(row,TableEntry('Col2')); append(table,row); row = TableRow(); append(row,TableEntry('data11')); append(row,TableEntry('data12')); append(table,row); append(rpt,table); close(rpt); rptview(rpt.OutputPath);
Используйте эти объекты формата и свойства формата, чтобы отформатировать строку таблицы.
Форматирование высоты строки | Объект формата | Свойство формата |
---|---|---|
Задайте точную высоту строки |
|
|
Задайте минимальную высоту строки (только Word) |
| нет данных |
Заставьте эту строку повторяться как строка заголовка, когда таблица будет течь через страницы |
| нет данных |
Позвольте этой строке колебаться между контуром страницы |
| нет данных |
К столбцам таблицы формата можно использовать объекты mlreportgen.dom.TableColSpecGroup
, или одни или с объектами mlreportgen.dom.TableColSpecGroup
. Используйте объект TableColSpecGroup
задать формат группы смежных столбцов таблицы. Используйте объект TableColSpec
заменить, для некоторых столбцов таблицы, некоторых или всех форматов группы столбцов. В этом примере свойство TableColSpecGroup
задает ширину столбца 0,2-дюймовых и зеленого текста. TableColSpec
заменяет те форматы для первого столбца, задавая ширину 0,5 дюймов и полужирный, красный текст.
import mlreportgen.dom.* rpt = Document('test'); rank = 5; table = Table(magic(rank)); table.Border = 'single'; table.BorderWidth = '1px'; grps(1) = TableColSpecGroup; grps(1).Span = rank; grps(1).Style = {Width('0.2in'),Color('green')}; specs(1) = TableColSpec; specs(1).Span = 1; specs(1).Style = {Width('0.5in'),Bold,Color('red')}; grps(1).ColSpecs = specs; table.ColSpecGroups = grps; append(rpt,table); close(rpt); rptview(rpt.OutputPath);
Чтобы изменить размер столбцов, чтобы соответствовать самому широкому содержимому записей таблицы в столбце, включайте объект ResizeToFitContents
в свойство Style
таблицы.
Если необходимо создать таблицу с нуля, можно использовать конструктора mlreportgen.dom.TableEntry
, чтобы создать записи таблицы. Можно затем отформатировать записи таблицы и добавить их в строки таблицы, которые можно затем добавить в таблицу, которую вы создаете. Если необходимо отформатировать записи в таблице, которую вы составили от массива ячеек, можно использовать TableEntry
или функцию TableRow
entry
, чтобы получить доступ к записи, которую можно затем отформатировать.
Используйте конструктора TableEntry
, чтобы создать запись таблицы. Можно опционально использовать конструктора, чтобы задать эти виды содержимого записи:
CharArray
Любой из этих видов Объектов DOM:
Paragraph
Text
Image
Table
OrderedList
UnorderedList
CustomElement
Можно использовать объекты формата или свойства формата TableEntry
, чтобы отформатировать запись таблицы программно.
Форматирование | Объект формата | Свойство формата |
---|---|---|
Создайте границу вокруг записи |
|
|
Цвет границы |
|
|
Толщина границы |
|
|
Создайте оставленный, право, верхняя часть или нижняя граница записи |
| нет данных |
Выровняйте верхнюю часть содержимого записи, нижнюю часть, середина |
|
|
Пробел между контуром записи и содержимым записи |
|
|
Пробел между содержимым записи и его верхней частью, нижней частью, правом или покинутыми контурами |
| нет данных |
Заставьте запись охватывать несколько столбцов |
|
|
Заставьте запись охватывать несколько строк |
|
|
Можно задать форматирование для всех записей таблицы в таблице, использовать свойство TableEntriesStyle
объекта Table
или FormalTable
. Например, можно установить форматирование границы.
import mlreportgen.dom.* t = Table(magic(5)); t.TableEntriesStyle = {Border('solid','black','1px')};
Свойства, которые вы устанавливаете для объекта TableEntry
, более приоритетны по сравнению с объектами формата TableEntriesStyle
.
Для отчетов HTML можно использовать стили, заданные в таблице стилей шаблона HTML, чтобы отформатировать записи таблицы. При определении стиля записи таблицы используйте селектор элемента td
. Например:
td.TableEntryWithBorder {
border:5px solid red;
}
Чтобы применить заданный шаблоном стиль к записи таблицы, установите свойство StyleName
объекта TableEntry
на имя стиля или задайте имя стиля в качестве второго аргумента конструктору TableEntry
. Например:
te = TableEntry('Hello World','TableEntryWithBorder');
mlreportgen.dom.AllowBreakAcrossPages
| mlreportgen.dom.ColSep
| mlreportgen.dom.FlowDirection
| mlreportgen.dom.FormalTable
| mlreportgen.dom.RepeatAsHeaderRow
| mlreportgen.dom.ResizeToFitContents
| mlreportgen.dom.RowHeight
| mlreportgen.dom.RowSep
| mlreportgen.dom.Table
| mlreportgen.dom.TableBody
| mlreportgen.dom.TableColSpec
| mlreportgen.dom.TableColSpecGroup
| mlreportgen.dom.TableEntry
| mlreportgen.dom.TableFooter
| mlreportgen.dom.TableHeader
| mlreportgen.dom.TableHeaderEntry
| mlreportgen.dom.TableRow
mlreportgen.dom.FormalTable.appendFooterRow
| mlreportgen.dom.FormalTable.appendHeaderRow
| mlreportgen.dom.TableRow.append