通过编程定义样式
此示例显示如何以编程方式定义一组样式。样式是一组命名的格式。样式允许您通过指定样式名称来定义报告元素的外观,而不是定义所有单独的格式。使用样式可以简化报告程序的创建。DOM API 允许您使用在报告模板中定义的样式。或者,如本例所示,您可以在报告程序中定义样式。如果您需要或希望创建不需要模板的报告程序,请考虑在报告程序中定义样式。
在此示例中,您将生成一份报告,其中包含汇总一系列测试结果的表格。该示例创建测试数据。在实际应用程序中,您可以将报告程序实现为一个函数,该函数接受测试数据作为其输入之一。以下是此示例生成的报告:
创建测试数据
将测试数据创建为结构数组。
test(1).Name = "100% Success"; test(1).Description = "Percent of total loss(failing hits) must be==0%"; test(1).Status = "Fail"; test(1).StatusDetail = "Loss=22.33%"; test(2).Name = "No Fail"; test(2).Description = "Fail Count must be ==0"; test(2).Status = "Fail"; test(2).StatusDetail = "Fail Count=69"; test(3).Name = "Fast Hit Rate"; test(3).Description = "Final Throughput must be>=10Hits per second"; test(3).Status = "Pass"; test(3).StatusDetail = "Hits per Second=27.978"; test(4).Name = "Low Execution Time"; test(4).Status = "Pass"; test(4).Description = "Avg. Exe Time(ms) must be <750.0"; test(4).StatusDetail = "Avg Exe Time(ms)=244.33";
导入 DOM API 命名空间
导入 DOM API 命名空间,这样您就不必使用完全限定的类名。
import mlreportgen.dom.*;
创建一个文档
要创建 Microsoft® Word 文档,请将输出类型从 pdf
更改为 docx
。要创建 HTML 文档,请将 pdf
更改为 html
或 html-file
。
d = Document("report","pdf");
为样式创建容器
创建一个 containers.Map
对象作为样式表,即将样式名称映射到样式包含的格式集的对象。
styles = containers.Map;
定义样式
此示例使用顶级部分标题样式和子部分标题样式。首先,创建一个定义两个标题共同的外观的样式。
styles("baseHeadingPara") = {Color("darkblue"),FontFamily("Arial")};
定义作为顶级报告部分标题的段落的样式。此样式指定大纲级别为 1,以便标题作为报告目录中的顶级条目出现。
styles("heading1Para") = [styles("baseHeadingPara"),{OutlineLevel(1),Bold,... FontSize("16pt")}];
定义第二级标题。
styles("heading2Para") = [styles("baseHeadingPara"),{OutlineLevel(2),... OuterMargin("0in","0in","12pt","5pt"),Italic,FontSize("14pt")}];
定义表格、表格标题和表格条目的样式。
styles("testSummaryTable") = {Border("solid"),RowSep("solid"),ColSep("solid"),Width("7in")}; styles("testSummaryTableHeader") = {Bold}; styles("testSummaryTableEntry") = {InnerMargin("10pt")};
定义测试状态的样式。
styles("passText") = {Color("green")}; styles("failText") = {Color("red")};
创建报告内容
创建报告标题。
heading1Para = Paragraph("Load Test Information"); heading1Para.Style = styles("heading1Para"); append(d,heading1Para);
创建测试摘要表描述标题。
heading2Para = Paragraph("Quality of Service Report Summary"); heading2Para.Style = styles("heading2Para"); append(d,heading2Para);
创建测试摘要表标题内容。定义在表头中显示的标签。
testSummaryTableHeader = ["Name","Description","Status","Status Detail"];
创建一个元胞数组来保存测试摘要表的内容。该元胞数组稍后将用于创建表格。
nTests = numel(test); testSummaryTableBody = cell(nTests,4);
将测试数据的每一项存储在元胞数组的一个单元格中。
for t = 1:nTests testSummaryTableBody{t,1} = test(t).Name; testSummaryTableBody{t,2} = test(t).Description; result = test(t).Status; status = Paragraph(result); if result == "Pass" status.Style = styles("passText"); else status.Style = styles("failText"); end testSummaryTableBody{t,3} = status; testSummaryTableBody{t,4} = test(t).StatusDetail; end
创建测试摘要表。
testSummaryTable = FormalTable(testSummaryTableHeader,testSummaryTableBody); testSummaryTable.Style = styles("testSummaryTable"); testSummaryTable.Header.Style = styles("testSummaryTableHeader"); testSummaryTable.TableEntriesStyle = styles("testSummaryTableEntry");
将测试摘要表追加到文档中。
append(d,testSummaryTable);
关闭并查看文档
close(d); rptview(d);
另请参阅
mlreportgen.dom.Color
| mlreportgen.dom.Document
| mlreportgen.dom.FontFamily
| mlreportgen.dom.OutlineLevel
| mlreportgen.dom.Paragraph
| mlreportgen.dom.FormalTable
| mlreportgen.dom.FontSize
| mlreportgen.dom.RowSep
| mlreportgen.dom.InnerMargin
| mlreportgen.dom.Border
| mlreportgen.dom.OuterMargin