主要内容

跨行和列跨表项

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

非正式的表

这个示例展示了如何使用DOM非正式表对象中的行和列生成来创建下一个表。

非正式表是指不包含预定义的头、体和脚部分的表。但是,可以将非正式表的前几行格式化为标题,如本例所示。

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

进口mlreportgen.dom。*

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

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

为不同文档组件使用的样式创建单元格数组。所包含的表跨越页面的宽度,并且用实线分隔条目。主标题是钢蓝色,然后子标题是浅的天蓝色。

tableStyle = {宽度(“100%”),边界('坚硬的'),colsep('坚硬的'),Rowsep('坚硬的')};mainhonderrowstyle = {valign(“中间”), InnerMargin ('2pt''2pt''2pt''2pt'),......背景颜色('steelblue')};mainHeaderTextStyle ={粗体,外边框(“0 pt”“0 pt”“0 pt”“0 pt”), 字体系列(“天线”)};subHeaderRowStyle = {VAlign (“中间”), InnerMargin ('2pt''2pt''2pt''2pt'),写成BackgroundColor (天蓝色的)};subheadertextstyle = {bold,outermargin(“0 pt”“0 pt”“0 pt”“0 pt”), 字体系列(“天线”)};Bodystyle = {utermargin(“0 pt”“0 pt”“0 pt”“0 pt”), InnerMargin ('2pt''2pt''2pt'“0 pt”)};

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

data = {'约翰'“史密斯”'纳尼克,马';'简''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。风格mainHeaderTextStyle {HAlign ('中央')});te = TableEntry (p);te。ColSpan = 2;追加(r, te);p =段落('地址');p.style = [p.style mainphentextstyle];te = TableEntry (p);te.rowspan = 2;追加(r, te);附录(t,r);

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

r = TableRow;r.Style = [r。风格subHeaderRowStyle];p =段落(“第一”);p.style = [p.style subheadertextstyle];te = TableEntry (p);追加(r, te);p =段落('最后的');p.style = [p.style subheadertextstyle];te = TableEntry (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 ('2pt''2pt''2pt''2pt'),......背景颜色('steelblue')};mainHeaderTextStyle ={粗体,外边框(“0 pt”“0 pt”“0 pt”“0 pt”), 字体系列(“天线”)};subHeaderRowStyle = {VAlign (“中间”), InnerMargin ('2pt''2pt''2pt''2pt'),写成BackgroundColor (天蓝色的)};subheadertextstyle = {bold,outermargin(“0 pt”“0 pt”“0 pt”“0 pt”), 字体系列(“天线”)};Bodystyle = {utermargin(“0 pt”“0 pt”“0 pt”“0 pt”)};

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

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

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

r = TableRow;R.Style = [R.Style MainHondErrowStyle];p =段落('名称');p.Style = [p。风格mainHeaderTextStyle {HAlign ('中央')});te = TableEntry (p);te.style = [te.style mainhealhertextstyle];te。ColSpan = 2;追加(r, te);p =段落('地址');p.style = [p.style mainphentextstyle];te = TableEntry (p);te.style = [te.style mainhealhertextstyle];te.rowspan = 2;追加(r, te);附录(t.header,r);

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

r = TableRow;r.Style = [r。风格subHeaderRowStyle];p =段落(“第一”);p.style = [p.style subheadertextstyle];te = TableEntry (p);追加(r, te);p =段落('最后的');p.style = [p.style subheadertextstyle];te = TableEntry (p);追加(r, te);附录(t.header,r);

将表添加到文档中。

附录(RPT,T);

页面布局表

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

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

进口mlreportgen.dom。*

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

br = pagebreak();附录(RPT,BR);h =标题(1,“多列隐形表”);H.Style = [H.Style {rabign('中央')});追加(rpt, h);

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

mainTableStyle ={宽度(“100%”),边界('没有任何')COLSEP('没有任何'),Rowsep('没有任何')};dataTableStyle ={边界('坚硬的'),colsep('点缀'),Rowsep('坚硬的'),......OuterMargin (“0 pt”“0 pt”“0 pt”“0 pt”)};datatableentriestyle = {utermargin(“0 pt”“0 pt”“0 pt”“0 pt”), VAlign (“中间”)};histStyle = {InnerMargin ('2pt''2pt''2pt''2pt'),......槌('中央'), VAlign ('底部'), 宽度(“5”)、高(“4”)};

创建代表500次随机抛硬币的示例数据。然后,创建Text、FormalTable和Image对象来显示有关数据的信息。

Coinflips = Randi(2,[500,10]);numhonds = sum(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 (试验的数量) saveas (gcf“histogram_img.png”);关闭(GCF)H =图像(“histogram_img.png”);

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

t =表(2);t.style = [t.style maintablestyle];Row1 = Tablerow;Row1.Style = [Row1.Style {宽度(“100%”)});entry1 = TableEntry;追加(entry1 dataTable);entry1。行宽= 2;entry1。= [entry1风格。风格{宽度(“40%”)});追加(第一行,entry1);

也将Text对象添加到第一行,然后将该行追加到表中。

entry2 = TableEntry (p);entry2。= [entry2风格。风格{宽度(“60%”)});追加(第一行,entry2);追加(t,第一行);

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

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

生成并显示报告。

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