Охватите запись таблицы через строки и столбцы

Эти примеры показывают, как сделать промежуток записи таблицы строками и столбцами.

Неофициальная таблица

Этот пример показывает, как использовать охват строки и столбца в неофициальном объекте таблицы DOM, чтобы создать следующую таблицу.

Неофициальная таблица является таблицей, которая не включает предопределенную голову, тело и разделы ноги. Однако можно отформатировать первые несколько строк неофициальной таблицы как заголовок, когда этот пример показывает.

Импортируйте пакет DOM, таким образом, вы не должны использовать долго, полностью определенные имена классов.

import mlreportgen.dom.*

Настройте документ и добавьте заголовок, чтобы описать таблицу.

% To create a PDF report, change the output type from "docx" to "pdf". 
% To create an HTML report, change "docx" to "html" or "html-file" for
% a multifile or single-file report, respectively.
rpt = Document('myReport','docx');

h = Heading(1, 'Multiple Row and Column Table Entries Using an Informal Table');
h.Style = [h.Style {HAlign('center')}];
append(rpt, h);

Создайте массивы ячеек для стилей, которые будут использоваться различными компонентами документа. Содержание таблицы охватывает ширину страницы и имеет сплошные линии, разделяющие записи. Основной заголовок является стальным синим, и затем подзаголовок является более светло-лазурным.

tableStyle = {Width('100%'), Border('solid'), ColSep('solid'), RowSep('solid')};
mainHeaderRowStyle = {VAlign('middle'), InnerMargin('2pt', '2pt', '2pt', '2pt'), ...
    BackgroundColor('steelblue')};
mainHeaderTextStyle = {Bold, OuterMargin('0pt', '0pt', '0pt', '0pt'), FontFamily('Arial')};
subHeaderRowStyle = {VAlign('middle'), InnerMargin('2pt', '2pt', '2pt', '2pt'), BackgroundColor('skyblue')};
subHeaderTextStyle = {Bold, OuterMargin('0pt', '0pt', '0pt', '0pt'), FontFamily('Arial')};
bodyStyle = {OuterMargin('0pt', '0pt', '0pt', '0pt'), InnerMargin('2pt', '2pt', '2pt', '0pt')};

Создайте некоторые выборочные данные, чтобы включать в таблицу. Затем создайте Объект таблицы.

data = {'John', 'Smith', 'Natick, MA';
    'Jane', 'Doe', 'Boston, MA'};

t = Table(3);
t.Style = [t.Style tableStyle];

Создайте объект TableRow для первой строки таблицы, которая содержит заголовки Имени и адреса. Заголовок Имени имеет два подзаголовка, таким образом, он охватывает два столбца. Это установлено со свойством ColSpan записи таблицы. Заголовок Адреса не имеет никаких подзаголовков, таким образом, он охватывает две строки. Это установлено со свойством RowSpan записи таблицы.

r = TableRow;
r.Style = [r.Style mainHeaderRowStyle];
p = Paragraph('Name');
p.Style = [p.Style mainHeaderTextStyle {HAlign('center')}];
te = TableEntry(p);
te.ColSpan = 2;
append(r, te);

p = Paragraph('Address');
p.Style = [p.Style mainHeaderTextStyle];
te = TableEntry(p);
te.RowSpan = 2;
append(r, te);
append(t, r);

Создайте вторую строку в таблице для Первых и последних подзаголовков Имени. Даже при том, что таблица является тремя широкими столбцами, вторая строка содержит только две записи, потому что Поле адреса охватывает и первые и вторые строки.

r = TableRow;
r.Style = [r.Style subHeaderRowStyle];
p = Paragraph('First');
p.Style = [p.Style subHeaderTextStyle];
te = TableEntry(p);
append(r, te);

p = Paragraph('Last');
p.Style = [p.Style subHeaderTextStyle];
te = TableEntry(p);
append(r, te);
append(t, r);

Цикл через выборочные данные, чтобы добавить его в таблицу.

