主要内容

跨行和列跨表项

这些示例展示了如何使表项跨行和跨列。

非正式的表

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

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

导入DOM包,这样就不必使用长且完全限定的类名。

进口mlreportgen.dom。*

设置文档并添加一个标题来描述表格。

要创建PDF报告,请将输出类型从“docx”更改为“PDF”。要创建HTML报告,请将“docx”更改为“HTML”或“HTML -file”%一个多文件或单文件报告。rpt =文档(“myReport”“多克斯”);h =标题(1,“使用非正式表的多个行和列表条目”);h. style = [h.]风格{HAlign (“中心”)});追加(rpt, h);

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

tableStyle ={宽度(“100%”),边界(“固体”), ColSep (“固体”), RowSep (“固体”)};mainHeaderRowStyle = {VAlign(“中间”), InnerMargin (“2 pt”“2 pt”“2 pt”“2 pt”),...写成BackgroundColor (“钢蓝色的”)};mainHeaderTextStyle ={粗体,OuterMargin(“0 pt”“0 pt”“0 pt”“0 pt”), FontFamily (“天线”)};subHeaderRowStyle = {VAlign(“中间”), InnerMargin (“2 pt”“2 pt”“2 pt”“2 pt”),写成BackgroundColor (天蓝色的)};subHeaderTextStyle ={粗体,外边框(“0 pt”“0 pt”“0 pt”“0 pt”), FontFamily (“天线”)};bodyStyle = {OuterMargin(“0 pt”“0 pt”“0 pt”“0 pt”), InnerMargin (“2 pt”“2 pt”“2 pt”“0 pt”)};

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

数据= {“约翰。”“史密斯”纳蒂克,妈的“简”“母鹿”“波士顿”};t =表(3);t. style = [t.]风格tableStyle];

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

r = TableRow;r. style = [r.]风格mainHeaderRowStyle];p =段落(“名字”);p. style = [p.]样式mainHeaderTextStyle {“中心”)});te = TableEntry(p);te。ColSpan = 2;追加(r, te);p =段落(“地址”);p. style = [p.]风格mainHeaderTextStyle];te = TableEntry(p);te。RowSpan = 2;追加(r, te);追加(t, r);

在表中为Name的第一个和最后一个子标题创建第二行。尽管表有三列宽,但第二行只包含两个条目,因为Address字段横跨了第一行和第二行。

r = TableRow;r. style = [r.]风格subHeaderRowStyle];p =段落(“第一”);p. style = [p.]风格subHeaderTextStyle];te = TableEntry(p);追加(r, te);p =段落(“最后一次”);p. style = [p.]风格subHeaderTextStyle];te = TableEntry(p);追加(r, te);追加(t, r);

遍历示例数据,将其添加到表中。

k = 1:size(data, 1) r = TableRow;r. style = [r.]风格bodyStyle];te = TableEntry(data{k,1});追加(r, te);te = TableEntry(data{k,2});追加(r, te);te = TableEntry(data{k,3});追加(r, te);追加(t, r);结束

将表添加到文档中。

追加(rpt, t);

正式的表格

这个例子展示了如何在一个DOM正式表对象中使用行和列的跨越来创建下面的表。

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

导入DOM包,这样就不必使用长且完全限定的类名。

进口mlreportgen.dom。*

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

br = PageBreak();追加(rpt, br);h =标题(1,“使用正式表的多个行和列表项”);h. style = [h.]风格{HAlign (“中心”)});追加(rpt, h);

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

tableStyle ={宽度(“100%”),边界(“固体”), ColSep (“固体”), RowSep (“固体”)};mainHeaderRowStyle = {VAlign(“中间”), InnerMargin (“2 pt”“2 pt”“2 pt”“2 pt”),...写成BackgroundColor (“钢蓝色的”)};mainHeaderTextStyle ={粗体,OuterMargin(“0 pt”“0 pt”“0 pt”“0 pt”), FontFamily (“天线”)};subHeaderRowStyle = {VAlign(“中间”), InnerMargin (“2 pt”“2 pt”“2 pt”“2 pt”),写成BackgroundColor (天蓝色的)};subHeaderTextStyle ={粗体,外边框(“0 pt”“0 pt”“0 pt”“0 pt”), FontFamily (“天线”)};bodyStyle = {OuterMargin(“0 pt”“0 pt”“0 pt”“0 pt”)};

