如何替换页眉/页脚中的“FIELD”?
例如:带有文件名和日期的 Word doc 文件。代替文件路径 - [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,而不是关于字段信息的信息。
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);
}
更新: 在这里看起来对我有帮助,但似乎不起作用。知道如何在导出之前强制文档对象使用以下内容。
field.ShowCodes = true;