主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

格式化表

您可以使用 mlreportgen.dom.Tablemlreportgen.dom.FormalTablemlreportgen.dom.MATLABTablemlreportgen.report.BaseTable 对象在报告中创建表。请参阅在报告生成器中选择要创建的表类型。您可以使用以下方法格式化任何这些类型的表或表的元素(部分,行,列组或条目):

  • 在创建表之前先格式化内容。例如,在使用数字创建表之前,先将其格式化为 MATLAB® 中的数字。请参阅表中的数字格式

  • 在利用 DOM 对象创建表之前,先对其进行格式化。例如,在使用 mlreportgen.dom.Paragraph 对象创建表条目之前,先对其进行格式化。

  • 修改默认模板样式或为表或表元素创建自定义模板样式。请参阅使用模板定义的样式设置表格式

  • 使用格式属性和格式对象以及代表表或表元素的对象来覆盖模板样式。请参阅通过编程设置表格式

有关格式化 MATLABTable 表的特定信息,请参阅 从 MATLAB 表创建表。有关格式化 BaseTable 表的特定信息,请参阅 创建报告 API 基表

对于表对象、表元素对象或包含在表元素对象中的对象,格式属性或格式对象指定的格式将覆盖基于模板的样式指定的等效格式。为对象指定的格式将覆盖容器对象指定的等效格式。例如,如果表条目包含 mlreportgen.dom.Paragraph 对象,则为 Paragraph 对象指定的文本颜色将覆盖为包含该对象的行指定的颜色。行颜色将覆盖包含该行的表指定的颜色。请参阅格式继承

使用模板定义的样式设置表格式

表和表元素具有默认的模板定义的样式。如果自定义适用于多个表,并且您习惯使用 Microsoft® Word 中的样式或编辑 HTML 或 PDF 报告的层叠样式表 (CSS),请考虑自定义模板定义的样式。

创建 Word 表样式

您可以通过将自定义 Microsoft Word 样式应用到表来格式化表。如果将表样式应用于 Word 正式表的一个或多个部分,请指定每个表列的宽度。否则,各部分的列可能无法对齐。

要在 Word 样式表中定义表样式:

  1. 创建 Microsoft Word 模板。有关创建 Microsoft Word 模板的信息,请参阅 创建 Microsoft Word 模板

  2. 使用以下方法之一打开 Word 模板文件:

    • 在 MATLAB 的当前文件夹窗格中,右键点击模板文件,然后点击在 MATLAB 外部打开

    • 在 MATLAB 之外,右键点击文件,然后点击打开

      注意

      不要双击 Word 模板文件来打开它。双击该文件将打开使用该模板的 Word 文档文件。

  3. 在 Word 中,在主页选项卡的样式组中,点击样式图标

  4. 点击管理样式按钮

  5. 点击新建样式

  6. 在根据格式创建新样式对话框中:

    • 指定名称

    • 样式类型设置为

    • 基于的样式中,选择新样式的基本样式。

    • 格式化部分中,指定格式以及该格式适用于表的哪些部分。

  7. 选择基于此模板的新文档,然后点击确定

  8. 管理样式对话框中,选择基于此模板的新文档,然后点击确定

  9. 保存模板。

有关使用 Word 模板进行格式化的示例,请参阅 创建斑马条纹表

创建 HTML 或 PDF 表样式

您可以使用模板中定义的 CSS 样式来格式化 HTML 和 PDF 表。要创建 HTML 或 PDF 模板,请参阅 创建 HTML 和 PDF 模板

要在 HTML 或 PDF 模板中定义表样式,请使用带有类名的 table 选择器。例如,此 CSS 代码指定具有类 MyTable 的表的样式。

table.MyTable {
  border-style: solid;
  border-bottom-color: rgb(128, 128, 128);
  border-bottom-width: thin;
  border-collapse: collapse;
}

您可以使用 CSS 后代选择器(空格)或子选择器 (>) 来指定表的后代或子代的格式。例如,此 CSS 代码指定样式为 td 的表的表条目(MyTable 元素)的格式。

table.MyTable td { 
      font-family: Arial, Helvetica, sans-serif; 
      font-size: 11pt; 
      text-align: center; 
   } 

请参阅修改 HTML 模板中的样式修改 PDF 模板中的样式

有关编辑 CSS 的信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/CSS/Reference 等文档。

有关使用 HTML 模板进行格式化的示例,请参阅 创建斑马条纹表

将样式应用于表或表元素

在模板中定义样式后,您可以将其应用于代表报告程序中的表或表元素的对象。将样式作为参量提供给对象构造函数或将其分配给对象的 StyleName 属性。您可以将样式分配给 mlreportgen.dom.FormalTablemlreportgen.dom.MATLABTablemlreportgen.dom.TableHeader 对象的 StyleName 属性,从而将样式应用于 mlreportgen.dom.TableBodymlreportgen.dom.TableEntry 对象的页眉、正文或页脚部分。

例如,假设您在报告模板中定义了名为 BodyParaTableTitleRuledTable 的样式。此示例在 Paragraph 构造函数中、StyleName 对象的 Paragraph 属性中以及 Table 构造函数中指定样式名称。

import mlreportgen.dom.*;
rank = 5;
rpt = Document("MyReport","html","MyTemplate");

p = Paragraph("Here is a magic square or rank 5:","BodyPara");
append(rpt,p);

p = Paragraph(sprintf("Rank %d MagicSquare",rank));
p.StyleName = "TableTitle";

append(rpt,Table(magic(rank),"RuledTable"));

close(rpt);
rptview(rpt.OutputPath);

您可以使用编程格式来覆盖基于模板的表样式中定义的样式。例如,假设您在模板中定义一个名为 UnruledTable 的表样式,以创建没有边框或列或行分隔线的表。然后,您可以覆盖报告程序中的样式来在表周围绘制框架。

import mlreportgen.dom.*;
rpt = Document("MyReport","html","MyTemplate");

table = Table(magic(5),"UnruledTable");
table.Border = "single";
append(rpt,table);

close(rpt);
rptview(rpt.OutputPath);

有关编程格式的详细信息,请参阅 通过编程设置表格式

使用样式表式化表条目

对于 HTML 和 PDF 报告,您可以使用 HTML 模板样式表中定义的样式来格式化表条目。定义表条目样式时,使用 td 元素选择器。例如:

td.TableEntryWithBorder {
  border:5px solid red;
}

要将模板定义的样式应用于表条目,请将 TableEntry 对象 StyleName 属性设置为样式的名称,或将样式名称指定为 TableEntry 构造函数的第二个参量。例如:

te = TableEntry("Hello World","TableEntryWithBorder");

通过编程设置表格式

如果您不习惯编辑 CSS,或者只想覆盖少数表或表元素的默认表样式,则可以通过编程方式设置表和表元素的格式。使用以下方法之一:

  • 设置代表表或表元素的对象的格式属性。

  • 将格式对象添加到代表表或表元素的对象的 Style 属性。通过将 Style 属性的现有值与包含新格式对象元胞数组连接起来来添加格式对象。例如:

    table.Style = [table.Style {Border("solid","black","3px")}];

以下是一些适用于 mlreportgen.dom.Tablemlreportgen.dom.FormalTablemlreportgen.dom.MATLABTable 对象的格式对象和相应的格式属性。

格式化格式化对象格式属性

表宽

mlreportgen.dom.Width

Width

表背景颜色

mlreportgen.dom.BackgroundColor

BackgroundColor

指定表周围的边框

mlreportgen.dom.Border

Border

边框颜色

mlreportgen.dom.Border

BorderColor

边框粗细

mlreportgen.dom.Border

BorderWidth

指定表左边框、右边框、上边框或下边框

mlreportgen.dom.Border

不适用

折叠表和表条目边框(仅限 HTML 报告)

mlreportgen.dom.BorderCollapse

BorderCollapse

指定列分隔线

mlreportgen.dom.ColSep

