主要内容

跨越行和列的表条目

这些示例显示如何制作表项跨度行和列。

非正式表

此示例显示如何在DOM非正式表对象中使用行和列以创建下表。

非正式表是一个不包含预定义头部,身体和脚部的表。但是,您可以将非正式表的前一行格式化为标题,因为此示例显示。

导入DOM包,以便您不必使用长,完全限定的类名。

进口mlreportgen.dom。*

设置文档并添加标题以描述表。

%要创建PDF报告,请将输出类型从“DOCX”更改为“PDF”。%要创建HTML报告,将“DOCX”更改为“HTML”或“HTML-File”%分别是一个多重或单文件报告。RPT =文件('我的报告''docx');h =标题(1,“使用非正式表的多行和列表条目”);H.Style = [H.Style {rabign('中央')}];附录(RPT,H);

为不同的文档组件创建要使用的样式的单元格阵列。包含的表跨越页面的宽度,并具有分隔条目的实线。主标头是钢蓝色,然后子标题是一个打火机的蓝色。

tableStyle = {宽度('100%'), 边界('坚硬的'),colsep('坚硬的'), RowSep ('坚硬的')};mainhonderrowstyle = {valign('中间'),innermargin(“2 pt”“2 pt”“2 pt”“2 pt”),......背景颜色('steelblue')};mainhondertextstyle = {bold,outermargin('0pt''0pt''0pt''0pt'), 字体系列('arial')};subheaderrowstyle = {valign('中间'),innermargin(“2 pt”“2 pt”“2 pt”“2 pt”), 背景颜色('天蓝色')};subheadertextstyle = {bold,outermargin('0pt''0pt''0pt''0pt'), 字体系列('arial')};Bodystyle = {utermargin('0pt''0pt''0pt''0pt'),innermargin(“2 pt”“2 pt”“2 pt”'0pt')};

创建一些示例数据以包含在表中。然后,创建表对象。

数据= {'约翰''史密斯''纳尼克,马';'简''doe'“波士顿,马”};t =表(3);t.Style = [T.Style TableStyle];

为包含Name和Address头的表的第一行创建TableRow对象。Name标头有两个子标头,因此它跨两列。这是通过表条目的ColSpan属性设置的。Address标头没有任何子标头,所以它横跨两行。使用表项的Rowspan属性设置。

r = tablerow;R.Style = [R.Style MainHondErrowStyle];p =段落('名称');p.style = [p.StyleMainphentEleTextStyle {ralign('中央')}];te =桌选(p);te.colspan = 2;附录(r,te);p =段落('地址');p.style = [p.style mainphentextstyle];te =桌选(p);te.rowspan = 2;附录(r,te);附录(t,r);

为名称的第一个和最后一个子标题中的表中创建第二行。即使表是三列宽,第二行也只包含两个条目,因为地址字段跨越第一行和第二行。

r = tablerow;r.style = [r.style subheaderrowstyle];p =段落('第一的');p.style = [p.style subheadertextstyle];te =桌选(p);附录(r,te);p =段落('最后的');p.style = [p.style subheadertextstyle];te =桌选(p);附录(r,te);附录(t,r);

循环通过示例数据将其添加到表中。

为了k = 1:大小(数据,1)r = tablerow;R.Style = [R.Style Bodystyle];te = ebentry(数据{k,1});附录(r,te);te = ebentry(数据{k,2});附录(r,te);te = ebentry(数据{k,3});附录(r,te);附录(t,r);结尾

将表添加到文档中。

附录(RPT,T);

正式桌子

此示例显示如何在DOM正式表对象中使用行和列以创建下表。

正式表是一个表,它分别由表格,主体和页脚部分的三个子表组成。使用正式表而不是非正式表将需要特殊格式的标题从数据中分开,从数据中可以直接传递给正式的表构造函数以填充身体表。

导入DOM包,以便您不必使用长,完全合格的类名。

进口mlreportgen.dom。*

移动到现有文档中的新页面并添加标题以描述表。

br = pagebreak();附录(RPT,BR);h =标题(1,“使用正式表的多行和列表条目”);H.Style = [H.Style {rabign('中央')}];附录(RPT,H);

为不同的文档组件创建要使用的样式的单元格阵列。包含的表跨越页面的宽度,并具有分隔条目的实线。主标头是钢蓝色,然后子标题是一个打火机的蓝色。

tableStyle = {宽度('100%'), 边界('坚硬的'),colsep('坚硬的'), RowSep ('坚硬的')};mainhonderrowstyle = {valign('中间'),innermargin(“2 pt”“2 pt”“2 pt”“2 pt”),......背景颜色('steelblue')};mainhondertextstyle = {bold,outermargin('0pt''0pt''0pt''0pt'), 字体系列('arial')};subheaderrowstyle = {valign('中间'),innermargin(“2 pt”“2 pt”“2 pt”“2 pt”), 背景颜色('天蓝色')};subheadertextstyle = {bold,outermargin('0pt''0pt''0pt''0pt'), 字体系列('arial')};Bodystyle = {utermargin('0pt''0pt''0pt''0pt')};

