在我的应用中,我正在编辑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?
答案 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
请注意,也可以将foreach
与Words
集合一起使用,而不用获取文档中的单词数并使用for
循环。
话虽如此,如果代码使用Word的Find
功能而不是逐个单词地循环...,则代码可能会更高效。