Table

Table class

表示 Word 文档中的表格。

要了解更多信息,请访问使用表格文档文章。

public class Table : CompositeNode

构造函数

姓名描述
Table(DocumentBase)初始化一个新实例Table类.

特性

姓名描述
AbsoluteHorizontalDistance { get; set; }获取或设置由表属性指定的绝对水平浮动表位置,以点为单位。 默认值为 0。
AbsoluteVerticalDistance { get; set; }获取或设置由表属性指定的绝对垂直浮动表位置,以点为单位。 默认值为 0。
Alignment { get; set; }指定内联表在文档中的对齐方式。
AllowAutoFit { get; set; }允许 Microsoft Word 和 Aspose.Words 自动调整表格中单元格的大小以适合其内容。
AllowCellSpacing { get; set; }获取或设置“允许单元格之间的间距”选项。
AllowOverlap { get; }获取浮动表是否允许文档中的其他浮动对象 在显示时重叠其范围。 默认值为真的.
Bidi { get; set; }获取或设置这是否是从右到左的表格。
BottomPadding { get; set; }获取或设置要在单元格内容下方添加的空间量(以磅为单位)。
CellSpacing { get; set; }获取或设置单元格之间的空间量(以磅为单位)。
Count { get; }获取此节点的直接子节点的数量。
CustomNodeId { get; set; }指定自定义节点标识符。
Description { get; set; }获取或设置此表的描述。 它提供表中包含的信息的替代文本表示形式。
DistanceBottom { get; set; }获取或设置表格底部与周围文本之间的距离(以磅为单位)。
DistanceLeft { get; set; }获取或设置表格左侧与周围文本之间的距离(以磅为单位)。
DistanceRight { get; set; }获取或设置表格右侧与周围文本之间的距离(以磅为单位)。
DistanceTop { get; set; }获取或设置桌面与周围文本之间的距离(以磅为单位)。
virtual Document { get; }获取该节点所属的文档。
FirstChild { get; }获取节点的第一个子节点。
FirstRow { get; }返回第一个Row表中的节点.
HasChildNodes { get; }返回真的如果该节点有任何子节点.
HorizontalAnchor { get; set; }获取计算浮动台水平位置的基础对象。 默认值为Column.
override IsComposite { get; }返回真的因为该节点可以有子节点。
LastChild { get; }获取节点的最后一个子节点。
LastRow { get; }返回最后一个Row表中的节点.
LeftIndent { get; set; }获取或设置表示表格左缩进的值。
LeftPadding { get; set; }获取或设置要添加到单元格内容左侧的空间量(以磅为单位)。
NextSibling { get; }获取紧随该节点的下一个节点。
override NodeType { get; }返回Table.
ParentNode { get; }获取此节点的直接父节点。
PreferredWidth { get; set; }获取或设置表格首选宽度。
PreviousSibling { get; }获取紧邻此节点之前的节点。
Range { get; }返回一个Range表示此节点中包含的文档部分的对象。
RelativeHorizontalAlignment { get; set; }获取或设置浮动表相对水平对齐方式。
RelativeVerticalAlignment { get; set; }获取或设置浮动表相对垂直对齐方式。
RightPadding { get; set; }获取或设置要添加到单元格内容右侧的空间量(以磅为单位)。
Rows { get; }提供对表行的类型化访问。
Style { get; set; }获取或设置应用于此表的表格样式。
StyleIdentifier { get; set; }获取或设置应用于此表的表样式的区域设置独立样式标识符。
StyleName { get; set; }获取或设置应用于此表的表格样式的名称。
StyleOptions { get; set; }获取或设置指定如何将表样式应用于此表的位标志。
TextWrapping { get; set; }获取或设置TextWrapping对于表.
Title { get; set; }获取或设置此表的标题。 它提供表中包含的信息的替代文本表示形式。
TopPadding { get; set; }获取或设置要在单元格内容上方添加的空间量(以磅为单位)。
VerticalAnchor { get; set; }获取计算浮动台垂直位置的基础对象。 默认值为Margin.

方法

