How can I control table column width in Word documents using DocX?

13,229

Solution 1

I found the answer to this myself. In order to properly set the width, you have to loop through each cell in a column and set every width. This will not work with any autofit options selected.

Solution 2

Try this :

Table table = doc.AddTable(2, 2);
table.SetColumnWidth(0, 500);
//first is column index, the second is column width

Solution 3

This is the way:

Table t = doc.AddTable(1, 5);
t.SetWidthsPercentage(new[] { 20f, 20f, 40f, 10f, 10f }, 500);

The float array sets width percentage for each of the columns, second parameter is the total width of the table.

Solution 4

Bit of an old post to tag to, but after having the same issue it would appear that none of the widths on either the cells or columns actually work, so as a dirty workaround, you can loop through each column and cell adding text to each of the cells, make the text white and finally use the autofit option to autofit to contents eg.

Table t2 = doc.AddTable(2, 8);
for (int i = 0; i < t2.RowCount; i ++)
{
     for(int x = 0; x < t2.ColumnCount; x++)
     {
        t2.Rows[i].Cells[x].Paragraphs.First().Append("12").Color(Color.White);
     }
}
t2.AutoFit = AutoFit.Contents;
doc.InsertTable(t2);
Share:
13,229
ssb
Author by

ssb

日本語もできる

Updated on June 04, 2022

Comments

  • ssb
    ssb almost 2 years

    I am trying to recreate a table like this:

    Table

    I am using the DocX library to manipulate Word files, but I'm having trouble getting the widths right. Trying to set the widths of cells only seems to work when it's not set to the window autofit mode, and it only seems to resize when the specified width is greater than half of the table width, or rather, I can make a cell bigger than half the width but not smaller.

    What would be the simplest way to reproduce the intended table?