ColSep

列分隔线颜色

mlreportgen.dom.ColSep

ColSepColor

列分隔线粗细

mlreportgen.dom.ColSep

ColSepWidth

指定行分隔线

mlreportgen.dom.RowSep

RowSep

行分隔线颜色

mlreportgen.dom.RowSep

RowSepColor

行分隔线粗细

mlreportgen.dom.RowSep

RowSepWidth

从左边距缩进表

mlreportgen.dom.OuterMargin

OuterLeftMargin

表前或表后的空格

mlreportgen.dom.OuterMargin

不适用

表右侧的空间

mlreportgen.dom.OuterMargin

不适用

左对齐、右对齐或居中对齐表

mlreportgen.dom.HAlign

HAlign

指定表条目流方向(从左到右或从右到左)

mlreportgen.dom.FlowDirection

FlowDirection

调整表列的大小以适合内容

mlreportgen.dom.ResizeToFitContents

不适用

您可以使用适用于表所包含的对象的其他格式对象。DOM API 会忽略不适用于特定对象的格式对象。

通过编程设置非正式表的格式

对于适用于整个表的格式,请使用格式属性和对象以及代表整个表的对象。此示例使用格式对象来指定表边框以及行和列分隔线。它使用格式属性来指定背景颜色。

Table using format objects that specify table color and row and column separators, as well as background color

import mlreportgen.dom.*
d = Document("test","html");

table = Table(magic(5));
table.Style = [table.Style {Border("inset","red","3px"), ...
               ColSep("single","black","1px"), ...
               RowSep("single","black","1px")}];

table.BackgroundColor = "lightsteelblue";

append(d, table);

close(d);
rptview(d.OutputPath);

通过编程设置正式或 MATLAB 表的格式

您可以使用格式属性和对象来格式化 mlreportgen.dom.FormalTablemlreportgen.dom.MATLABTable 对象。如果为表及其某一部分指定格式,则为该部分指定的值将覆盖整个表的值。并非所有正式的表格式都适用于正式的表部分。例如,OuterLeftMargin 属性不适用于正式的表部分。您不能独立于包含它的表缩进页眉、正文或页脚部分。

格式化表条目

要访问表条目进行格式化,可以使用 entrymlreportgen.dom.TableHeadermlreportgen.dom.TableBodymlreportgen.dom.TableFooter 对象的 mlreportgen.dom.Table 方法。

entry 方法返回 mlreportgen.dom.TableEntrymlreportgen.dom.TableHeaderEntry 对象。要格式化条目,您可以使用这些 TableEntry 格式属性或对象。

格式化格式化对象格式属性

在条目周围创建边框

mlreportgen.dom.Border

Border

边框颜色

mlreportgen.dom.Border

BorderColor

边框粗细

mlreportgen.dom.Border

BorderWidth

创建左、右、上或下的入口边框

mlreportgen.dom.Border

不适用

将条目内容对齐到顶部、底部或中间

mlreportgen.dom.VAlign

VAlign

条目边界与条目内容之间的空间

mlreportgen.dom.InnerMargin

InnerMargin

条目内容与其顶部、底部、右侧或左侧边界之间的间距

mlreportgen.dom.InnerMargin

不适用

导致条目跨越多列

n/a

ColSpan

导致条目跨越多行

n/a

RowSpan

您可以使用适用于表条目所包含的对象的其他格式对象。DOM API 会忽略不适用于特定对象的格式对象。

此示例根据 magic 函数的输出创建一个表,并将表的最大数字设为红色。

5-by-5 table of numbers. The entry in row five, column three is 25 and red.

import mlreportgen.dom.*;

d = Document("test","pdf");

m = magic(5);
[v,i] = max(m);
[v1,i1] = max(max(m));
t = Table(m);
t.Border = "single";
t.ColSep = "single";
t.RowSep = "single";

t.TableEntriesInnerMargin = "2pt";
t.TableEntriesHAlign = "right";

maxnum = entry(t,i(i1),i1);
maxnum.Children(1).Color = "Red";

