Microsoft Interop Word带格式查找替换:如何设置替换文本下划线
问题描述
我正在开发一个Windows Form应用程序,提交用户输入后会打开Word模板,将窗体中的日期替换到Word文档中,希望替换后的文本带有下划线。我使用了一个他人分享的FindAndReplace函数,但不知如何设置格式,函数代码如下:
private void FindAndReplace(Microsoft.Office.Interop.Word.Application wordApp, object toFindText, object replaceWithText) { object matchCase = true; object matchwholeWord = true; object matchwildCards = false; object matchSoundLike = false; object nmatchAllforms = false; object forward = true; object format = false; object matchKashida = false; object matchDiactitics = false; object matchAlefHamza = false; object matchControl = false; object read_only = false; object visible = true; object replace = -2; object wrap = 1; wordApp.Selection.Find.Execute(ref toFindText, ref matchCase, ref matchwholeWord, ref matchwildCards, ref matchSoundLike, ref nmatchAllforms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace, ref matchKashida, ref matchDiactitics, ref matchAlefHamza, ref matchControl); }
我注意到函数中有format参数设为false,但查阅文档后仍不清楚如何配置格式选项。
解决方案
要实现替换后文本带下划线,需要修改两个核心点:
- 先通过
Replacement对象配置替换内容的下划线格式 - 将
format参数改为true,让Word识别并应用格式规则
修改后的函数代码如下:
private void FindAndReplaceWithUnderline(Microsoft.Office.Interop.Word.Application wordApp, object toFindText, object replaceWithText) { object matchCase = true; object matchwholeWord = true; object matchwildCards = false; object matchSoundLike = false; object nmatchAllforms = false; object forward = true; // 启用格式应用开关 object format = true; object matchKashida = false; object matchDiactitics = false; object matchAlefHamza = false; object matchControl = false; object read_only = false; object visible = true; object replace = -2; object wrap = 1; // 设置替换文本的单下划线格式 wordApp.Selection.Find.Replacement.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle; // 清除查找对象的原有格式,避免干扰 wordApp.Selection.Find.ClearFormatting(); wordApp.Selection.Find.Execute(ref toFindText, ref matchCase, ref matchwholeWord, ref matchwildCards, ref matchSoundLike, ref nmatchAllforms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace, ref matchKashida, ref matchDiactitics, ref matchAlefHamza, ref matchControl); // 重置格式设置,防止影响后续操作 wordApp.Selection.Find.Replacement.ClearFormatting(); }
补充说明:
- 下划线样式可按需调整,比如
wdUnderlineDouble代表双下划线、wdUnderlineDotted代表点下划线 format = true是触发格式应用的关键,不开启的话Word会忽略你设置的格式规则- 执行完替换后调用
ClearFormatting(),避免残留格式影响后续的查找替换操作
内容的提问来源于stack exchange,提问作者Jesse Vega
相关产品推荐
相关产品推荐

