【问题标题】:Selecting text by font in Word在 Word 中按字体选择文本
【发布时间】:2012-07-08 16:45:37
【问题描述】:

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

另外,有没有办法找出文档中某些文本的字体是什么?

我的预感是 Microsoft.Office.Interop.Word 命名空间中有可以执行此操作的函数,但我似乎找不到它们。

编辑:我使用的是 word 2010。

【问题讨论】:

  • 我没有使用 MS Word API,但也许您可以指定您使用的 Word 版本?这可能是相关的,AFAIK .doc.docx 是非常不同的格式(虽然不确定 API)。
  • 不确定如何使用范围来执行此操作。为此逐个字符地进行似乎很愚蠢。 @oleksii,已编辑。
  • 这只是您研究的起点。如果我知道完整的答案,我会回答你的问题:)

标签: c# ms-word


【解决方案1】:

您可以从 Word Interop 中循环浏览文档 using the Find object。您可以为文档中的选择或范围设置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 代码。

【讨论】:

  • 查找返回第一个匹配项?在那之后,我必须改变我的范围吗?
  • 不,您可以再次调用Execute,直到它返回false。 方法改变范围。
  • 你能提供这样做的代码吗?我不太明白你的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
相关资源
最近更新 更多