2012-10-01 30 views
1

如何檢查字詞中的某些字段是否有錯誤?我有一個大的文檔,其中包含許多其他章節或圖像的參考。如果文檔中缺少這些章節或圖像,則包含這些參考的字段將顯示Error! Reference Source Not Found而不是參考。使用VSTO檢查字引用中的字段錯誤

問題是,我需要創建一個算法來檢查那些引用錯誤,而不管文件的語言環境和語言是什麼。問題是,這個字段錯誤是使用這個詞的用戶系統的語言本地化的。

我該怎麼做?有沒有Field的任何財產可用於檢查源是否可用?

目前,我檢查在字段中的錯誤通過場的結果文本:

Int32 fieldErrors = 0; 
foreach (Word.Field field in doc.Fields) 
{ 
    field.Update(); 
    if (field.Result.Text.StartsWith("Error!")) 
     ++fieldErrors; 
} 

不幸的是,這隻會在英文單詞情況下工作。

回答

2

在有關Field類型的文檔中,可以看到Field實例有Update()方法,該方法返回bool。文檔沒有說明返回值的語義含義是什麼,但是,通過做一個簡短的實證研究,我發現如果Update()成功,則該方法返回true,如果更新沒有成功,則返回false。這意味着,爲了找到有錯誤的字段,你可以這樣做:

var fieldsWithErrors = new List<Field>(); 
foreach (Field field in document.Fields) 
{ 
    if(!field.Update()) 
     fieldsWithErrors.Add(field); 
} 

...或更短與LINQ:

var fieldsWithErrors = document.Fields.Cast<Field>().Where(field => !field.Update()).ToList(); 

另外,速度更快的方法是使用Update()方法由Fields集合公開。

var indexOfFirstError = document.Fields.Update(); 

...該方法返回錯誤的第一個字段的索引。如果沒有發現錯誤,則返回0。

有關完整文檔,請參閱MSDN引用: