Table Class

Defines the Table Class.When the object is serialized out as xml, its qualified name is w:tbl.

Inheritance Hierarchy

System.Object
  DocumentFormat.OpenXml.OpenXmlElement
    DocumentFormat.OpenXml.OpenXmlCompositeElement
      DocumentFormat.OpenXml.Wordprocessing.Table

Namespace:  DocumentFormat.OpenXml.Wordprocessing
Assembly:  DocumentFormat.OpenXml (in DocumentFormat.OpenXml.dll)

Syntax

'Declaration
<ChildElementInfoAttribute(GetType(CustomXmlConflictInsertionRangeStart), FileFormatVersions.Office2010)> _
<ChildElementInfoAttribute(GetType(BookmarkStart))> _
<ChildElementInfoAttribute(GetType(BookmarkEnd))> _
<ChildElementInfoAttribute(GetType(CommentRangeStart))> _
<ChildElementInfoAttribute(GetType(CommentRangeEnd))> _
<ChildElementInfoAttribute(GetType(MoveFromRangeStart))> _
<ChildElementInfoAttribute(GetType(MoveFromRangeEnd))> _
<ChildElementInfoAttribute(GetType(MoveToRangeStart))> _
<ChildElementInfoAttribute(GetType(MoveToRangeEnd))> _
<ChildElementInfoAttribute(GetType(CustomXmlInsRangeStart))> _
<ChildElementInfoAttribute(GetType(CustomXmlInsRangeEnd))> _
<ChildElementInfoAttribute(GetType(CustomXmlDelRangeStart))> _
<ChildElementInfoAttribute(GetType(CustomXmlDelRangeEnd))> _
<ChildElementInfoAttribute(GetType(CustomXmlMoveFromRangeStart))> _
<ChildElementInfoAttribute(GetType(CustomXmlMoveFromRangeEnd))> _
<ChildElementInfoAttribute(GetType(CustomXmlMoveToRangeStart))> _
<ChildElementInfoAttribute(GetType(CustomXmlMoveToRangeEnd))> _
<ChildElementInfoAttribute(GetType(ProofError))> _
<ChildElementInfoAttribute(GetType(RunConflictDeletion), FileFormatVersions.Office2010)> _
<ChildElementInfoAttribute(GetType(CustomXmlConflictDeletionRangeStart), FileFormatVersions.Office2010)> _
<ChildElementInfoAttribute(GetType(CustomXmlConflictDeletionRangeEnd), FileFormatVersions.Office2010)> _
<ChildElementInfoAttribute(GetType(TableProperties))> _
<ChildElementInfoAttribute(GetType(TableGrid))> _
<ChildElementInfoAttribute(GetType(TableRow))> _
<ChildElementInfoAttribute(GetType(CustomXmlRow))> _
<ChildElementInfoAttribute(GetType(SdtRow))> _
<ChildElementInfoAttribute(GetType(CustomXmlConflictInsertionRangeEnd), FileFormatVersions.Office2010)> _
<ChildElementInfoAttribute(GetType(PermStart))> _
<ChildElementInfoAttribute(GetType(PermEnd))> _
<ChildElementInfoAttribute(GetType(InsertedRun))> _
<ChildElementInfoAttribute(GetType(DeletedRun))> _
<ChildElementInfoAttribute(GetType(MoveFromRun))> _
<ChildElementInfoAttribute(GetType(MoveToRun))> _
<ChildElementInfoAttribute(GetType(ContentPart), FileFormatVersions.Office2010)> _
<ChildElementInfoAttribute(GetType(RunConflictInsertion), FileFormatVersions.Office2010)> _
Public Class Table _
    Inherits OpenXmlCompositeElement