for k = 1:size(data, 1)
    r = TableRow;
    r.Style = [r.Style bodyStyle];
    te = TableEntry(data{k,1});
    append(r, te);
    te = TableEntry(data{k,2});
    append(r, te);
    te = TableEntry(data{k,3});
    append(r, te);
    append(t, r);
end

Добавьте таблицу в документ.

append(rpt, t);

Формальная таблица

Этот пример показывает, как использовать охват строки и столбца в формальном объекте таблицы DOM, чтобы создать следующую таблицу.

Формальная таблица является таблицей, которая состоит из трех подтаблиц для заголовка, тела и разделов нижнего колонтитула таблицы, соответственно. Используя формальную таблицу вместо неофициальной таблицы разделяет заголовок, который требует специального форматирования от данных, которые могут быть переданы непосредственно формальному табличному конструктору, чтобы заполнить таблицу тела.

Импортируйте пакет DOM, таким образом, вы не должны использовать долго, полностью определенные имена классов.

import mlreportgen.dom.*

Переместитесь в новую страницу в существующем документе и добавьте заголовок, чтобы описать таблицу.

br = PageBreak();
append(rpt, br);
h = Heading(1, 'Multiple Row and Column Table Entries Using a Formal Table');
h.Style = [h.Style {HAlign('center')}];
append(rpt, h);

Создайте массивы ячеек для стилей, которые будут использоваться различными компонентами документа. Содержание таблицы охватывает ширину страницы и имеет сплошные линии, разделяющие записи. Основной заголовок является стальным синим, и затем подзаголовок является более светло-лазурным.

tableStyle = {Width('100%'), Border('solid'), ColSep('solid'), RowSep('solid')};
mainHeaderRowStyle = {VAlign('middle'), InnerMargin('2pt', '2pt', '2pt', '2pt'), ...
    BackgroundColor('steelblue')};
mainHeaderTextStyle = {Bold, OuterMargin('0pt', '0pt', '0pt', '0pt'), FontFamily('Arial')};
subHeaderRowStyle = {VAlign('middle'), InnerMargin('2pt', '2pt', '2pt', '2pt'), BackgroundColor('skyblue')};
subHeaderTextStyle = {Bold, OuterMargin('0pt', '0pt', '0pt', '0pt'), FontFamily('Arial')};
bodyStyle = {OuterMargin('0pt', '0pt', '0pt', '0pt')};

Создайте некоторые выборочные данные, чтобы включать в таблицу. Затем создайте объект FormalTable с выборочными данными в разделе Body.

data = {'John', 'Smith', 'Natick, MA';
    'Jane', 'Doe', 'Boston, MA'};

t = FormalTable(data);
t.Style = [t.Style tableStyle];
t.Body.TableEntriesStyle = [t.Body.TableEntriesStyle, bodyStyle];

Создайте таблицу Header объекта FormalTable с помощью того же метода в качестве предыдущего примера. Создайте объект TableRow для первой строки таблицы, которая содержит заголовки Имени и адреса. Заголовок Имени имеет два подзаголовка, таким образом, он охватывает два столбца. Это установлено со свойством ColSpan записи таблицы. Заголовок Адреса не имеет никаких подзаголовков, таким образом, он охватывает две строки. Это установлено со свойством RowSpan записи таблицы.

r = TableRow;
r.Style = [r.Style mainHeaderRowStyle];
p = Paragraph('Name');
p.Style = [p.Style mainHeaderTextStyle {HAlign('center')}];
te = TableEntry(p);
te.Style = [te.Style mainHeaderTextStyle];
te.ColSpan = 2;
append(r, te);

p = Paragraph('Address');
p.Style = [p.Style mainHeaderTextStyle];
te = TableEntry(p);
te.Style = [te.Style mainHeaderTextStyle];
te.RowSpan = 2;
append(r, te);
append(t.Header, r);

Создайте вторую строку в таблице для Первых и последних подзаголовков Имени. Даже при том, что таблица является тремя широкими столбцами, вторая строка только содержит две записи, потому что Поле адреса охватывает и первые и вторые строки.

