Проверка орфографии в C # с помощью Word Interop - PullRequest
4 голосов
/ 15 марта 2012

Я пишу приложение для проверки орфографии на C #, используя word.dll (Word Interop API).

Я хочу проверить, какие варианты написания неверны и, соответственно, получить предложения по неверным словам.

Я получил пример кода из сети и не могу понять параметры для следующей команды:

Microsoft.Office.Interop.Word._Application.GetSpellingSuggestions
   (string, ref object, ref object, ref object, ref object, ref object, 
       ref object, ref object, ref object, ref object, ref object, ref object, 
       ref object, ref object)

Я просто хотел бы знать, что означают все ref object?Я хочу знать их значение.

Ответы [ 3 ]

4 голосов
/ 07 января 2013

Я работал с этим на днях и подумал, что хотел бы поделиться своими выводами и добавить немного к уже полученным ответам.

Вы спрашиваете:

Я хочупроверьте правильность написания и, соответственно, получите предложения для неправильных слов.

(...)

Я просто хотел бы знать, что подразумевается под "объектом ref"?Я хочу знать их значение.

Краткий ответ на этот вопрос - посмотрите в документацию .

, чтобы показать вам, как метод GetSpellingSuggestions можетчтобы быть использованным в более полном контексте, я включил пример программы в следующее.Обратите внимание, что вы можете изменить нужный язык проверки с помощью переменной language.Код выглядит следующим образом:

using System;
using Microsoft.Office.Interop.Word;

namespace WordStack
{
    public class Program
    {
        private static void Main()
        {
            // Create a new Word application instance (and keep it invisible)
            var wordApplication = new Application() { Visible = false };

            // A document must be loaded
            var myDocument = wordApplication.Documents.Open(@"C:\...\myDoc.docx");

            // Set the language
            var language = wordApplication.Languages[WdLanguageID.wdEnglishUS];

            // Set the filename of the custom dictionary
            // -- Based on:
            // http://support.microsoft.com/kb/292108
            // http://www.delphigroups.info/2/c2/261707.html
            const string custDict = "custom.dic";

            // Get the spelling suggestions
            var suggestions = wordApplication.GetSpellingSuggestions("overfloww", custDict, MainDictionary: language.Name);

            // Print each suggestion to the console
            foreach (SpellingSuggestion spellingSuggestion in suggestions)
                Console.WriteLine("Suggested replacement: {0}", spellingSuggestion.Name);

            Console.ReadLine();
            wordApplication.Quit();
        }
    }
}

..., что дает мне следующие три предложения: переполнение , переполнение и переполнение .

Данный пример был реализован с использованием .NET 4.5 и версии 15 Word Interop API (Office 2013).

Обратите внимание, что данный пример также решает ваш комментарий к одному изуже дали ответы, сказав:

(...) Работает.Но приложение Microsoft Word появляется для каждого слова.Есть ли способ получить орфографическое предложение, не открывая окно приложения Microsoft ??

Лично я не сталкивался с таким поведением (ни с методами GetSpellingSuggestions, ни с CheckSpelling, доступными наэкземпляр Application).

Однако, если вы вызовете CheckSpelling для экземпляра Document, он будет , как описано в документации , отобразить диалог правописания, если он илинайдено больше слов с ошибками (учитывая, что при создании экземпляра Word Application свойство Visible назначено true - в противном случае оно будет ожидать ввода в фоновом режиме, что приведет к зависанию приложения).

3 голосов
/ 15 марта 2012

Обновление : Таким образом, кажется, вам нужно получить первое предложение правописания от слова. Я проверил эту статью, и я пришел к выводу, что вам нужно сделать что-то вроде этого:

Word.SpellingSuggestions listOfSuggestions = 
                                  app.GetSpellingSuggestions(searchStr);
listOfSuggestions.Items[0].Name;//should contain the first suggestion

Итак, из документов MSDN :

Синтаксис 1

expression.GetSpellingSuggestions(CustomDictionary, IgnoreUppercase, 
    MainDictionary, SuggestionMode, CustomDictionary2  CustomDictionary10)

Результат : Возвращает коллекцию SpellingSuggestions, которая представляет слова, предложенные в качестве замены правописания для первого слова в указанном диапазоне.

Синтаксис 2

expression.GetSpellingSuggestions(Word, CustomDictionary, IgnoreUppercase,
 MainDictionary, SuggestionMode, CustomDictionary2  CustomDictionary10)

Результат : Возвращает коллекцию SpellingSuggestions, которая представляет слова, предложенные в качестве замены правописания для данного слова.

Примечание : Если вы используете что-либо ранее, чем .NET4 , вам придется использовать Missing.Value для параметров, которые вы хотите empty/null. Начиная с .NET4 у нас есть необязательные параметры, и когда вы добавляете ссылку на библиотеку Office, обертка взаимодействия будет иметь перегрузки на основе необязательных параметров.

0 голосов
/ 15 марта 2012
    SpellingSuggestions GetSpellingSuggestions(
        string Word,
        ref Object CustomDictionary,
        ref Object IgnoreUppercase,
        ref Object MainDictionary,
        ref Object SuggestionMode,
        ref Object CustomDictionary2,
        ref Object CustomDictionary3,
        ref Object CustomDictionary4,
        ref Object CustomDictionary5,
        ref Object CustomDictionary6,
        ref Object CustomDictionary7,
        ref Object CustomDictionary8,
        ref Object CustomDictionary9,
        ref Object CustomDictionary10

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...