c # Как получить стандартный объект стиля шрифта в Word - PullRequest
0 голосов
/ 04 декабря 2018

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

0 голосов
/ 04 декабря 2018

Для встроенных стилей объектная модель 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;
     }
}
...