如何检查我正在编辑的特定页面Interop.Word

时间:2018-12-05 09:28:56

标签: c# ms-word office-interop

在我的应用中,我正在编辑Word文档,我想修改一些值,但我希望所做的更改仅影响第一页

第一页的内容如下:

USER:
COMPANY:

,我想将其修改为:

USER: aaa
COMPANY: bbb

我尝试过:

//properties
object objMiss = System.Reflection.Missing.Value;
object objEndOfDocFlag = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ //Start Word and create a new document.
Microsoft.Office.Interop.Word._Application objApp;
Microsoft.Office.Interop.Word._Document objDoc;



//load the document:
 objDoc = objApp.Documents.Open(@"C:\Users\BugsFixer\file.docx", ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss);

int count = objDoc.Words.Count;
for (int i = 1; i <= count; i++)
{                   
    string text = objDoc.Words[i].Text;
    if (text.StartsWith("USER"))
         objDoc.Words[i].Text = "USER: aaa";
    if (text.StartsWith("COMPANY"))
         objDoc.Words[i].Text = "COMPANY: bbb";                  
 }

但是它将更改所有“ USER”字符串。我需要类似的东西:

if(current page is one)
{
//replace USER with USER:aaa
//replace COMPANY with COMPANY:bbb
}

如何检查我是否正在编辑特定页面,即我的案例页面1?

1 个答案:

答案 0 :(得分:0)

Word有一个有趣的方法:get_Information,它采用枚举Word.WdInformation的参数。这可以返回很多有用的东西,其中包括所选内容或范围的当前页码。

由于Word对象返回Range,因此可以查询页码,如下所示:

Word.Range rngWord = objDoc.Words[i];
string text = rngWord.Text;
int pgNumber = rngWord.get_Information(Word.WdInformation.wdActiveEndPageNumber);
if (pgNumber = 1)
{
      if (text.StartsWith("USER"))
      { //and so on

请注意,也可以将foreachWords集合一起使用,而不用获取文档中的单词数并使用for循环。

话虽如此,如果代码使用Word的Find功能而不是逐个单词地循环...,则代码可能会更高效。