В этом примере показано, как приспособить широкую таблицу в отчете.
Данные для этого примера являются матовым файлом, содержащим массив ячеек данных о камере трафика из Остина, Техас. Этот массив ячеек содержит информацию, такую как местоположение камеры, его состояние и дата, когда это было включено и т.д.
Мы принимаем 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: Используйте Генератор отчетов утилита 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