2013-03-05 38 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

相关问题