This documentation is archived and is not being maintained.

Table Class

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

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

[ChildElementInfoAttribute(typeof(CustomXmlConflictInsertionRangeStart), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(RunConflictDeletion), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(CustomXmlConflictDeletionRangeStart), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(CustomXmlConflictDeletionRangeEnd), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(CustomXmlConflictInsertionRangeEnd), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(ContentPart), FileFormatVersions.Office2010)]
[ChildElementInfoAttribute(typeof(RunConflictInsertion), FileFormatVersions.Office2010)]
public class Table : OpenXmlCompositeElement

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:tblW w:w="5000" w:type="pct"/>
<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:gridCol w:w="10296"/>
<w:tcW w:w="0" w:type="auto"/>

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 (§; customXml (§; docPartBody (§17.12.6); endnote (§17.11.2); footnote (§17.11.10); ftr (§17.10.3); hdr (§17.10.4); sdtContent (§; tc (§17.4.66)

Child Elements


bookmarkEnd (Bookmark End)


bookmarkStart (Bookmark Start)


commentRangeEnd (Comment Anchor Range End)


commentRangeStart (Comment Anchor Range Start)


customXml (Row-Level Custom XML Element)


customXmlDelRangeEnd (Custom XML Markup Deletion End)


customXmlDelRangeStart (Custom XML Markup Deletion Start)


customXmlInsRangeEnd (Custom XML Markup Insertion End)


customXmlInsRangeStart (Custom XML Markup Insertion Start)


customXmlMoveFromRangeEnd (Custom XML Markup Move Source End)


customXmlMoveFromRangeStart (Custom XML Markup Move Source Start)


customXmlMoveToRangeEnd (Custom XML Markup Move Destination Location End)


customXmlMoveToRangeStart (Custom XML Markup Move Destination Location Start)


del (Deleted Run Content)


ins (Inserted Run Content)


moveFrom (Move Source Run Content)


moveFromRangeEnd (Move Source Location Container - End)


moveFromRangeStart (Move Source Location Container - Start)


moveTo (Move Destination Run Content)


moveToRangeEnd (Move Destination Location Container - End)


moveToRangeStart (Move Destination Location Container - Start)


oMath (Office Math)


oMathPara (Office Math Paragraph)


permEnd (Range Permission End)


permStart (Range Permission Start)


proofErr (Proofing Error Anchor)


sdt (Row-Level Structured Document Tag)


tblGrid (Table Grid)


tblPr (Table Properties)


tr (Table Row)


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

© ISO/IEC29500: 2008.

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 =

                // 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.");

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