How to remove table structure and not the table content in a document?

I am having a document with some tables. Each table contains some data fields, bookmarks, images etc,.
I want to remove the table structure and i want keep the data which are inside the table. I can do this manually for a Word Document by following steps.

  1. Select the table which you want to remove.
  2. Go to Layout Tab and select Convert to Text option under Data option.
  3. Choose Tab option from the dialog box and click OK.

Kindly let me know any options in Aspose to do the above operation by programatically.

Hi Allan,

Thanks for your inquiry. You can use the following code to convert a table to text:

Document doc = new Document(MyDir + @"in.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
Node[] tables = doc.GetChildNodes(NodeType.Table, true).ToArray();
foreach(Table table in tables)
{
    // Create new paragraph for string table
    Paragraph par = new Paragraph(doc);
    // Inser this paragraph after table
    table.ParentNode.InsertAfter(par, table);
    builder.MoveTo(par);
    builder.Font.Name = "Courier New";
    // Insert string table
    builder.Writeln(ConvertTable(table));
    table.Remove();
}
doc.Save(MyDir + @"out.docx");

///

/// Method converts table to string
///
/// input table
/// String that represents content of input table
private static string ConvertTable(Table tab)
{
    string output = string.Empty;
    // Calculate max string length of each table column
    ArrayList columnWidhs = new ArrayList();
    int tableWidth = 0;
    string horizontalBorder = string.Empty;
    // Loop through all rows in table
    foreach(Row row in tab.Rows)
    {
        // Loop througth all cells in current row
        foreach(Cell cell in row.Cells)
        {
            int cellIndex = row.Cells.IndexOf(cell);
            if (columnWidhs.Count> cellIndex)
            {
                if ((int) columnWidhs[cellIndex] <cell.ToTxt().Length)
                {
                    columnWidhs[cellIndex] = cell.ToTxt().Length;
                }
            }
            else
            {
                columnWidhs.Add(cell.ToTxt().Length);
            }
        }
    }
    // Calculate width of table
    for (int index = 0; index <columnWidhs.Count; index++)
    {
        tableWidth += (int) columnWidhs[index];
    }
    tableWidth += columnWidhs.Count;
    // Build horizontal border
    for (int index = 0; index <tableWidth; index++)
    {
        horizontalBorder += "-";
    }
    horizontalBorder += "\r\n";
    // Insert "Top Border"
    output += horizontalBorder;
    // Loop through all rows in table
    foreach(Row row in tab.Rows)
    {
        string currentRow = "|";
        // Loop througth all cells in current row
        foreach(Cell cell in row.Cells)
        {
            int cellIndex = row.Cells.IndexOf(cell);
            // Remove line breaks from cell text
            string curentCell = cell.ToTxt().Replace("\r", " ").Replace("\n", " ");
            // Insert white spaces to the end of cell text
            while (curentCell.Length <(int) columnWidhs[cellIndex])
            {
                curentCell += " ";
            }
            // Insert "Vertical border"
            currentRow += curentCell + "|";
        }
        output += currentRow + "\r\n";
        // Insert "horizontal Border"
        output += horizontalBorder;
    }
    return output;
}

I hope, this helps.

Best regards,

Thanks for your reply.
There an issue i faced after your sample code. If I have some bookmarks inside the table,I can’t see those bookmarks after converting table to text. The bookmarks has been removed after the conversion. What shall I do for this?

Hi Allan,

Thanks for your inquiry. We are checking with this scenario and will get back to you soon.

Best regards,

Hi Allan,

It is to update you that we have logged a task in our issue tracking system for our development team to develop functionality similar to Microsoft’s “Convert To Text” feature. Your ticket number is WORDSNET-10750. Your request has also been linked to this task and you will be notified as soon as it is worked out. Sorry for the inconvenience.

Best regards,