'Usage
Dim instance As Table
[ChildElementInfoAttribute(typeof(CustomXmlConflictInsertionRangeStart), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(BookmarkStart))]
[ChildElementInfoAttribute(typeof(BookmarkEnd))]
[ChildElementInfoAttribute(typeof(CommentRangeStart))]
[ChildElementInfoAttribute(typeof(CommentRangeEnd))]
[ChildElementInfoAttribute(typeof(MoveFromRangeStart))]
[ChildElementInfoAttribute(typeof(MoveFromRangeEnd))]
[ChildElementInfoAttribute(typeof(MoveToRangeStart))]
[ChildElementInfoAttribute(typeof(MoveToRangeEnd))]
[ChildElementInfoAttribute(typeof(CustomXmlInsRangeStart))]
[ChildElementInfoAttribute(typeof(CustomXmlInsRangeEnd))]
[ChildElementInfoAttribute(typeof(CustomXmlDelRangeStart))]
[ChildElementInfoAttribute(typeof(CustomXmlDelRangeEnd))]
[ChildElementInfoAttribute(typeof(CustomXmlMoveFromRangeStart))]
[ChildElementInfoAttribute(typeof(CustomXmlMoveFromRangeEnd))]
[ChildElementInfoAttribute(typeof(CustomXmlMoveToRangeStart))]
[ChildElementInfoAttribute(typeof(CustomXmlMoveToRangeEnd))]
[ChildElementInfoAttribute(typeof(ProofError))]
[ChildElementInfoAttribute(typeof(RunConflictDeletion), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(CustomXmlConflictDeletionRangeStart), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(CustomXmlConflictDeletionRangeEnd), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(TableProperties))]
[ChildElementInfoAttribute(typeof(TableGrid))]
[ChildElementInfoAttribute(typeof(TableRow))]
[ChildElementInfoAttribute(typeof(CustomXmlRow))]
[ChildElementInfoAttribute(typeof(SdtRow))]
[ChildElementInfoAttribute(typeof(CustomXmlConflictInsertionRangeEnd), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(PermStart))]
[ChildElementInfoAttribute(typeof(PermEnd))]
[ChildElementInfoAttribute(typeof(InsertedRun))]
[ChildElementInfoAttribute(typeof(DeletedRun))]
[ChildElementInfoAttribute(typeof(MoveFromRun))]
[ChildElementInfoAttribute(typeof(MoveToRun))]
[ChildElementInfoAttribute(typeof(ContentPart), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(RunConflictInsertion), FileFormatVersions.Office2010)]
public class Table : OpenXmlCompositeElement

Remarks

The following table lists the possible child types:

  • BookmarkStart <w:bookmarkStart>

  • BookmarkEnd <w:bookmarkEnd>

  • CommentRangeStart <w:commentRangeStart>

  • CommentRangeEnd <w:commentRangeEnd>

  • MoveFromRangeStart <w:moveFromRangeStart>

  • MoveFromRangeEnd <w:moveFromRangeEnd>

  • MoveToRangeStart <w:moveToRangeStart>

  • MoveToRangeEnd <w:moveToRangeEnd>

  • CustomXmlInsRangeStart <w:customXmlInsRangeStart>

  • CustomXmlInsRangeEnd <w:customXmlInsRangeEnd>

  • CustomXmlDelRangeStart <w:customXmlDelRangeStart>

  • CustomXmlDelRangeEnd <w:customXmlDelRangeEnd>

  • CustomXmlMoveFromRangeStart <w:customXmlMoveFromRangeStart>

  • CustomXmlMoveFromRangeEnd <w:customXmlMoveFromRangeEnd>

  • CustomXmlMoveToRangeStart <w:customXmlMoveToRangeStart>

  • CustomXmlMoveToRangeEnd <w:customXmlMoveToRangeEnd>

  • DocumentFormat.OpenXml.Office2010.Word.CustomXmlConflictInsertionRangeStart <w14:customXmlConflictInsRangeStart>

  • DocumentFormat.OpenXml.Office2010.Word.CustomXmlConflictInsertionRangeEnd <w14:customXmlConflictInsRangeEnd>

  • DocumentFormat.OpenXml.Office2010.Word.CustomXmlConflictDeletionRangeStart <w14:customXmlConflictDelRangeStart>

  • DocumentFormat.OpenXml.Office2010.Word.CustomXmlConflictDeletionRangeEnd <w14:customXmlConflictDelRangeEnd>

  • TableProperties <w:tblPr>

  • TableGrid <w:tblGrid>

  • TableRow <w:tr>

  • CustomXmlRow <w:customXml>

  • SdtRow <w:sdt>

  • ProofError <w:proofErr>

  • PermStart <w:permStart>

  • PermEnd <w:permEnd>

  • InsertedRun <w:ins>

  • DeletedRun <w:del>

  • MoveFromRun <w:moveFrom>

  • MoveToRun <w:moveTo>

  • ContentPart <w:contentPart>

  • DocumentFormat.OpenXml.Office2010.Word.RunConflictInsertion <w14:conflictIns>

  • DocumentFormat.OpenXml.Office2010.Word.RunConflictDeletion <w14:conflictDel>

