Самый быстрый способ программной замены текста в документе Word - PullRequest
1 голос
/ 18 декабря 2010

Задача состоит в замене определенных ключевых слов в документе Word с помощью .NET.Какой самый быстрый и надежный способ сохранить оригинальное форматирование и структуру документа?

Ответы [ 3 ]

3 голосов
/ 22 декабря 2010

Если у вас установлено слово, это довольно тривиально.

Ссылка на сборку документов Word из GAC. Вы можете загрузить текстовый документ и заменить в нем данные.

Это из приложения, которое у меня есть, чтобы напечатать текстовые документы, введя имена клиентов и тому подобное. (вырезанные и вставленные участки)

    public void ReplaceWordDoc(ref Document doc, object data)
    {
        object missing = Missing.Value;

        List<ReplacerSearch> search = GetSearchList(data);

        foreach (var searchItem in search)
        {
            foreach (Range tmpRange in ((Document)doc).StoryRanges)
            {
                // Set the text to find and replace
                tmpRange.Find.Text = searchItem.Find;
                tmpRange.Find.Replacement.Text = searchItem.Replace;

                // Set the Find.Wrap property to continue (so it doesn't
                // prompt the user or stop when it hits the end of
                // the section)
                tmpRange.Find.Wrap = WdFindWrap.wdFindContinue;

                // Declare an object to pass as a parameter that sets
                // the Replace parameter to the "wdReplaceAll" enum
                object replaceAll = WdReplace.wdReplaceAll;

                // Execute the Find and Replace -- notice that the
                // 11th parameter is the "replaceAll" enum object
                tmpRange.Find.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);
            }
        }
    }

^ Эта часть выполняет поиск / замену. Список ReplacerSearch (wow bad name) - это всего лишь два свойства: Найти, Заменить. Find - текст для поиска, Replace - текст для замены.

Затем приведенный ниже код, основанный на заданном имени файла (путь / имя), создает экземпляр слова (я думаю) и открывает документ, выполняет замену, а затем вы можете сохранить или распечатать или еще что-нибудь. *

    object  fileName        = string.Empty,
            trueValue       = true,
            missing         = Missing.Value,
            falseValue      = false;
    var     app             = new ApplicationClass();
    var doc = new Document();

try
{
    doc = app.Documents.AddOld(ref fileName, ref missing);
    //doc = app.Documents.Add(ref fileName, ref missing, ref missing, ref missing);

    // Loops through the StoryRanges (sections of the Word doc)
    ReplaceWordDoc(ref doc, item);

    //Save or print...
}
catch (Exception ex)
{
    Helpers.Logger.WriteToEventLog(ex.Message, EventLogEntryType.Error);
}
finally
{
    if (doc != null)
    {
        doc.Close(ref falseValue, ref missing, ref missing);
    }
}

if (app != null)
{
    app.Application.Quit(ref falseValue, ref missing, ref missing);
}

Надеюсь, это поможет.

1 голос
/ 18 декабря 2010

Новые файлы Word по сути являются документами XML.Вы можете открыть их как обычные файлы на языке Python, а затем искать любые термины, которые хотите заменить.Как только вы их найдете, нужно просто изменить его и сохранить файл.

Вероятно, это можно сделать с помощью библиотеки строк, хотя может быть более простой способ, специально разработанный для XML-документов.

Редактировать: та же методология должна работать в .NET, только что заметил этот тег.

0 голосов
/ 18 декабря 2010

Посмотрите на использование функции MS Word Mail Merge, она была разработана для этой цели.
Посмотрите на http://support.microsoft.com/kb/301659

...