C# Как получить стандартный объект стиля шрифта в Word

Я вставляю переменный текст из файла *.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;
    }
  }

Причина, по которой я не просто меняю стиль, заключается в том, что заголовки по-прежнему помечаются как заголовки. Я довольно невежественный банкомат

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;
     }
}
Другие вопросы по тегам