此示例显示如何在报告中适用一个宽的表。
此示例的数据是包含来自德克萨斯州奥斯汀的交通摄像机数据的单元格数组的垫文件。此单元格数组包含相机位置,其状态和开启时的日期等信息。
我们假设包含流量摄像机数据的单元格数组的Compuorm_data.mat文件在当前工作目录中。要求是打印桌面,因此其所有列都适合8.5英寸宽的纸张,纵向宽度为11英寸。
创建一个表:
要在报表中包含表,请使用mlreportgen.dom.FormalTable对象。这个对象有一个表格主体和一个可选的表格页眉和页脚。
首先,将包含MATLAB单元格数组数据的垫文件加载到工作区。使用单元格数组数据创建DOM正式表对象。要使表更容易读取,请将表标题设置为粗体,并在表列分隔符和表内容之间添加左边边距空间。
加载(“traffic_data.mat”);: tbl_header = traffic_camera_data (1);: traffic_camera_data (1) = [];formalTable = mlreportgen.dom.FormalTable (tbl_header traffic_camera_data);formalTable。RowSep =“坚硬的”;拼写.Colsep =.“坚硬的”;formalTable。边境=“坚硬的”;拼写.header.Tableentriesstyle = [拼写.Header.TableenttiesTyle,......{mlreportgen.dom.bold(true)}];托运.TableentTriesstyle = [拼写.Tableentriesstyle,......{mlreportgen.dom.innermargin(“2 pt”那“2 pt”那“2 pt”那“2 pt”),......mlreportgen.dom.whiteSpace(“保存”)}];
试验1号:在宽大的8.5英寸宽和11英寸长的默认纵向页面中添加DOM正式表。
导入DOM和Report API包,这样就不必使用长类名。
进口mlreportgen.dom。*进口mlreportgen.report。*;
创建一个容器以保存报表内容。
%要创建一个单词报告,将输出类型从“PDF”更改为“DOCX”。RPT =报告(“trafficcameradataportrait”那“pdf”);
创建一章,标题为“奥斯汀的交通摄像头”。
章节=章节(“标题”那“奥斯汀的交通摄影机”);
将创建的表添加到章节,并将章节添加到报告。
添加(章,formalTable);add (rpt,章);关闭(RPT);
结果:生成的报表包含表,但表列太窄。在纵向页面中拟合整个表创建的表是不可读的。
试验2号:适合横向面向景观的页面,宽度为11英寸,长8.5英寸。
进口mlreportgen.dom。*进口mlreportgen.report。*;进口mlreportgen.utils。*RPT =报告(“trafficcameradatalandscape”那“pdf”);章节=章节(“标题”那“奥斯汀的交通摄影机”);
将报告横向布局设置为true。将表添加到本章。
rpt.layout.landscape = true;添加(章节,汇编);add (rpt,章);关闭(RPT);
结果:虽然横向布局优于纵向页面报告,但很多栏目不清晰,表格不容易阅读。
3号试验:使用Report Generator TableSlicer实用程序将输入表分成多个片。它的MaxCols属性指定每个表片的最大列数。
首先,试着把桌子分成两份,然后用默认的8.5宽11英寸的人像纸打印。
进口mlreportgen.dom。*进口mlreportgen.report。*;进口mlreportgen.utils。*RPT =报告(“TrafficCameraDataSlicing-1”那“pdf”);章节=章节(“标题”那“奥斯汀的交通摄影机”);
现在,创建一个表切片器对象并指定正式表作为输入。输入表有18列,因此要创建两个片,请将MaxCols属性设置为9。
表Slicer Utility具有切片方法,将输入表切片并生成MLREPORTGEN.UTILS.TablesLICE对象。这些对象具有切片表和原始输入表的开始和结束列索引。
切片机= mlreportgen.utils.TableSlicer (“表”formalTable,“MaxCols”9);slices = slicer.slice();
使用起始和结束索引创建自定义标题。然后将自定义切片表标题和表切片添加到章节中。
为了slice = slics str = sprintf(“从列%d到列%d”,slice.startcol,slice.endcol);帕拉=段(str);para.bold = true;para.style = [para.style,{learwithnext(true),......OuterMargin (“0pt”那“0pt”那“5pt”那“0pt”)}];添加(章节,para);添加(章节,slice.table);结尾
生成并显示报告。
add (rpt,章);关闭(rpt);
结果:输出比前两次试验好,但是表片很难读取,而且彼此之间没有连接。
试验数量4:基于到目前为止的试用输出,减少MaxCols值以创建4个表切片。使用重复分子属性在所有切片中重复列。要连接所有4个切片,请将Reameatcols属性值设置为1,以便在每个表切片中重复相机ID列。
进口mlreportgen.dom。*进口mlreportgen.report。*;进口mlreportgen.utils。*RPT =报告(“TrafficCameraDataSlicing-2”那“pdf”);章节=章节(“标题”那“奥斯汀的交通摄影机”);
将MaxCols值设置为6,重复分子值为1。
切片机= mlreportgen.utils.TableSlicer (“表”formalTable,“MaxCols”那......6,“RepeatCols”,1);slices = slicer.slice();
使用开始和结束索引创建自定义标题。将自定义切片表标题和表切片添加到章节中。
为了slice = slics str = sprintf(“重复列索引:%d,SlicedColumns:从列%d到列%d”那......slicer.RepeatCols,切片。StartCol slice.EndCol);帕拉=段(str);para.bold = true;para.style = [para.style,{learwithnext(true),......OuterMargin (“0pt”那“0pt”那“5pt”那“0pt”)}];添加(章节,para);添加(章节,slice.table);结尾
生成并显示报告。
add (rpt,章);关闭(rpt);rptview (rpt);
结果:输出是易读的,它满足在纵向页面上打印表的原始要求。输入表样式,具有粗体标头和内部边距,这些块在所有表切片中保留。
桌面图块是为读者定制的,以了解表条目数据。
The MathWorks, Inc .版权所有