简体   繁体   English

c#比较MS Word中的样式对象

[英]c# comparing style objects in MS Word

I have to edit all headings inside a word document. 我必须编辑Word文档中的所有标题。

I tried this: 我尝试了这个:

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

But it says I can't cast and I#m feeling this is not a very good way to do it. 但是它说我无法进行投射,我觉得这不是一个很好的方法。

It also doesn't work with 它也不适用于

if (styleArray.Contains(paragraph.Range.get_Style()))

Any help on this please? 请问有什么帮助吗?

There's a difference between the built-in style enumeration and an actual style. 内置样式枚举与实际样式有所不同。 That's why the comparison isn't working. 这就是为什么无法进行比较的原因。 The array needs to be an array of styles . 该数组必须是样式的数组。 For example: 例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM