c#如何在Word中获取标准字体样式object

c# How to get standard font style object in Word

我正在将 *.html 文件中的可变文本插入到 Word 文档中,并且必须调整插入文本的字体(名称和大小)以适应文档的其余部分。 我有一个有效的解决方案,但我不喜欢我这样做的方式,所以我正在寻找另一种方法来从 Word 应用程序中获取标准字体名称和大小。 另一个问题是 NameLocal 可以使用不同的语言。所以我还需要另一种方法来找到 Headers。我已经尝试过 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;
    }
  }

我之所以不简单地更改样式,是因为 headers 仍然标记为 headers。 我很无知atm

对于内置样式,Word 对象模型提供了enumerationWdBuiltinStyle。使用它而不是 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;
     }
}