Как я могу программно удалить строку из документа Word, используя c #? - PullRequest
4 голосов
/ 03 декабря 2009

У меня есть код для поиска и замены полей в текстовом документе значениями из набора данных.

Word.Document oWordDoc = new Word.Document();  
foreach (Word.Field mergeField in oWordDoc.Fields)  
{  
   mergeField.Select();  
   oWord.Selection.TypeText( stringValueFromDataSet );  
}

В некоторых случаях stringValueFromDataSet пусто, и, кроме вставки ничего, я хочу удалить текущую строку.

Есть идеи, как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 03 декабря 2009

ОК, в конце концов это было нелепо легко.

oWord.Selection.TypeBackspace();//remove the field
oWord.Selection.TypeBackspace();//remove the line

4 голосов
/ 03 декабря 2009

Очевидно, ваш ответ работает в вашем случае. Однако в общем случае (где вся строка не может быть удалена с помощью backspace) можно использовать следующее:

    private static object missing = System.Reflection.Missing.Value;

    /// <summary>
    /// Deletes the line in which there is a selection.
    /// </summary>
    /// <param name="application">Instance of Application object.</param>
    private void DeleteCurrentSelectionLine(_Application application)
    {
        object wdLine = WdUnits.wdLine;
        object wdCharacter = WdUnits.wdCharacter;
        object wdExtend = WdMovementType.wdExtend;
        object count = 1;

        Selection selection = application.Selection;
        selection.HomeKey(ref wdLine, ref missing);
        selection.MoveDown(ref wdLine, ref count, ref wdExtend);
        selection.Delete(ref wdCharacter, ref missing);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...