适合宽表的页面
这个例子展示了如何适应宽表在一份报告中称。
这个例子是一个垫的数据文件包含单元阵列交通摄像头的数据来自奥斯汀,德克萨斯州。这个单元格数组包含信息,如相机位置,地位和日期时打开等。
我们假设traffic_data。垫文件,其中包含单元阵列的交通摄像头数据在当前工作目录中。需求是打印表所有的列在纸上,是由11英寸长,8.5英寸宽的肖像取向。
创建一个表:
在一份报告中包含一个表,使用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 =“固体”;formalTable。ColSep =“固体”;formalTable。边境=“固体”;formalTable.Header。TableEntriesStyle = [formalTable.Header.TableEntriesStyle,…{mlreportgen.dom.Bold (true)});formalTable。TableEntriesStyle = [formalTable.TableEntriesStyle,…{mlreportgen.dom.InnerMargin (“2 pt”,“2 pt”,“2 pt”,“2 pt”),…mlreportgen.dom.WhiteSpace (“保存”)});
试验1号:添加DOM正式表在一个默认的画像页大小8.5英寸宽,11英寸长。
导入DOM和报告API包所以你不必使用类名。
进口mlreportgen.dom。*进口mlreportgen.report。*;
创建一个容器来保存报告内容。
%创建一个报告,输出类型从“pdf”更改为“多克斯”。rpt =报告(“TrafficCameraDataPortrait”,“pdf”);
创建一个章的标题“交通摄像头在奥斯汀”。
章=章(“标题”,“交通摄像头在奥斯汀”);
添加创建的表章,章添加到报告。
添加(章,formalTable);add (rpt,章);关闭(rpt);
结果:表生成的报告包括但表列太窄。拟合整个表在肖像页面中创建了一个表,不清晰。
试验2号:适应宽表在面向景观的页面,这是11英寸宽,8.5英寸长。
进口mlreportgen.dom。*进口mlreportgen.report。*;进口mlreportgen.utils。*rpt =报告(“TrafficCameraDataLandscape”,“pdf”);章=章(“标题”,“交通摄像头在奥斯汀”);
报告景观布局设置为true。将表添加到章节。
rpt.Layout。景观= true;添加(章,formalTable);add (rpt,章);关闭(rpt);
结果:虽然景观布局比画像页报告,许多列不清晰和表不容易阅读。
3号试验:使用报告生成器TableSlicer实用程序将输入表分割成多个切片。其MaxCols属性指定每个表的最大列数片。
首先,尝试将表分成两片和打印他们默认8.5宽11英寸长肖像。
进口mlreportgen.dom。*进口mlreportgen.report。*;进口mlreportgen.utils。*rpt =报告(“TrafficCameraDataSlicing-1”,“pdf”);章=章(“标题”,“交通摄像头在奥斯汀”);
现在,切片机对象创建一个表,并指定正式表作为输入。输入表有18列,所以创建两片,MaxCols属性设置为9。
表切片机效用有一片方法输入表并生成mlreportgen.utils片。TableSlice对象。这些对象分割表,开始和结束列原始输入表的索引。
切片机= mlreportgen.utils.TableSlicer (“表”formalTable,“MaxCols”9);片= slicer.slice ();
使用开始和结束索引创建一个定制的标题。然后添加定制的切片表标题和表片章。
为片=片str = sprintf (“从列% d % d”列、slice.StartCol slice.EndCol);帕拉=段(str);帕拉。大胆= true;帕拉。风格= [para.Style, {KeepWithNext(真正的),…OuterMargin (“0 pt”,“0 pt”,“5 pt”,“0 pt”)});添加(章,para);添加(章,slice.Table);结束
生成和显示报告。
add (rpt,章);关闭(rpt);
结果:输出是比前两个试验,但是表片很难阅读和相互脱离。
试验数量4:基于试验输出到目前为止,减少MaxCols价值创造4表片。使用RepeatCols属性重复列在所有的片。连接所有的4片,RepeatCols属性值设置为1,所以镜头重复ID列在每个表片。
进口mlreportgen.dom。*进口mlreportgen.report。*;进口mlreportgen.utils。*rpt =报告(“TrafficCameraDataSlicing-2”,“pdf”);章=章(“标题”,“交通摄像头在奥斯汀”);
MaxCols值设置为6和RepeatCols值为1。
切片机= mlreportgen.utils.TableSlicer (“表”formalTable,“MaxCols”,…6,“RepeatCols”1);片= slicer.slice ();
创建一个定制的标题使用开始和结束索引。添加自定义切表标题和表片章。
为片=片str = sprintf (“重复列指数:% d, SlicedColumns:从列% d % d”列,…slicer.RepeatCols,切片。StartCol slice.EndCol);帕拉=段(str);帕拉。大胆= true;帕拉。风格= [para.Style, {KeepWithNext(真正的),…OuterMargin (“0 pt”,“0 pt”,“5 pt”,“0 pt”)});添加(章,para);添加(章,slice.Table);结束
生成和显示报告。
add (rpt,章);关闭(rpt);rptview (rpt);
结果:输出是清晰的,它满足原始需求表打印一个肖像页面。输入表的风格,大胆的标题和内部利润保留在所有表片。
表瓷砖是读者了解定制数据表条目。
版权2018年MathWorks公司