对于Word文档中包含较多的超链接,如果一个个来删除很花费时间和精力,本篇文章将提供一种可用于批量删除Word中的超链接的方法。这里的超链接可以是页眉页脚处的超链接、正文中的超链接、表格中的超链接、文字超链接、图片超链接等等。下面将具体演示如何来进行代码 *** 作。
所需工具
Free Spire.Doc for .NET 6.3 (免费版)PS:下载安装后,注意在项目程序中添加引用Spire.Doc.dll,dll文件可在安装路径下的Bin文件夹中获取。
@H_502_13@
测试文档中的超链接情况,如下图:
@H_502_13@
C# 代码示例(供参考)
步骤 1 :添加using指令
using Spire.Doc; Spire.Doc.documents; Spire.Doc.FIElds; Spire.Doc.Formatting;using System.Drawing;
步骤 2 :加载文件
document document = new document();document.LoadFromfile("sample.docx");
步骤 3 :遍历文档,删除超链接
foreach (Section section in document.Sections){ //删除正文里的超链接 foreach (documentObject obj section.Body.Childobjects) { Removelinks(obj,document); } 删除页眉页脚中的超链接 foreach (headerfooter hf section.headersFooters) { foreach (documentObject hfobj hf.Childobjects) { Removelinks(hfobj,document); } }}
ps: 这里需要自定义两个方法来分别删除段落中的文字超链接和删除段落中的图片超链接
自定义方法1:
private static voID Removelinks(documentObject obj,document document){ 删除段落中的超链接 RemovelinksInPara(obj,document); 删除表格中的超链接 if (obj.documentObjectType == documentObjectType.table) { foreach (tableRow row in (obj as table).Rows) { foreach (tableCell cell row.Cells) { foreach (documentObject cobj cell.Childobjects) { RemovelinksInPara(cobj,document); } } } } }
自定义方法2:
RemovelinksInPara(documentObject obj,document document) { 遍历文档段落中所有子对象 documentObjectType.Paragraph) { var obJs = (obj Paragraph).Childobjects; for (int i = 0; i < obJs.Count; i++) { if (obJs[i].documentObjectType == documentObjectType.FIEld) { 获取超链接域 FIEld fIEld = obJs[i] FIEld; if (fIEld.Type == FIEldType.FIEldHyperlink) { 获取超链的文本或图片对象 documentObject dobj = fIEld.NextSibling.NextSibling documentObject; 删除文本超链接,保留文本和样式 if (dobj is TextRange) { 获取超链接文本样式 CharacterFormat format = (dobj TextRange).CharacterFormat; format.Underlinestyle = Underlinestyle.None; format.Textcolor = color.Black; 创建TextRange并把超链接的文本赋给它 TextRange tr = TextRange(document); tr.Text = fIEld.FIEldText; 应用样式 tr.ApplyCharacterFormat(format); 删除文本超链接域 obJs.RemoveAt(i); 重新插入文本 obJs.Insert(i,tr); } 删除图片超链接,保留图片 DocPicture) { 删除图片超链接域 obJs.RemoveAt(i); 重新插入图片 obJs.Insert(i,dobj); } } } } } }
步骤 4 :保存文档
document.Savetofile(Removelinks.docx",fileFormat.Docx);System.Diagnostics.Process.Start(");
调试运行程序,生成文档(如下图)。生成的文档中,原有的超链接将全部被删除。
@H_502_13@
全部代码:
@H_502_13@@H_502_13@System.Drawing;namespace RemoveHyperlink_Doc{ class Program { voID Main(string[] args) { 创建Word对象并加载文档 document document = document(); document.LoadFromfile(); document.Sections) { 删除正文里的超链接 section.Body.Childobjects) { Removelinks(obj,document); } 删除页眉页脚中的超链接 section.headersFooters) { hf.Childobjects) { Removelinks(hfobj,document); } } } 保存文档 document.Savetofile(); } RemovelinksInPara(obj,document); 删除表格中的超链接 documentObjectType.table) { table).Rows) { row.Cells) { cell.Childobjects) { RemovelinksInPara(cobj,document); } } } } } 遍历文档段落中所有子对象 documentObjectType.Paragraph) { Paragraph).Childobjects; ) { documentObjectType.FIEld) { 获取超链接域 FIEld fIEld = obJs[i] FIEld; FIEldType.FIEldHyperlink) { 获取超链的文本或图片对象 documentObject dobj = fIEld.NextSibling.NextSibling documentObject; 删除文本超链接,保留文本和样式 TextRange) { 获取超链接文本样式 CharacterFormat format = (dobj TextRange).CharacterFormat; format.Underlinestyle = Underlinestyle.None; format.Textcolor = color.Black; 创建TextRange并把超链接的文本赋给它 TextRange tr = TextRange(document); tr.Text = fIEld.FIEldText; tr.ApplyCharacterFormat(format); obJs.RemoveAt(i); obJs.Insert(i,tr); } 删除图片超链接,保留图片 DocPicture) { obJs.RemoveAt(i); obJs.Insert(i,dobj); } } } } } } }}VIEw Code
(本文完)
如需转载,请注明出处。
总结以上是内存溢出为你收集整理的C# 批量删除Word超链接全部内容,希望文章能够帮你解决C# 批量删除Word超链接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)