【问题标题】:c# How to get standard font style object in Wordc#如何在Word中获取标准字体样式对象
【发布时间】:2018-12-04 17:21:27
【问题描述】:

我正在将 *.html 文件中的可变文本插入 Word 文档,并且必须使插入文本的字体(名称和大小)适应文档的其余部分。 我有一个可行的解决方案,但我不喜欢我这样做的方式,所以我正在寻找另一种方法来从 Word 应用程序中获取标准字体名称和大小。 另一个问题是 NameLocal 可以使用不同的语言。所以我还需要另一种方法来找到标题。我已经尝试过 Style.Type 但它的值始终为“1” 到目前为止我的代码:

foreach (Word.Style style in Globals.ThisAddIn.Application.ActiveDocument.Styles)
  {
    if (style.NameLocal.Equals("Normal")) // find correct style object
    {
      float size = style.Font.Size;
      string font = style.Font.Name;

      foreach (Word.Paragraph paragraph in Globals.ThisAddIn.Application.ActiveDocument.Paragraphs)
      {
        if (paragraph.Range.get_Style().NameLocal.Contains("Heading")) // find all headers
        {
          paragraph.Range.Font.Size = size;
          paragraph.Range.Font.Name = font;
        }
      }
      break;
    }
  }

我不只是更改样式的原因是标题仍被标记为标题。 我很无知atm

【问题讨论】:

    标签: c# fonts ms-word word-style


    【解决方案1】:

    对于内置样式,Word 对象模型提供enumeration WdBuiltinStyle。使用它而不是 string 值(样式的本地名称)使得指定样式与语言无关。此外,内置样式将始终存在于文档中,因此无需循环文档的 Styles 集合来获取特定样式。

    所以,例如:

    Word.Document doc = Globals.ThisAddin.Application.ActiveDocument;
    Word.Style style = doc.Styles[Word.WdBuildinStyle.wdStyleNormal];
    float size = style.Size;
    string font = style.Font.Name;
    foreach (Word.Paragraph paragraph in doc)
    {
        if (paragraph.Range.get_Style() = Word.WdBuildinStyle.wdStyleHeading1)
        {
         paragraph.Range.Font.Size = size;
         paragraph.Range.Font.Name = font;
         }
    }
    

    【讨论】:

    • 我已经看过 WdBuildinStyles,但不知道如何正确使用它们……非常感谢!
    • 刚刚添加了一个后续问题...您介意看一下吗?
    • 请创建一个 问题@DomMa - 如果您认为它包含重要的背景材料,您可以添加指向此问题的链接。网站概念是问答——它不是典型的“讨论论坛”。所以规则是每个“问题”一个问题。当您发布时,还请提供您收到的错误的确切文本。现在,我在移动设备上,但当我在“真实”机器上时,我会看看新问题。
    猜你喜欢
    • 2013-03-07
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多