Удалить границы всех таблиц в документе Word - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь удалить границу всех таблиц в моем текстовом документе. Я мог бы подумать о возможном коде ниже, кажется, правильно. Но не работает. Любая идея, почему?

foreach (Word.Table wordTable in wordDocument.Content.Tables) {
                    wordTable.Range.Select();
                    wordTable.Range.Borders.Enable = 0;

                }

Любая помощь будет высоко ценится

Ответы [ 3 ]

0 голосов
/ 27 марта 2020

попробуйте это:

foreach (Word.Table wordTable in wordDocument.Content.Tables) 
{
    Word.Border[] borders = new Word.Border[6];
    borders[0] = wordTable.Borders[Word.WdBorderType.wdBorderLeft];
    borders[1] = wordTable.Borders[Word.WdBorderType.wdBorderRight];
    borders[2] = wordTable.Borders[Word.WdBorderType.wdBorderTop];
    borders[3] = wordTable.Borders[Word.WdBorderType.wdBorderBottom];
    borders[4] = wordTable.Borders[Word.WdBorderType.wdBorderHorizontal];
    borders[5] = wordTable.Borders[Word.WdBorderType.wdBorderVertical];

    foreach (Word.Border border in borders)
    {
        border.LineStyle = Word.WdLineStyle.wdLineStyleNone;
    }
}

РЕДАКТИРОВАТЬ:

вы также можете сделать это

foreach (Word.Table wordTable in wordDocument.Content.Tables) 
{
    wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleNone; 

wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleNone;

 }
0 голосов
/ 27 марта 2020
foreach (Word.Table outerwordTable in wordDocument.Content.Tables) {
                foreach (Word.Table wordTable in outerwordTable.Tables) {
                    Word.Border[] borders = new Word.Border[6];
                    borders[0] = wordTable.Borders[Word.WdBorderType.wdBorderLeft];
                    borders[1] = wordTable.Borders[Word.WdBorderType.wdBorderRight];
                    borders[2] = wordTable.Borders[Word.WdBorderType.wdBorderTop];
                    borders[3] = wordTable.Borders[Word.WdBorderType.wdBorderBottom];
                    borders[4] = wordTable.Borders[Word.WdBorderType.wdBorderHorizontal];
                    borders[5] = wordTable.Borders[Word.WdBorderType.wdBorderVertical];

                    foreach (Word.Border border in borders)
                    {
                        border.LineStyle = Word.WdLineStyle.wdLineStyleNone;
                    }
                }


            }

Эта штука сработала .... Кажется, в моем коде как-то сгенерирован другой уровень вложенности таблиц

0 голосов
/ 27 марта 2020

Я запустил ваш код и увидел, что не все границы удалены. Я не знаю причину этого.

Пожалуйста, попробуйте это. У меня это работает:

    foreach (Word.Table wordTable in wordDocument.Content.Tables)
    {
        wordTable.Borders.Enable = 0;
    }

    wordDocument.Save();
...