Как проверить, что я редактирую конкретную страницу Interop.Word - PullRequest
0 голосов
/ 05 декабря 2018

В моем приложении я редактирую текстовый документ, я хочу изменить некоторые значения, но я хочу, чтобы изменения коснулись первой страницы, только :

Содержимое первогостраница похожа на:

USER:
COMPANY:

, и я хочу изменить ее на:

USER: aaa
COMPANY: bbb

Я пробовал как:

//properties
object objMiss = System.Reflection.Missing.Value;
object objEndOfDocFlag = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ //Start Word and create a new document.
Microsoft.Office.Interop.Word._Application objApp;
Microsoft.Office.Interop.Word._Document objDoc;



//load the document:
 objDoc = objApp.Documents.Open(@"C:\Users\BugsFixer\file.docx", ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss);

int count = objDoc.Words.Count;
for (int i = 1; i <= count; i++)
{                   
    string text = objDoc.Words[i].Text;
    if (text.StartsWith("USER"))
         objDoc.Words[i].Text = "USER: aaa";
    if (text.StartsWith("COMPANY"))
         objDoc.Words[i].Text = "COMPANY: bbb";                  
 }

но это все изменит все "ПОЛЬЗОВАТЕЛЬСКИЕ »струны.Мне нужно что-то вроде:

if(current page is one)
{
//replace USER with USER:aaa
//replace COMPANY with COMPANY:bbb
}

Как проверить, что я редактирую определенную страницу, т.е. в моем случае страница 1?

1 Ответ

0 голосов
/ 05 декабря 2018

В Word есть интересный метод: get_Information, который принимает аргумент перечисления Word.WdInformation.Это может быть несколько полезных вещей, среди которых текущий номер страницы выбора или Диапазон.

Поскольку объект Word возвращает Range, можно запросить номер страницы примерно так:this:

Word.Range rngWord = objDoc.Words[i];
string text = rngWord.Text;
int pgNumber = rngWord.get_Information(Word.WdInformation.wdActiveEndPageNumber);
if (pgNumber = 1)
{
      if (text.StartsWith("USER"))
      { //and so on

Обратите внимание, что можно также использовать foreach с коллекцией Words вместо получения количества слов в документе и использования цикла for.

* 1014С учетом всего вышесказанного, код, вероятно, был бы более эффективным, если бы он использовал функциональность Word Find вместо закадрового зацикливания ...
...