C# сравнение объектов стиля в MS Word
Я должен отредактировать все заголовки в текстовом документе.
Я попробовал это:
Word.WdBuiltinStyle[] styleArray = {
Word.WdBuiltinStyle.wdStyleHeading1,
Word.WdBuiltinStyle.wdStyleHeading2,
Word.WdBuiltinStyle.wdStyleHeading3,
Word.WdBuiltinStyle.wdStyleHeading4,
Word.WdBuiltinStyle.wdStyleHeading5,
Word.WdBuiltinStyle.wdStyleHeading6,
Word.WdBuiltinStyle.wdStyleHeading7,
Word.WdBuiltinStyle.wdStyleHeading8,
Word.WdBuiltinStyle.wdStyleHeading9
};
foreach (Word.Paragraph paragraph in Globals.ThisAddIn.Application.ActiveDocument.Paragraphs)
{
if (styleArray.Any(a => a.Equals((Word.WdBuiltinStyle)paragraph.Range.get_Style())))
{
paragraph.Range.Font.Size = size;
paragraph.Range.Font.Name = font;
}
}
Но там говорится, что я не могу сыграть, и я чувствую, что это не очень хороший способ сделать это.
Это также не работает с
if (styleArray.Contains(paragraph.Range.get_Style()))
Любая помощь по этому вопросу, пожалуйста?
1 ответ
Решение
Есть разница между встроенным перечислением стилей и реальным стилем. Вот почему сравнение не работает. Массив должен быть массивом стилей. Например:
Word.Document doc = Globals.ThisAddin.Application.ActiveDocument;
enter code here
Word.Style[] styleArray = {
doc.Styles(Word.WdBuiltinStyle.wdStyleHeading1),
doc.Styles(Word.WdBuiltinStyle.wdStyleHeading2),
doc.Styles(Word.WdBuiltinStyle.wdStyleHeading3) //and so on
};