这些示例展示了如何使表条目跨越行和列。
这个示例展示了如何在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 ={粗体,OuterMargin(“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对象。
data = {“约翰。”,“史密斯”,纳蒂克,妈的;“简”,“母鹿”,“波士顿”};t =表(3);t.Style = [t。风格tableStyle];
为包含Name和Address标头的表的第一行创建一个TableRow对象。Name标题有两个子标题,因此它跨越两个列。这是用表项的ColSpan属性设置的。地址标头没有任何子标头,所以它跨两行。这是用表项的RowSpan属性设置的。
r = TableRow;r.Style = [r。风格mainHeaderRowStyle];p =段(“名字”);p.Style = [p。风格mainHeaderTextStyle {HAlign (“中心”)});te = TableEntry (p);te。ColSpan = 2;追加(r, te);p =段(“地址”);p.Style = [p。风格mainHeaderTextStyle];te = TableEntry (p);te。行宽= 2;追加(r, te);追加(t, r);
在表中为Name的First和Last子标题创建第二行。即使表有三列宽,第二行也只包含两个条目,因为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(数据{k, 1});追加(r, te);te = TableEntry(数据{k, 2});追加(r, te);te = TableEntry(数据{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 ={粗体,OuterMargin(“0 pt”,“0 pt”,“0 pt”,“0 pt”), FontFamily (“天线”)};bodyStyle = {OuterMargin (“0 pt”,“0 pt”,“0 pt”,“0 pt”)};
创建表中包含的一些示例数据。然后,使用Body部分中的示例数据创建一个FormalTable对象。
data = {“约翰。”,“史密斯”,纳蒂克,妈的;“简”,“母鹿”,“波士顿”};t = FormalTable(数据);t.Style = [t。风格tableStyle];(t.Body t.Body.TableEntriesStyle =。TableEntriesStyle bodyStyle);
使用与前面示例相同的方法构造FormalTable对象的Header表。为包含Name和Address标头的表的第一行创建一个TableRow对象。Name标题有两个子标题,因此它跨越两个列。这是用表项的ColSpan属性设置的。地址标头没有任何子标头,所以它跨两行。这是用表项的RowSpan属性设置的。
r = TableRow;r.Style = [r。风格mainHeaderRowStyle];p =段(“名字”);p.Style = [p。风格mainHeaderTextStyle {HAlign (“中心”)});te = TableEntry (p);te。= (te风格。风格mainHeaderTextStyle];te。ColSpan = 2;追加(r, te);p =段(“地址”);p.Style = [p。风格mainHeaderTextStyle];te = TableEntry (p);te。= (te风格。风格mainHeaderTextStyle];te。行宽= 2;追加(r, te); append(t.Header, r);
在表中为Name的First和Last子标题创建第二行。即使表有三列宽,第二行也只包含两个条目,因为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 = (coinflips-1, 2)之和;([p =文本“下图显示了500次投掷硬币10次的结果,”,...“还计算了硬币正面朝上落地的次数。”,...这个表格显示了前20次试验的结果。]);dataHeader = {“审判”,“头”};dataBody = [(1:20)', numHeads(1:20)];dataTable = FormalTable(dataHeader, dataBody);数据表。TableEntriesStyle =[数据表。TableEntriesStyle dataTableEntriesStyle];(dataTable.Header dataTable.Header.Style =。风格{大胆}];数据表。= [dataTable风格。风格dataTableStyle]; histogram(numHeads); title(“结果”)包含(头的数量) ylabel (试验的数量) saveas (gcf“histogram_img.png”);close(gcf) h = Image(“histogram_img.png”);
创建不可见表并开始添加组件。将数据表添加到第一行,并指定它跨两行。
t =表(2);t.Style = [t。风格mainTableStyle];第一行= TableRow;第一行。风格=(第一行。风格{宽度(“100%”)});entry1 = TableEntry;追加(entry1 dataTable);entry1。行宽= 2;entry1。= [entry1风格。风格{宽度(“40%”)});追加(第一行,entry1);
将Text对象也添加到第一行,然后将该行追加到表中。
entry2 = TableEntry (p);entry2。= [entry2风格。风格{宽度(“60%”)});追加(第一行,entry2);追加(t,第一行);
创建一个新行并添加直方图图像作为唯一的条目。数据表已经填满了第一和第二行的第一列,因此直方图将被放置在第二列。
row2 = TableRow;entry3 = TableEntry;h.Style = [h。风格histStyle];追加(entry3 h);追加(row2 entry3);entry3。= [entry3风格。风格{宽度(“60%”)});追加(t, row2);
生成并显示报告。
追加(rpt, t);关闭(rpt);rptview (rpt);