C# 在Word中按字体选择文本

C# 在Word中按字体选择文本,c#,ms-word,C#,Ms Word,有没有办法通过C#提取word中使用特定字体(大小、粗体、字体名称等)的所有行 此外,是否有办法找出文档中某些文本的字体 我的直觉是,在Microsoft.Office.Interop.Word命名空间中有一些函数可以做到这一点,但我似乎找不到它们 编辑:我正在使用word 2010。您可以从word Interop循环浏览文档。您可以为文档中的选择或范围设置Find.Font.Name属性。请注意,Font界面有几个用于各种编码的Name*属性 编辑 以下是等效的VBA代码: Dim sele

有没有办法通过C#提取word中使用特定字体(大小、粗体、字体名称等)的所有行

此外,是否有办法找出文档中某些文本的字体

我的直觉是,在Microsoft.Office.Interop.Word命名空间中有一些函数可以做到这一点,但我似乎找不到它们


编辑:我正在使用word 2010。

您可以从word Interop循环浏览文档。您可以为文档中的选择或范围设置
Find.Font.Name
属性。请注意,
Font
界面有几个用于各种编码的
Name*
属性

编辑

以下是等效的VBA代码:

Dim selectionRange As Range
Set selectionRange = Application.ActiveDocument.Range

With selectionRange.Find
    .ClearFormatting
    .Format = True
    .Font.NameBi = "Narkisim" //for doc without bidirectional script, use Name
    Do While .Execute
        MsgBox selectionRange.Text
    Loop
End With
Word Interop中的对象模型相同,请参见上面的链接


现在不要问我C代码。。。就是这样,我们不做银盘。如果您打算认真使用Office Interop API,则需要能够阅读VBA代码。

我没有使用MS Word API,但您可以指定使用的Word版本?这可能是相关的,AFAIK.doc和.docx是非常不同的格式(但不确定API)。这有帮助吗?可能不确定如何使用范围来执行此操作。一个字一个字地写这个似乎很愚蠢@oleksii,编辑。这只是你研究的一个起点。如果我知道完整的答案,我会回答你的问题:)查找返回第一个匹配?在那之后,我必须改变我的范围吗?不,你可以再次调用
Execute
,直到它返回false。方法更改范围。请提供此操作的代码吗?我真的不明白你的意思。