姓名描述
override Accept(DocumentVisitor)接受访客。
AppendChild(Node)将指定节点添加到该节点的子节点列表的末尾。
AutoFit(AutoFitBehavior)根据指定的自动调整行为调整表格和单元格的大小。
ClearBorders()删除此表上的所有表格和单元格边框。
ClearShading()删除桌子上的所有阴影。
Clone(bool)创建节点的副本。
ConvertToHorizontallyMergedCells()将按宽度水平合并的单元格转换为按HorizontalMerge.
CreateNavigator()创建可用于遍历和读取节点的导航器。
EnsureMinimum()如果表没有行,则创建并追加一行Row.
GetAncestor(NodeType)获取指定的第一个祖先NodeType.
GetAncestor(Type)获取指定对象类型的第一个祖先。
GetChild(NodeType, int, bool)返回与指定类型匹配的第 N 个子节点。
GetChildNodes(NodeType, bool)返回与指定类型匹配的子节点的实时集合。
GetEnumerator()为该节点的子节点上的每个样式迭代提供支持。
override GetText()获取此节点及其所有子节点的文本。
IndexOf(Node)返回子节点数组中指定子节点的索引。
InsertAfter(NodeNode)在指定的引用节点之后立即插入指定的节点。
InsertBefore(NodeNode)在指定的引用节点之前插入指定的节点。
NextPreOrder(Node)根据先序树遍历算法获取下一个节点。
PrependChild(Node)将指定节点添加到该节点的子节点列表的开头。
PreviousPreOrder(Node)根据先序树遍历算法获取前一个节点。
Remove()将自身从父级中删除。
RemoveAllChildren()删除当前节点的所有子节点。
RemoveChild(Node)删除指定的子节点。
RemoveSmartTags()删除所有SmartTag当前节点的后代节点.
SelectNodes(string)选择与 XPath 表达式匹配的节点列表。
SelectSingleNode(string)选择第一个Node与 XPath 表达式匹配。
SetBorder(BorderTypeLineStyle, double, Color, bool)将指定的表格边框设置为指定的线条样式、宽度和颜色。
SetBorders(LineStyle, double, Color)将所有表格边框设置为指定的线条样式、宽度和颜色。
SetShading(TextureIndex, Color, Color)将整个表的底纹设置为指定值。
ToString(SaveFormat)将节点的内容导出为指定格式的字符串。
ToString(SaveOptions)使用指定的保存选项将节点的内容导出到字符串中。

评论

Table是一个块级节点,可以是派生类的子节点StoryInlineStory

Table可以包含一个或多个Row节点。

最小有效表需要至少有一个Row

例子

展示如何创建表。

Document doc = new Document();
Table table = new Table(doc);
doc.FirstSection.Body.AppendChild(table);

// 表格包含行,行包含单元格,单元格可能包含段落
// 具有典型元素,例如运行、形状,甚至其他表格。
// 在表上调用“EnsureMinimum”方法将确保
// 该表格至少有一行、一个单元格和一个段落。
Row firstRow = new Row(doc);
table.AppendChild(firstRow);

Cell firstCell = new Cell(doc);
firstRow.AppendChild(firstCell);

Paragraph paragraph = new Paragraph(doc);
firstCell.AppendChild(paragraph);

// 将文本添加到表第一行中的第一个调用。
Run run = new Run(doc, "Hello world!");
paragraph.AppendChild(run);

doc.Save(ArtifactsDir + "Table.CreateTable.docx");

演示如何迭代文档中的所有表格并打印每个单元格的内容。

Document doc = new Document(MyDir + "Tables.docx");
TableCollection tables = doc.FirstSection.Body.Tables;

Assert.AreEqual(2, tables.ToArray().Length);

for (int i = 0; i < tables.Count; i++)
{
    Console.WriteLine($"Start of Table {i}");

    RowCollection rows = tables[i].Rows;

    // 我们可以对行集合使用“ToArray”方法将其克隆到数组中。
    Assert.AreEqual(rows, rows.ToArray());
    Assert.AreNotSame(rows, rows.ToArray());

    for (int j = 0; j < rows.Count; j++)
    {
        Console.WriteLine($"\tStart of Row {j}");

        CellCollection cells = rows[j].Cells;

        // 我们可以对单元集合使用“ToArray”方法将其克隆到数组中。
        Assert.AreEqual(cells, cells.ToArray());
        Assert.AreNotSame(cells, cells.ToArray());

        for (int k = 0; k < cells.Count; k++)
        {
            string cellText = cells[k].ToString(SaveFormat.Text).Trim();
            Console.WriteLine($"\t\tContents of Cell:{k} = \"{cellText}\"");
        }

        Console.WriteLine($"\tEnd of Row {j}");
    }

    Console.WriteLine($"End of Table {i}\n");
}

