Extract tables from document

GroupDocs.Parser provides the functionality to extract tables from documents by the GetTables(PageTableAreaOptions) method:

IEnumerable<PageTableArea> GetTables(PageTableAreaOptions options);

This method returns a collection of PageTableArea object:

MemberDescription
RectangleThe rectangular area that bounds text area.
PageThe page information (page index and page size)
RowCountThe total number of the table rows.
ColumnCountThe total number of the table columns.
PageTableAreaCell ItemThe table cell by row and column indexes.
double GetRowHeight(int)The the row height.
double GetColumnWidth(int)Returns the column width.

GetTables(PageTableAreaOptions) accepts PageTableAreaOptions object that contains TemplateTableLayout object with table layout (see this article for more details).

Here are the steps to extract tables from the whole document:

The following example shows how to extract tables from the whole document:

// Create an instance of Parser class
using (Parser parser = new Parser(filePath))
{
    // Check if the document supports table extraction
    if (!parser.Features.Tables)
    {
        Console.WriteLine("Document isn't supports tables extraction.");
        return;
    }
    // Create the layout of tables
    TemplateTableLayout layout = new TemplateTableLayout(
        new double[] { 50, 95, 275, 415, 485, 545 },
        new double[] { 325, 340, 365, 395 });
    // Create the options for table extraction
    PageTableAreaOptions options = new PageTableAreaOptions(layout);
    // Extract tables from the document
    IEnumerable<PageTableArea> tables = parser.GetTables(options);
    // Iterate over tables
    foreach (PageTableArea t in tables)
    {
        // Iterate over rows
        for (int row = 0; row < t.RowCount; row++)
        {
            // Iterate over columns
            for (int column = 0; column < t.ColumnCount; column++)
            {
                // Get the table cell
                PageTableAreaCell cell = t[row, column];
                if (cell != null)
                {
                    // Print the table cell text
                    Console.Write(cell.Text);
                    Console.Write(" | ");
                }
            }
            Console.WriteLine();
        }
        Console.WriteLine();
    }
}

More resources

GitHub examples

You may easily run the code above and see the feature in action in our GitHub examples:

Free online image extractor App

Along with full featured .NET library we provide simple, but powerfull free APPs.

You are welcome to extract images from PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX, Emails and more with our free online GroupDocs Parser App.