r = TableRow;
r.Style = [r.Style subHeaderRowStyle];
p = Paragraph('First');
p.Style = [p.Style subHeaderTextStyle];
te = TableEntry(p);
append(r, te);

p = Paragraph('Last');
p.Style = [p.Style subHeaderTextStyle];
te = TableEntry(p);
append(r, te);
append(t.Header, r);

Добавьте таблицу в документ.

append(rpt, t);

Таблица макета страницы

Этот пример показывает как охват строки и столбца использования, чтобы составить невидимую таблицу макета страницы для сложного макета.

Импортируйте пакет DOM, таким образом, вы не должны использовать долго, полностью определенные имена классов.

import mlreportgen.dom.*

Переместитесь в новую страницу в существующем документе и добавьте заголовок, чтобы описать таблицу.

br = PageBreak();
append(rpt, br);
h = Heading(1, 'Multi-column Invisible Table');
h.Style = [h.Style {HAlign('center')}];
append(rpt, h);

Определите стили для различных компонентов на странице. Основная таблица невидима, таким образом, она не имеет границы или разделителей.

mainTableStyle = {Width('100%'), Border('none') ColSep('none'), RowSep('none')};
dataTableStyle = {Border('solid'), ColSep('dotted'), RowSep('solid'),...
    OuterMargin('0pt', '0pt', '0pt', '0pt')};
dataTableEntriesStyle = {OuterMargin('0pt', '0pt', '0pt', '0pt'), VAlign('middle')};
histStyle = {InnerMargin('2pt', '2pt', '2pt', '2pt'), ...
    HAlign('center'), VAlign('bottom'), Width('5in'), Height('4in')};

Создайте данные в качестве примера, представляющие 500 случайных подбрасываний монеты. Затем создайте текст, FormalTable и Объекты изображения, чтобы отобразить информацию о данных.

coinflips = randi(2, [500, 10]);
numHeads = sum(coinflips-1,2);

p = Text(['The plot below shows the results from 500 trials in which a coin was flipped 10 times, ',...
    'and the number of times the coin landed on heads was counted. ',...
    'The table displays the results for the first 20 trials.']);

dataHeader = {'Trial', 'Heads'};
dataBody = [(1:20)', numHeads(1:20)];
dataTable = FormalTable(dataHeader, dataBody);
dataTable.TableEntriesStyle = [dataTable.TableEntriesStyle dataTableEntriesStyle]; 
dataTable.Header.Style = [dataTable.Header.Style {Bold}];
dataTable.Style = [dataTable.Style dataTableStyle];

histogram(numHeads);
title('Results')
xlabel('Number of Heads')
ylabel('Number of Trials')
saveas(gcf,'histogram_img.png');
close(gcf)
h = Image('histogram_img.png');

Составьте невидимую таблицу и начните добавлять компоненты. Добавьте таблицу данных в первую строку и укажите, что это охватывает две строки.

t = Table(2);
t.Style = [t.Style mainTableStyle];

row1 = TableRow;
row1.Style = [row1.Style {Width('100%')}];
entry1 = TableEntry;
append(entry1, dataTable);
entry1.RowSpan = 2;
entry1.Style = [entry1.Style {Width("40%")}];
append(row1, entry1);

Добавьте Текстовый объект в первую строку также и затем добавьте строку к таблице.

entry2 = TableEntry(p);
entry2.Style = [entry2.Style {Width("60%")}];
append(row1, entry2);

append(t, row1);

Создайте новую строку и добавьте изображение гистограммы как единственную запись. Таблица данных уже заполняет первые столбцы и первых и вторых строк, таким образом, гистограмма будет помещена во второй столбец.

row2 = TableRow;
entry3 = TableEntry;
h.Style = [h.Style histStyle];
append(entry3, h);
append(row2, entry3);
entry3.Style = [entry3.Style {Width('60%')}];

append(t,row2);

Сгенерируйте и отобразите отчет.

append(rpt,t);
close(rpt);
rptview(rpt);