Fred Andres Ответов: 2

Как мне ускорить этот код word.interop


Я написал следующий код, чтобы найти расположение текстовой строки в документе word. Это работает, но очень медленно. Как мне его ускорить?
public int find_text(string some_text)
{
    int point0;
    int location;
    int text_length;
    string curr_text;
    bool found;
    location = -1;
    text_length = some_text.Length;
    point0 = -1;
    found = false;
    while (point0 < pEnd - text_length && !found)
    {
        point0++;
        curr_text = pDoc.Range(point0, point0 + text_length).Text;
        if (curr_text == some_text)
        {
            location = point0;
            found = true;
        }
    }
    return location;
}


Что я уже пробовал:

Я пытался использовать диапазон.Найдите класс интерфейса. Он говорит мне, был ли найден текст, но я не могу найти его местоположение.

Maciej Los

Вы хотите заменить текст или изменить его форматирование?

2 Ответов

Рейтинг:
18

Fred Andres

Спасибо за помощь Мацей. Обратите внимание на мое решение ниже, основанное на вашей информации.

Maciej Los

Всегда пожалуйста.
Ваше здоровье!
Мацей

Рейтинг:
0

Fred Andres

Спасибо за Вашу помощь, Мацей. С вашей информацией я смог придумать следующее решение, которое быстро светлеет:

public void find_and_replace_text(string curr_text, string new_text)
{
    Word.Find findObject;
    var missing = Type.Missing;
    findObject = pDoc.Content.Find;
    findObject.ClearFormatting();
    findObject.Text = curr_text;
    findObject.Replacement.ClearFormatting();
    findObject.Replacement.Text = new_text;
    object replaceAll;
    replaceAll = Word.WdReplace.wdReplaceAll;
    findObject.Execute(ref missing, ref missing, ref missing, ref missing,
         ref missing,
         ref missing, ref missing, ref missing, ref missing, ref missing,
         ref replaceAll, ref missing, ref missing, ref missing, ref missing);
}


Maciej Los

5ed!
Вы также можете принять свой ответ как решение.