append(d,t);

close(d);
rptview(d);

格式化所有表条目

要为 DOM 表的所有条目或 DOM 表的某个部分指定相同的格式或格式集,可以使用以下属性:

  • TableEntriesValign

  • TableEntriesHalign

  • TableEntriesInnerMargin

  • TableEntriesStyle

此示例从 MATLAB 表创建一个表。此示例:

  • 通过向 TableEntriesStyle 属性添加格式对象,使所有表体条目变为蓝色

  • 通过设置 TableEntriesHalign 属性将所有表体条目居中

Table with three columns: Age, Weight, and Height. Each column has five rows. The numbers are blue.

import mlreportgen.dom.*
d = Document("outermargin","docx");

import mlreportgen.dom.*
d = Document("myMATLABTable","pdf");

Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
mltable = table(Age,Weight,Height);

mltableObj = MATLABTable(mltable);
tbodyObj = mltableObj.Body;
tbodyObj.TableEntriesStyle = {Color("blue")};
tbODYObj.TableEntriesHAlign = "center";

append(d,mltableObj);

close(d);
rptview(d);

格式化表行

要访问表行进行格式化,可以使用 mlreportgen.dom.Tablemlreportgen.dom.TableHeadermlreportgen.dom.TableBodymlreportgen.dom.TableFooter 对象的 row 方法。

row 方法返回一个 mlreportgen.dom.TableRow 对象。要格式化行,您可以使用这些 TableRow 格式属性或对象。

格式化格式化对象格式属性

指定行的精确高度

mlreportgen.dom.RowHeight

Height

指定行的最小高度(仅限 Word 报告)

mlreportgen.dom.RowHeight

不适用

当表跨页时使此行重复作为标题行

mlreportgen.dom.RepeatAsHeaderRow

不适用

允许此行跨越页面边界

mlreportgen.dom.AllowBreakAcrossPages

不适用

您可以使用适用于该行所包含的对象的其他格式对象。DOM API 会忽略不适用于特定对象的格式对象。

此示例从魔术函数的输出创建一个表,并将第一行的内容设为红色。

A 5-by-5 table of numbers. The first row is red and the other rows are black.

import mlreportgen.dom.*;

d = Document("test","pdf");

m = magic(5);
[v,i] = max(m);
[v1,i1] = max(max(m));
t = Table(m);
t.Border = "single";
t.ColSep = "single";
t.RowSep = "single";

t.TableEntriesInnerMargin = "2pt";
t.TableEntriesHAlign = "right";

r = row(t,1);
r.Style = [r.Style {Color("red")}];
append(d,t);
close(d);
rptview(d);

格式化表列

要指定一组相邻表列的格式,请使用 mlreportgen.dom.TableColSpecGroup 对象。要覆盖某些列的列组的格式,请使用 mlreportgen.dom.TableColSpec 对象。

在此示例中,TableColSpecGroup 对象指定绿色文本。TableColSpec 对象覆盖第一列的格式,指定粗体红色文本。

A 5-by-5 table of numbers. The first column is red. The other columns are green.

import mlreportgen.dom.*
rpt = Document("test","pdf");

rank = 5;
t = Table(magic(rank));
t.Border = "single";
t.ColSep = "single";
t.RowSep = "single";
t.TableEntriesInnerMargin = "2pt";
t.TableEntriesHAlign = "right";

%Specify the formats for all columns
grps(1) = TableColSpecGroup;
grps(1).Span = rank;
grps(1).Style = {Color("green")};

%Specify the formats for the first column
specs(1) = TableColSpec;
specs(1).Span = 1;
specs(1).Style = {Bold(true),Color("red")};

grps(1).ColSpecs = specs;

t.ColSpecGroups = grps;
append(rpt,t);

close(rpt);
rptview(rpt.OutputPath);

要调整列大小以适合列中表条目的最宽内容,请在表的 ResizeToFitContents 属性中包含一个 Style 对象。

另请参阅

| | | | | | | |

主题

外部网站