2013-03-05 43 views
0

我不知道如何將粗體和斜體單詞與普通單詞分開。使用c從word文檔中讀取粗體和斜體字的單詞#

任何人都可以建議如何使用C#識別粗體和斜體的單詞嗎?

這是我到目前爲止有:

foreach (Word.Paragraph objparagraph in document.Paragraphs) 
{ 
    string sLine = objparagraph.Range.Text; 
    if (sLine.Contains(Font.Bold && Font.Italic)) 
    { 

    } 
} 
+2

您是否能夠根據word文檔讀取文本?這是第一步。 – Blorgbeard 2013-03-05 03:28:50

+0

我敢肯定,你可以顯示代碼,你有*不*區分粗體和斜體字。我們會從那裏幫忙。 – 2013-03-05 03:31:11

+0

你可能會覺得這很有幫助。正如其他人所說,如果不知道自己做了什麼,我們就無法幫上忙。 http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.find_members%28v=office.14%29.aspx – chessofnerd 2013-03-05 03:33:23

回答

0

首先,我一直沒能測試這個代碼,所以我不作任何承諾,這將工作!我提供這個,但想要提前說我的答案是AFAIK!

這就是說,目前什麼你正在做的,因爲你正在轉換段落對象將無法正常工作(包含所需粗體和斜體信息)到字符串對象(即不包含大膽或斜體信息,也就是說,在有機會測試它是否存在之前,您正在丟失粗體/斜體信息!而不是使用.Range.Text屬性,而只想使用.Range屬性。看起來像這樣:

foreach (Word.Paragraph objparagraph in document.Paragraphs) 
{ 
    int TRUE_CODE = 1;  // I do NOT know if this is correct, it could be another number! 

    Range rWords = objparagraph.Range.Text; 
    foreach (Range word in rWords.Words 
     if (word.Bold == TRUE_CODE) 
     { 
      // handle bold case 
     } 
     if (word.Italic == TRUE_CODE) 
      // handle italic case 
     } 
    } 
} 

因爲我沒有測試過這個代碼,意識到它可能需要調整才能正確。特別是,你會認爲word.Bold和word.Italic會返回真或假,但他們不會。相反,他們返回一個代表三件事情之一的整數。

true - the word is bold (or italic) 
false - the word is _not_ bold (or italic) 
wdUndefined - the word is something else (combination, etc.) 

(問題是,我不知道每個類別的整數是多少)。在上面的代碼片段中,我假設1映射爲true,但這可能不正確!儘管如此,希望這足以讓你開始。快樂的編碼!

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.range.bold.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

+0

感謝您的輸入... – 2013-03-11 03:26:22

+0

TRUE_CODE必須是-1 和範圍rWords = objparagraph.Range;只有不.Text 謝謝你它正在正常工作... – 2013-03-11 10:02:34

相關問題