[ISO/IEC 29500-1 1st Edition]

17.4.38 tbl (Table)

This element specifies the contents of a table present in the document. A table is a set of paragraphs (and other block-level content) arranged in rows and columns. Tables in WordprocessingML are defined via the tbl element, which is analogous to the HTML table tag.

When two tbl elements having the same style (§17.4.63) are present within the document content, without any intervening p elements, the corresponding tables shall be treated as a single table.

[Example: Consider an empty one-cell table (i.e.; a table with one row, one column) and 1 point borders on all sides:

This table is represented by the following WordprocessingML:

<w:tbl>
<w:tblPr>
<w:tblW w:w="5000" w:type="pct"/>
<w:tblBorders>
<w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/>
<w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/>
<w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/>
<w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/>
</w:tblBorders>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="10296"/>
</w:tblGrid>
<w:tr>
<w:tc>
<w:tcPr>
<w:tcW w:w="0" w:type="auto"/>
</w:tcPr>
<w:p/>
</w:tc>
</w:tr>
</w:tbl>

This table specifies table-wide properties of 100% of page width using the tblW element (§17.4.64); a the set of table borders using the tblBorders element (§17.4.39); the table grid which defines a set of shared vertical edges within the table using the tblGrid element (§17.4.49); and a single table row using the tr element (§17.4.79). end example]

Parent Elements

body (§17.2.2); comment (§17.13.4.2); customXml (§17.5.1.6); docPartBody (§17.12.6); endnote (§17.11.2); footnote (§17.11.10); ftr (§17.10.3); hdr (§17.10.4); sdtContent (§17.5.2.34); tc (§17.4.66)

Child Elements

Subclause

bookmarkEnd (Bookmark End)

§17.13.6.1

bookmarkStart (Bookmark Start)

§17.13.6.2

commentRangeEnd (Comment Anchor Range End)

§17.13.4.3

commentRangeStart (Comment Anchor Range Start)

§17.13.4.4

customXml (Row-Level Custom XML Element)

§17.5.1.5

customXmlDelRangeEnd (Custom XML Markup Deletion End)

§17.13.5.4

customXmlDelRangeStart (Custom XML Markup Deletion Start)

§17.13.5.5

customXmlInsRangeEnd (Custom XML Markup Insertion End)

§17.13.5.6

customXmlInsRangeStart (Custom XML Markup Insertion Start)

§17.13.5.7

customXmlMoveFromRangeEnd (Custom XML Markup Move Source End)

§17.13.5.8

customXmlMoveFromRangeStart (Custom XML Markup Move Source Start)

§17.13.5.9

customXmlMoveToRangeEnd (Custom XML Markup Move Destination Location End)

§17.13.5.10

customXmlMoveToRangeStart (Custom XML Markup Move Destination Location Start)

§17.13.5.11

del (Deleted Run Content)

§17.13.5.14

ins (Inserted Run Content)

§17.13.5.18

moveFrom (Move Source Run Content)

§17.13.5.22

moveFromRangeEnd (Move Source Location Container - End)

§17.13.5.23

moveFromRangeStart (Move Source Location Container - Start)

§17.13.5.24

moveTo (Move Destination Run Content)

§17.13.5.25

moveToRangeEnd (Move Destination Location Container - End)

§17.13.5.27

moveToRangeStart (Move Destination Location Container - Start)

§17.13.5.28

oMath (Office Math)

§22.1.2.77

oMathPara (Office Math Paragraph)

§22.1.2.78

permEnd (Range Permission End)

§17.13.7.1

permStart (Range Permission Start)

§17.13.7.2

proofErr (Proofing Error Anchor)

§17.13.8.1

sdt (Row-Level Structured Document Tag)

§17.5.2.30

tblGrid (Table Grid)

§17.4.49

tblPr (Table Properties)

§17.4.60

tr (Table Row)

§17.4.79

[Note: The W3C XML Schema definition of this element’s content model (CT_Tbl) is located in §A.1. end note]

© ISO/IEC29500: 2008.

Examples

The following example is used to change the text in the second row and the third column of the first table found in a word processing file. After you run the code example, take a look on the file “TableEx.docx” to see the new text added to the cell.

using System;
using System.Linq;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

namespace TableEx
{
    class Program
    {
        // Change the text in a table in a word processing document.
        static void Main(string[] args)
        {
            // The fileName string represents an existing file that contains a table. 
            string fileName = @"C:\Users\Public\Documents\TableEx.docx";
            // The text to be added to the cell (3,2).
            string addedText = "This is the text added by the API example";
            // Open the file for editing.
            using (WordprocessingDocument doc =
                WordprocessingDocument.Open(fileName, true))
            {
                // Find the first table in the document.
                Table table =
                    doc.MainDocumentPart.Document.Body.Elements<Table>().First();

                // Find the second row in the table.
                TableRow row = table.Elements<TableRow>().ElementAt(1);

                // Find the third cell in the row.
                TableCell cell = row.Elements<TableCell>().ElementAt(2);

                // Find the first paragraph in the table cell.
                Paragraph parag = cell.Elements<Paragraph>().First();

                // Find the first run in the paragraph.
                Run run = parag.Elements<Run>().First();

                // Set the text for the run.
                Text text = run.Elements<Text>().First();
                text.Text = addedText;
            }
            Console.WriteLine("All done. Press any key.");
            Console.ReadKey();
        }
    }
}
Imports System.Linq
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Wordprocessing

Module Module1
    ' Change the text in a table in a word processing document.
    Sub Main(ByVal args As String())
        ' The file name represents an existing document that contains a table.            
        Dim fileName As String = "C:\Users\Public\Documents\TableEx.docx"
        ' The text to be added to the cell (3,2).
        Dim addedText As String = "This is the text added by the API example"
        ' Open the file for editing.
        Using doc As WordprocessingDocument = WordprocessingDocument.Open(fileName, True)
            ' Find the first table in the document.
            Dim table As Table = doc.MainDocumentPart.Document.Body.Elements(Of Table)().First()

            ' Find the second row in the table.
            Dim row As TableRow = table.Elements(Of TableRow)().ElementAt(1)

            ' Find the third cell in the row.
            Dim cell As TableCell = row.Elements(Of TableCell)().ElementAt(2)

            ' Find the first paragraph in the table cell.
            Dim parag As Paragraph = cell.Elements(Of Paragraph)().First()

            ' Find the first run in the paragraph.
            Dim run As Run = parag.Elements(Of Run)().First()

            ' Set the text for the run.
            Dim text As Text = run.Elements(Of Text)().First()
            text.Text = addedText
        End Using
        Console.WriteLine("All done. Press any key.")
        Console.ReadKey()
    End Sub
End Module

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

Table Members

DocumentFormat.OpenXml.Wordprocessing Namespace