c#比较MS Word中的样式对象 [英] c# comparing style objects in MS Word

查看:167
本文介绍了c#比较MS Word中的样式对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须编辑word文档中的所有标题.

I have to edit all headings inside a word document.

我尝试过:

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.

它也不适用于

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

对此有任何帮助吗?

推荐答案

内置样式枚举与实际样式之间存在差异.这就是为什么比较不起作用的原因.该数组必须是 styles 的数组.例如:

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

这篇关于c#比较MS Word中的样式对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