We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
close icon

What is the best way to delete a number of colums from a table?

Hi,
I am using a template document, with a formatted table in a bookmark. I can find the table and then change it.
However, I would like to start with a fixed set of rows and columns. 
When using 
     table.ResetCells(1, 2);

It also clears the content of the cells. There does not seem to be an option to retain the content when doing ResetCells. So what is the best alternative?

I now do this, please check if this is the most efficient. Perhaps I should make an extension method?
First step is reduce to 1 row and just a few cells to ensure the unwanted columns and cell content is removed:

    if (table== null) return;
    //reduce to just the header
    for (var index = table.Rows.Count - 1; index > 0; index--)
    {
        table.Rows.Remove(table.Rows[index]);
    }
    for (var index = table.Rows[0].Cells.Count - 1; index > 2; index--)
    {
        table.Rows[0].Cells.RemoveAt(index);
    }

Next expand the number of columns dynamically to the desired, and add the first content row to be filled:

    //add the needed cells for the dates
    for (int j = 0; j <= dateCount; j++)
    {
        table.Rows[0].Cells.Add(new WTableCell(_wordDocument));
        table[0, 3 + j].Width = dateWidth;
    }
     // add the first row
    table.AddRow(true, true);
           

Thanks, Pieter             

3 Replies

VA Vijayasurya Anandhan Syncfusion Team June 6, 2019 09:59 AM UTC

Hi Pieter,

Thank you for contacting Syncfusion support.

From the given details, we have found that your end requirement is to find the table and modify the contents. In DocIO, ResetCells API is used to reset the table with the specified number of rows and columns and it doesn’t preserve the existing contents of the table, which is one of the behaviors of ResetCells API. To meet your requirement, it needs to iterate through the table elements and modify the contents as per your code example.

Please let us know if you have any other questions.

Regards,
Vijayasurya A
 



PV Pieter van Kampen June 6, 2019 09:30 PM UTC

Thank you,
I made the following extension method, which can reduce a table size or extend.

        public static void ResetCellsWithContent(this WTable table, int rows, int cols)
        {
            if (rows == 0 || cols == 0) throw new ArgumentException("rows and cols should be more than 0");

            if (rows < table.Rows.Count) //reduce the rows
            {
                for (var index = table.Rows.Count - 1; index > rows - 1; index--)
                {
                    table.Rows.Remove(table.Rows[index]);
                }
            }

            if (cols < table.Rows[0].Cells.Count) //reduce cols
            {
                for (var rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++)
                {
                    for (var index = table.Rows[rowIndex].Cells.Count - 1; index > cols - 1; index--)
                    {
                        table.Rows[rowIndex].Cells.RemoveAt(index);
                    }
                }
            }

            if (cols > table.Rows[0].Cells.Count)
            { //add cells to each existing row

                for (int i = 0; i < table.Rows.Count; i++)
                {
                    for (int index = table.Rows[i].Cells.Count; index < cols ; index++)
                    {
                        table.Rows[i].Cells.Add(new WTableCell(table.Document));

                    }
                }
            }

            if (rows <= table.Rows.Count) return;

            for (int i = table.Rows.Count; i < rows; i++)
            {
                table.AddRow(true, true);
            }

        }


MJ Mohanaselvam Jothi Syncfusion Team June 7, 2019 09:28 AM UTC

Hi Pieter,

Thank you for your update.

We are happy to hear that the solution for your requirement is found.  If you face any problems to achieve your requirements, kindly share us the input Word document and expected output document. Thereby, we will check and provide you the solution at the earliest.

Please let us know if you have any other question

Regards,
Mohanaselvam J



Loader.
Live Chat Icon For mobile
Up arrow icon