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;
}
}