创建一些要包含在表中的示例数据。然后,使用Body部分中的示例数据创建一个FormalTable对象。

数据= {“约翰。”“史密斯”纳蒂克,妈的“简”“母鹿”“波士顿”};t = FormalTable(数据);t. style = [t.]风格tableStyle];t.Body. tableentriesstyle = [t.Body. tableentriesstyle]TableEntriesStyle bodyStyle);

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

r = TableRow;r. style = [r.]风格mainHeaderRowStyle];p =段落(“名字”);p. style = [p.]样式mainHeaderTextStyle {“中心”)});te = TableEntry(p);te。Style = [te.]风格mainHeaderTextStyle];te。ColSpan = 2;追加(r, te);p =段落(“地址”);p. style = [p.]风格mainHeaderTextStyle];te = TableEntry(p);te。Style = [te.]风格mainHeaderTextStyle];te。RowSpan = 2;追加(r, te); append(t.Header, r);

在表中为Name的第一个和最后一个子标题创建第二行。尽管表有三列宽,但第二行只包含两个条目,因为Address字段横跨第一行和第二行。

r = TableRow;r. style = [r.]风格subHeaderRowStyle];p =段落(“第一”);p. style = [p.]风格subHeaderTextStyle];te = TableEntry(p);追加(r, te);p =段落(“最后一次”);p. style = [p.]风格subHeaderTextStyle];te = TableEntry(p);追加(r, te);附加(t。头,r);

将表添加到文档中。

追加(rpt, t);

页面布局表

这个例子展示了如何使用行和列跨为复杂的布局创建一个不可见的页面布局表。

导入DOM包,这样就不必使用长且完全限定的类名。

进口mlreportgen.dom。*

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

br = PageBreak();追加(rpt, br);h =标题(1,“多列隐形表”);h. style = [h.]风格{HAlign (“中心”)});追加(rpt, h);

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

mainTableStyle ={宽度(“100%”),边界(“没有”) ColSep (“没有”), RowSep (“没有”)};dataTableStyle ={边框(“固体”), ColSep (“点”), RowSep (“固体”),...OuterMargin (“0 pt”“0 pt”“0 pt”“0 pt”)};dataTableEntriesStyle = {OuterMargin(“0 pt”“0 pt”“0 pt”“0 pt”), VAlign (“中间”)};histStyle = {InnerMargin(“2 pt”“2 pt”“2 pt”“2 pt”),...HAlign (“中心”), VAlign (“底”),宽度(“5”)、高(“4”)};

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

Coinflips = randi(2, [500, 10]);numHeads = sum(硬币-1,2);p =文本([“下面的图表显示了500次试验的结果,其中一枚硬币被投掷了10次。”...“然后计算硬币正面朝上的次数。”...表格显示了前20次试验的结果]);dataHeader = {“审判”“头”};dataBody = [(1:20)', numHeads(1:20)];dataTable = FormalTable(dataHeader, dataBody);数据表。TableEntriesStyle = [dataTable.]TableEntriesStyle dataTableEntriesStyle];dataTable.Header. style = [dataTable.Header. style]。风格{大胆}];数据表。Style = [dataTable.]风格dataTableStyle]; histogram(numHeads); title(“结果”)包含(“正面数”) ylabel (“试验次数”) saveas (gcf“histogram_img.png”);close(gcf) h =图像“histogram_img.png”);

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

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

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

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

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

row2 = TableRow;entry3 = TableEntry;h. style = [h.]风格histStyle];追加(entry3 h);追加(row2 entry3);entry3。Style = [entry3.]风格{宽度(“60%”)});追加(t, row2);

生成并显示报告。

追加(rpt, t);关闭(rpt);rptview (rpt);