Как заменить "FIELD" в верхнем/нижнем колонтитуле?
Пример: файл документа Word с именем файла и датой. вместо пути к файлу - [FilePath] вместо C://Documents/Location/Filename.doc, [Date] вместо 18/07/2013.
Я могу заменить любой текст с диапазоном.
foreach (Microsoft.Office.Interop.Word.Section section in wordDocument.Sections)
{
section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text.Replace(sourceDocPath, "[File Path]");
section.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text.Replace(sourceDocPath, "[File Path]");
}
Это отлично подходит для имени файла, однако для даты невозможно угадать формат для замены. Это все потому, что я не могу уловить точную информацию о поле, которую нужно заменить.
В приведенном ниже коде также я не могу использовать
wordApp.Selection.Find.Execute(ref textToReplace, ref typeMissing,
ref typeMissing, ref typeMissing, ref typeMissing, ref typeMissing,
ref typeMissing, ref typeMissing, ref typeMissing, ref typeMissing,
ref replaceTextWith, ref replaceAll, ref typeMissing, ref typeMissing,
ref typeMissing, ref typeMissing);
Единственный способ, который я вижу на данный момент, - это обработать все возможные форматы дат и заменить, но это не похоже на хороший подход ко мне.
Обновление в соответствии с комментарием, заданным с помощью Storyrange.
Не дает мне точной информации о поле, говорящей [DATE]. Когда я повторяю диапазон сюжетов, информация о типе, которую я получаю wdstorytype, который содержит информацию о разделе, nt о информации о поле.
foreach (Microsoft.Office.Interop.Word.Range tmpRange in wordDocument.StoryRanges)
{
string strtype = tmpRange.StoryType.ToString();
tmpRange.Find.Text = "18/07/2013";
tmpRange.Find.Replacement.Text = "";
tmpRange.Find.Replacement.ParagraphFormat.Alignment =
Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;
tmpRange.Find.Wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue;
object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
tmpRange.Find.Execute(ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref replaceAll,
ref missing, ref missing, ref missing, ref missing);
}
Update: Выглядит то, что помогает мне здесь, но, похоже, не работает. Любая идея, как я могу заставить объект документа использовать ниже перед экспортом.
field.ShowCodes = true;