В этих примерах показано, как сделать таблицу строками и столбцами.
В этом примере показано, как использовать соединение строк и столбцов в неформальном объекте таблицы 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')};Создайте образец данных для включения в таблицу. Затем создайте объект Table.
data = {'John', 'Smith', 'Natick, MA';
'Jane', 'Doe', 'Boston, MA'};
t = Table(3);
t.Style = [t.Style tableStyle];Создайте объект TaureRow для первой строки таблицы, содержащей заголовки Name и Address. Заголовок Name имеет два подзаголовка, поэтому он охватывает два столбца. Этот параметр задается свойством ColSpan записи таблицы. Заголовок Address не имеет подзаголовков, поэтому он охватывает две строки. Этот параметр задается свойством 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);
Создайте вторую строку в таблице для первого и последнего подзаголовков имени. Несмотря на то, что таблица имеет ширину в три столбца, вторая строка содержит только две записи, поскольку поле Address охватывает и первую, и вторую строки.
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')};Создайте образец данных для включения в таблицу. Затем создайте объект Table с образцами данных в разделе 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 объекта Table, используя тот же метод, что и в предыдущем примере. Создайте объект TaureRow для первой строки таблицы, содержащей заголовки Name и Address. Заголовок Name имеет два подзаголовка, поэтому он охватывает два столбца. Этот параметр задается свойством ColSpan записи таблицы. Заголовок Address не имеет подзаголовков, поэтому он охватывает две строки. Этот параметр задается свойством 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);
Создайте вторую строку в таблице для первого и последнего подзаголовков имени. Несмотря на то, что таблица имеет ширину в три столбца, вторая строка содержит только две записи, поскольку поле Address охватывает и первую, и вторую строки.
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 случайных откатов монет. Затем создайте объекты Text, Table и Image для отображения информации о данных.
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);