Приспособьте широкие таблицы на странице

В этом примере показано, как приспособить широкую таблицу в отчете.

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

Мы принимаем traffic_data.mat файл, который содержит массив ячеек данных о камере трафика, находится в текущей рабочей директории. Требование должно распечатать таблицу так вся ее подгонка столбцов на бумаге, которая 8,5 дюймов шириной 11 дюймами длиной в портретной ориентации.

Составление таблицы:

Чтобы включать таблицу в отчет, используйте объект mlreportgen.dom.FormalTable. Этот объект имеет табличное тело и заголовок необязательной таблицы и нижний колонтитул.

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

load('traffic_data.mat');
tbl_header = traffic_camera_data(1,:);
traffic_camera_data(1,:) = [];

formalTable = mlreportgen.dom.FormalTable(tbl_header,traffic_camera_data);
formalTable.RowSep = "Solid";
formalTable.ColSep = "Solid";
formalTable.Border = "Solid";
formalTable.Header.TableEntriesStyle = [formalTable.Header.TableEntriesStyle,...
    {mlreportgen.dom.Bold(true)}];
formalTable.TableEntriesStyle = [formalTable.TableEntriesStyle,...
    {mlreportgen.dom.InnerMargin("2pt","2pt","2pt","2pt"),...
    mlreportgen.dom.WhiteSpace("preserve")}];

Тройственное число 1: Добавьте Формальную Таблицу DOM на странице портрета по умолчанию размера 8,5 дюймов шириной и 11 дюймов длиной.

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

import mlreportgen.dom.*
import mlreportgen.report.*;

Создайте контейнер, чтобы содержать содержимое отчета.

% To create a Word report, change the output type from "pdf" to "docx". 
rpt = Report("TrafficCameraDataPortrait","pdf");

Создайте главу с заголовком "Камеры трафика в Остине".

chapter = Chapter("Title","Traffic Cameras in Austin");

Добавьте составленную таблицу в главу и добавьте главу в отчет.

add(chapter, formalTable);
add(rpt, chapter);
close(rpt);

Результат: сгенерированный отчет включает в себя таблицу, но столбцы таблицы являются слишком узкими. Приспосабливание целой таблицы на странице портрета составило таблицу, которая не является четкой.

Тройственное число 2: Согласуйтесь широкая таблица в среде ориентировала страницу, которая 11 дюймов шириной 8,5 дюймов длиной.

import mlreportgen.dom.*
import mlreportgen.report.*;
import mlreportgen.utils.*

rpt = Report("TrafficCameraDataLandscape","pdf");
chapter = Chapter("Title","Traffic Cameras in Austin");

Установите альбомный макет отчета на истину. Добавьте таблицу в главу.

rpt.Layout.Landscape = true;
add(chapter,formalTable);
add(rpt,chapter);
close(rpt);

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

Тройственное число 3: Используйте Report Generator утилита TableSlicer, чтобы нарезать входную таблицу в несколько срезов. Его свойство MaxCols задает максимальное количество столбцов на табличный срез.

Во-первых, попытайтесь делить таблицу на два среза и распечатайте их на значении по умолчанию 8,5 широких бумагой портрета 11 дюймов длиной.

import mlreportgen.dom.*
import mlreportgen.report.*;
import mlreportgen.utils.*

rpt = Report("TrafficCameraDataSlicing-1","pdf");
chapter = Chapter("Title","Traffic Cameras in Austin");

Теперь создайте табличный нож, возражают и задают формальную таблицу как вход. Входная таблица имеет 18 столбцов, так чтобы создать два среза, установить свойство MaxCols на 9.

Табличная утилита ножа имеет метод среза, который нарезает входную таблицу и генерирует объекты mlreportgen.utils.TableSlice. Эти объекты имеют нарезанную таблицу и индексы столбца начала и конца исходной входной таблицы.

slicer = mlreportgen.utils.TableSlicer("Table",formalTable,"MaxCols",9);
slices = slicer.slice();

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

for slice = slices
    str = sprintf("From column %d to column %d",slice.StartCol,slice.EndCol);
    para = Paragraph(str);
    para.Bold = true;
    para.Style = [para.Style,{KeepWithNext(true),...
        OuterMargin("0pt","0pt","5pt","0pt")}];
    add(chapter,para);
    add(chapter,slice.Table);
end

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

add(rpt,chapter);
close(rpt);

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

Тройственное число 4: На основе испытательного выхода до сих пор, уменьшайте значение MaxCols, чтобы создать 4 табличных среза. Используйте свойство RepeatCols повторить столбцы во всех срезах. Чтобы соединить все 4 среза, установите значение свойства RepeatCols на 1 так, чтобы столбец ID Камеры был повторен в каждом табличном срезе.

import mlreportgen.dom.*
import mlreportgen.report.*;
import mlreportgen.utils.*

rpt = Report("TrafficCameraDataSlicing-2","pdf");
chapter = Chapter("Title","Traffic Cameras in Austin");

Установите значение MaxCols к 6 и значение RepeatCols к 1.

slicer = mlreportgen.utils.TableSlicer("Table",formalTable,"MaxCols",...
    6,"RepeatCols",1);
slices = slicer.slice();

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

for slice = slices
    str = sprintf("Repeated Column Index: %d ,SlicedColumns: From column %d to column %d",...
        slicer.RepeatCols,slice.StartCol, slice.EndCol);
    para = Paragraph(str);
    para.Bold = true;
    para.Style = [para.Style,{KeepWithNext(true),...
        OuterMargin("0pt","0pt","5pt","0pt")}];
    add(chapter,para);
    add(chapter,slice.Table);
end

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

add(rpt,chapter);
close(rpt);
rptview(rpt);

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

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

Copyright 2018 The MathWorks, Inc