创建一些示例数据以包含在表中。然后,使用主体部分中的示例数据创建汇集对象。

数据= {'约翰''史密斯''纳尼克,马';'简''doe'“波士顿,马”};t =汇编(数据);t.Style = [T.Style TableStyle];T.Body.Tableentriesttyle = [T.Body.Tableenttiesttyle,Bodystyle];

使用与前一个示例相同的方法构造形式的对象的标题表。为包含Name和Address头的表的第一行创建TableRow对象。Name标头有两个子标头,因此它跨两列。这是通过表条目的ColSpan属性设置的。Address标头没有任何子标头,所以它横跨两行。使用表项的Rowspan属性设置。

r = tablerow;R.Style = [R.Style MainHondErrowStyle];p =段落('名称');p.style = [p.StyleMainphentEleTextStyle {ralign('中央')}];te =桌选(p);te.style = [te.style mainhealhertextstyle];te.colspan = 2;附录(r,te);p =段落('地址');p.style = [p.style mainphentextstyle];te =桌选(p);te.style = [te.style mainhealhertextstyle];te.rowspan = 2;附录(r,te);附录(t.header,r);

为名称的第一个和最后一个子标题中的表中创建第二行。即使表是三列宽,第二行也只包含两个条目,因为地址字段跨越第一行和第二行。

r = tablerow;r.style = [r.style subheaderrowstyle];p =段落('第一的');p.style = [p.style subheadertextstyle];te =桌选(p);附录(r,te);p =段落('最后的');p.style = [p.style subheadertextstyle];te =桌选(p);附录(r,te);附录(t.header,r);

将表添加到文档中。

附录(RPT,T);

页面布局表

此示例显示了如何使用行和列跨越为复杂布局创建不可见页面布局表。

导入DOM包,以便您不必使用长,完全合格的类名。

进口mlreportgen.dom。*

移动到现有文档中的新页面并添加标题以描述表。

br = pagebreak();附录(RPT,BR);h =标题(1,'多列不可见表');H.Style = [H.Style {rabign('中央')}];附录(RPT,H);

确定页面上不同组件的样式。主表是看不见的,因此它没有边框或分隔符。

maintableestyle = {宽度('100%'), 边界('没有任何')COLSEP('没有任何'), RowSep ('没有任何')};dataTableStyle = {边框('坚硬的'),colsep('点缀'), RowSep ('坚硬的'),......aterermargin('0pt''0pt''0pt''0pt')};datatableentriestyle = {utermargin('0pt''0pt''0pt''0pt'),勇敢('中间')};histstyle = {innermargin(“2 pt”“2 pt”“2 pt”“2 pt”),......HAlign ('中央'),勇敢('底部'), 宽度('5英寸'), 高度('4进')};

创建表示500个随机硬币翻转的示例数据。然后,创建文本,汇编和图像对象以显示有关数据的信息。

Coinflips = randi(2, [500, 10]);numHeads = (coinflips-1, 2)之和;([p =文本“下面的剧情显示了500项试验的结果,其中硬币翻转10次,”......“并且计算了落在头上的硬币的次数。'......“该表显示了前20项试验的结果。]);dataheader = {'审判''头'};DataBody = [(1:20)',NumHonds(1:20)];DataTable =汇编(DataHeader,数据流);DataTable.Tableentriestyle = [DataTable.Tableentriesstyle DatatableentTyle];DataTable.Header.Style = [DataTable.Header.Style {Bold}];DataTable.Style = [DataTable.Style DataTableyyle];直方图(NumHeads);标题('结果')Xlabel(“头部数量”)ylabel('试验数量')救世者(GCF,'timogram_img.png');close(gcf) h = Image()'timogram_img.png');

创建不可见表并开始添加组件。将数据表添加到第一行,并指定它跨越两行。

t =表(2);t.style = [t.style maintablestyle];Row1 = Tablerow;Row1.Style = [Row1.Style {宽度('100%')}];entry1 =表选术;附录(参赛单,DataTable);entry1.rowspan = 2;entry1.style = [entry1.style {宽度(“40%”)}];附加(Row1,Entry1);

同时将文本对象添加到第一行,然后将行追加到表中。

Entry2 =表选术(P);entry2.style = [entry2.style {宽度(“60%”)}];附加(Row1,Entry2);附加(t,row1);

创建一个新行并将直方图图像添加为唯一的条目。数据表已经填充了第一行和第二行的第一列,因此直方图将放置在第二列中。

Row2 = Tablerow;Entry3 =表选术;H.Style = [H.Style Histstyle];附录(entry3,h);附加(Row2,Entry3);entry3.style = [entry3.style {宽度('60%')}];附加(t,row2);

生成并显示报告。

附录(RPT,T);关闭(RPT);rptview(RPT);