2016-01-19 1 views
0

Я играл с этим, но я просто не могу заставить его работать. У меня есть таблица в Microsoft Word, и в этой таблице есть поле mailmerge, которое выбирает моя программа на C#.Удалить таблицу строк Interop Word

Я хочу удалить строку, содержащую поле. Я попытался это:

app.Selection.SelectRow(); 
app.Selection.Delete(); 

app Где это экземпляр Microsoft.Office.Interop.Word.Application.

Как написано, этот код удаляет текст внутри таблицы, но оставляет пустую строку таблицы. Как удалить строку таблицы?

ответ

0

Если у вас есть Range или Selection, в большинстве случаев вы можете обратиться «содержащий» уровень, как это:

app.Selection.Rows[1] 

(Так как я на мобильном устройстве я не могу проверить, является ли вы можете используйте .Delete() напрямую или вам нужно .Range.Delete())

Аналогично, Selection.Tables [1] отобразит таблицу вокруг выбора и Selection.Paragraphs [1] абзац вокруг выделения.

Обратите внимание, что, если вы не хотите, чтобы это просто не получилось, вы должны использовать объект Range. Будет меньше мерцания экрана, выполнение будет быстрее, и ваш код станет более предсказуемым.

+0

Это прекрасно! Последующий вопрос: есть ли способ доступа к строке под выборкой, если я не уверен, что она уже существует? То есть Я хочу выбрать строку ниже или добавить строку. (Возможно, желаемое за действительное) –

+0

Несомненно. Что-то по строкам: app.Selection.Tables [1] .Rows [app.Selection.Rows [1] .Index + 1] .Select(); Хотя, когда вещи достигают такого уровня сложности, я бы старался создавать объекты для таблицы, строки и т. Д. В объектных моделях Office точка-нотация 1) неэффективна и 2) в среде .NET Framework будет имеют тенденцию создавать COM-объекты с указателями, которые могут вызвать проблемы, потому что вы не сможете их правильно освободить. –