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является узлом уровня блока и может быть дочерним элементом классов, производных отStory или InlineStory.

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);
        }
    }

    // Вы можете использовать свойства «Название» и «Описание», чтобы добавить в таблицу заголовок и описание соответственно.
    // В таблице должна быть хотя бы одна строка, прежде чем мы сможем использовать эти свойства.
    // Эти свойства имеют смысл для документов .docx, соответствующих стандарту ISO/IEC 29500 (см. класс OoxmlCompliance).
    // Если мы сохраним документ в форматах, предшествующих ISO/IEC 29500, Microsoft Word игнорирует эти свойства.
    table.Title = "Aspose table title";
    table.Description = "Aspose table description";

    return table;
}

Смотрите также