1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個贊
您要查找的字段枚舉是WordWdFieldType.wdFieldNumPages。
下一個障礙是如何構(gòu)造字段+文本+字段,因?yàn)楫?dāng)按此順序添加內(nèi)容時,Word 的行為不“合乎邏輯”。目標(biāo)點(diǎn)保留在插入的字段之前。因此,要么需要向后工作,要么在每一位內(nèi)容之后移動目標(biāo)范圍。
這是我演示后一種方法的一些代碼。插入文本和插入字段位于兩個單獨(dú)的過程中,這兩個過程將目標(biāo)Range和文本(無論是文字還是字段文本)作為參數(shù)。這樣,可以邏輯地構(gòu)建字段代碼(第 x 頁,共 n 頁)。目標(biāo)Range從兩個過程返回,已經(jīng)折疊到其端點(diǎn),準(zhǔn)備附加更多內(nèi)容。
請注意,我更喜歡使用字段的文本(包括任何字段開關(guān))來構(gòu)造字段,而不是指定字段類型(枚舉WdFieldType)。這提供了更大的靈活性。我還強(qiáng)烈建議將該P(yáng)reserveFormatting參數(shù)設(shè)置為false,因?yàn)樵搕rue設(shè)置可能會在更新字段時導(dǎo)致非常奇怪的格式。它應(yīng)該只在非常特定的實(shí)例中使用(通常涉及鏈接表)。
private void btnInsertPageNr_Click(object sender, EventArgs e)
{
getWordInstance();
Word.Document doc = null;
if (wdApp.Documents.Count > 0)
{
doc = wdApp.ActiveDocument;
Word.Range rngHeader = doc.Sections[1].Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
if (rngHeader.Tables.Count > 0)
{
Word.Table tbl = rngHeader.Tables[1];
Word.Range rngPageNr = tbl.Range.Cells[tbl.Range.Cells.Count].Range;
//Collapse the range so that it's within the cell and
//doesn't include the end-of-cell markers
object oCollapseStart = Word.WdCollapseDirection.wdCollapseStart;
rngPageNr.Collapse(ref oCollapseStart);
rngPageNr = InsertNewText(rngPageNr, "Page ");
rngPageNr = InsertAField(rngPageNr, "Page");
rngPageNr = InsertNewText(rngPageNr, " of ");
rngPageNr = InsertAField(rngPageNr, "NumPages");
}
}
}
private Word.Range InsertNewText(Word.Range rng, string newText)
{
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
rng.Text = newText;
rng.Collapse(ref oCollapseEnd);
return rng;
}
private Word.Range InsertAField(Word.Range rng,
string fieldText)
{
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
object unitCharacter = Word.WdUnits.wdCharacter;
object oOne = 1;
Word.Field fld = rng.Document.Fields.Add(rng, missing, fieldText, false);
Word.Range rngField = fld.Result;
rngField.Collapse(ref oCollapseEnd);
rngField.MoveStart(ref unitCharacter, ref oOne);
return rngField;
}
- 1 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報