2

我将 *.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

4

1 回答 1

1

对于内置样式,Word 对象模型提供了枚举 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;
     }
}
于 2018-12-04T19:41:59.097 回答