У меня есть шаблонное слово документа, и я использую функцию для замены указанного c текста на желаемый текст. Он работает для всего документа (основной текст и заголовки), за исключением заголовка на последней странице, которая представляет собой альбомную страницу.
void FindAndReplace2(Microsoft.Office.Interop.Word.Document document, string placeHolder, string newText)
{
object missingObject = null;
object item = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
object whichItem = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToFirst;
object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
object forward = true;
object matchAllWord = true;
object matchCase = false;
object originalText = placeHolder;
object replaceText = newText;
document.GoTo(ref item, ref whichItem, ref missingObject, ref missingObject);
foreach (Microsoft.Office.Interop.Word.Range rng in document.StoryRanges)
{
rng.Find.Execute(ref originalText, ref matchCase,
ref matchAllWord, ref missingObject, ref missingObject, ref missingObject, ref forward,
ref missingObject, ref missingObject, ref replaceText, ref replaceAll, ref missingObject,
ref missingObject, ref missingObject, ref missingObject);
}
}
Я не уверен, почему эта функция будет работать на всех, кроме страница пейзажа. Я не знаю, как действовать дальше.
Основной пример файла
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
// Start Word and create a new document.
Word.Application oWord;
Word.Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
//Template file
object oTemplate = @"FILEPATH";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
string SiteName="J8865";
FindAndReplace2(oDoc, "Sample", SiteName);
Примечание. Этот файл является лишь выдержкой из моего основного файла.