演示如何构建格式化的 2x2 表。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Table table = builder.StartTable();
builder.InsertCell();
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.Write("Row 1, cell 1.");
builder.InsertCell();
builder.Write("Row 1, cell 2.");
builder.EndRow();

// 构建表时,文档构建器将应用其当前的 RowFormat/CellFormat 属性值
// 到其光标所在的当前行/单元格以及创建它们时的任何新行/单元格。
Assert.AreEqual(CellVerticalAlignment.Center, table.Rows[0].Cells[0].CellFormat.VerticalAlignment);
Assert.AreEqual(CellVerticalAlignment.Center, table.Rows[0].Cells[1].CellFormat.VerticalAlignment);

builder.InsertCell();
builder.RowFormat.Height = 100;
builder.RowFormat.HeightRule = HeightRule.Exactly;
builder.CellFormat.Orientation = TextOrientation.Upward;
builder.Write("Row 2, cell 1.");
builder.InsertCell();
builder.CellFormat.Orientation = TextOrientation.Downward;
builder.Write("Row 2, cell 2.");
builder.EndRow();
builder.EndTable();

// 先前添加的行和单元格不会受到构建器格式更改的影响。
Assert.AreEqual(0, table.Rows[0].RowFormat.Height);
Assert.AreEqual(HeightRule.Auto, table.Rows[0].RowFormat.HeightRule);
Assert.AreEqual(100, table.Rows[1].RowFormat.Height);
Assert.AreEqual(HeightRule.Exactly, table.Rows[1].RowFormat.HeightRule);
Assert.AreEqual(TextOrientation.Upward, table.Rows[1].Cells[0].CellFormat.Orientation);
Assert.AreEqual(TextOrientation.Downward, table.Rows[1].Cells[1].CellFormat.Orientation);

doc.Save(ArtifactsDir + "DocumentBuilder.BuildTable.docx");

演示如何在不使用文档生成器的情况下构建嵌套表。

public void CreateNestedTable()
{
    Document doc = new Document();

    // 创建三行四列的外表,然后将其添加到文档中。
    Table outerTable = CreateTable(doc, 3, 4, "Outer Table");
    doc.FirstSection.Body.AppendChild(outerTable);

    // 创建另一个包含两行和两列的表格,然后将其插入到第一个表格的第一个单元格中。
    Table innerTable = CreateTable(doc, 2, 2, "Inner Table");
    outerTable.FirstRow.FirstCell.AppendChild(innerTable);

    doc.Save(ArtifactsDir + "Table.CreateNestedTable.docx");
}

/// <summary>
/// 在文档中创建一个新表格,每个单元格中具有给定的尺寸和文本。
/// </summary>
private static Table CreateTable(Document doc, int rowCount, int cellCount, string cellText)
{
    Table table = new Table(doc);

    for (int rowId = 1; rowId <= rowCount; rowId++)
    {
        Row row = new Row(doc);
        table.AppendChild(row);

        for (int cellId = 1; cellId <= cellCount; cellId++)
        {
            Cell cell = new Cell(doc);
            cell.AppendChild(new Paragraph(doc));
            cell.FirstParagraph.AppendChild(new Run(doc, cellText));

            row.AppendChild(cell);
        }
    }

    // 您可以使用“标题”和“描述”属性分别向表格添加标题和描述。
    // 在我们可以使用这些属性之前,表必须至少有一行。
    // 这些属性对于符合 ISO / IEC 29500 的 .docx 文档有意义(请参阅 OoxmlCompliance 类)。
    // 如果我们将文档保存为 ISO/IEC 29500 之前的格式,Microsoft Word 将忽略这些属性。
    table.Title = "Aspose table title";
    table.Description = "Aspose table description";

    return table;
}

也可以看看