C# 插入、格式化、删除Word超链接

超链接简单来讲就是内容链接,通过设置超链接可以实现对象与网页、站点之间的连接。链接目标可以是网页、图片、邮件地址、文件夹或者是应用程序。设置链接的对象可以是文本或者图片。在下面的示例中,将讲述如何通过使用类库来添加Word超链接。同理,我们也可以格式化超链接,例如,设置超链接文本颜色,下划线,链接地址等,也可以删除文档中已经存在的一些超链接,例如:页眉处的链接、正文段落中的链接、表格中的链接、图片中的链接。以上操作我们都可以通过借助下面的类库来实现。
内容要点:

using System;
using Spire.Doc;
using System.Drawing;
using Spire.Doc.Documents;

步骤 2 :创建文档

//创建一个Document实例并添加section
Document doc = new Document();
Section section = doc.AddSection();

步骤 3:根据需要设置链接到不同对象的超链接

//添加指向网址的超链接
Paragraph para1 = section.AddParagraph();
para1.AppendHyperlink("www.google.com", "www.google.com", HyperlinkType.WebLink);

//添加指向邮件地址的超链接
Paragraph para2 = section.AddParagraph();
para2.AppendHyperlink("mailto:[email protected]", "[email protected]", HyperlinkType.EMailLink);

//添加指向外部文件的超链接
Paragraph para3 = section.AddParagraph();
string filePath = @"C:\Users\Administrator\Desktop\2017NobelPrize.docx";
para3.AppendHyperlink(filePath, "点击打开文档", HyperlinkType.FileLink);

步骤 4 :设置段间距

para1.Format.AfterSpacing = 15f;
para2.Format.AfterSpacing = 15f;

步骤 5 :保存文件

doc.SaveToFile("文本超链接.docx", FileFormat.Docx2013);

完成代码后,调试运行程序,生成稳定,如下所示:

全部代码如下:

using System;
using Spire.Doc;
using System.Drawing;
using Spire.Doc.Documents;

namespace Insert_Word
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个Document实例并添加section
            Document doc = new Document();
            Section section = doc.AddSection();

            //添加指向网址的超链接
            Paragraph para1 = section.AddParagraph();
            para1.AppendHyperlink("www.google.com", "www.google.com", HyperlinkType.WebLink);

            //添加指向邮件地址的超链接
            Paragraph para2 = section.AddParagraph();
            para2.AppendHyperlink("mailto:[email protected]", "[email protected]", HyperlinkType.EMailLink);

            //添加指向外部文件的超链接
            Paragraph para3 = section.AddParagraph();
            string filePath = @"C:\Users\Administrator\Desktop\2017NobelPrize.docx";
            para3.AppendHyperlink(filePath, "点击打开文档", HyperlinkType.FileLink);

            //设置段落之间的间距
            para1.Format.AfterSpacing = 15f;
            para2.Format.AfterSpacing = 15f;
            //保存文档
            doc.SaveToFile("文本超链接.docx", FileFormat.Docx2013);
        }
    }
}

1.2 添加图片链接
步骤 1 :添加using指令

using System;
using Spire.Doc;
using System.Drawing;
using Spire.Doc.Documents;

步骤 2 :创建文档

Document doc = new Document();
Section section = doc.AddSection();
Paragraph para = section.AddParagraph();

步骤 3 :添加链接到图片

//添加图片到段落并插入网站链接
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\images\Google.jpg");
Spire.Doc.Fields.DocPicture picture = para.AppendPicture(image);
para.AppendHyperlink("www.google.com", picture, HyperlinkType.WebLink);

步骤 4 :保存文档

doc.SaveToFile("图片超链接.docx", FileFormat.Docx2013);

测试效果:

2. 设置超链接格式

一般情况下,对文本设置超链接都是默认的蓝色字体,带有下划线,在下面的操作中,我们可以自行设置超链接的文本字体、字号、颜色、下划线等。
全部代码:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace FormatHyperlink
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一个Docuemtn类对象,并添加section
            Document document = new Document();
            Section section = document.AddSection();

            //添加段落,并设置超链接文本和链接网址。设置字体、字号、字体颜色、下划线等。
            Paragraph para = section.AddParagraph();
            para.AppendText("HyperLink: ");
            TextRange txtRange = para.AppendHyperlink("www.google.com", "www.google.com", HyperlinkType.WebLink);
            txtRange.CharacterFormat.FontName = "Times New Roman";
            txtRange.CharacterFormat.FontSize = 14;
            txtRange.CharacterFormat.TextColor = System.Drawing.Color.Green;
            txtRange.CharacterFormat.UnderlineStyle = UnderlineStyle.None;
            //保存并打开文档
            document.SaveToFile("result1.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("result1.docx");
        }
    }
}

测试效果:

3. 删除超链接

下面的测试文档中,多处文档内容包含超链接,包括页眉处的文字超链接、正文段落中的文字超链接、表格中的图片超链接等,可通过下面的代码将超链接删除。
测试文档:

全部代码步骤:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Formatting;
using System.Drawing;

namespace RemoveHyperlink_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Word对象并加载文档
            Document document = new Document();
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");
             //遍历文档中所有section
            foreach (Section section in document.Sections)
            {
                //删除正文里的超链接
                foreach (DocumentObject obj in section.Body.ChildObjects)
                {
                    RemoveLinks(obj, document);
                }

                //删除页眉页脚中的超链接
                foreach (HeaderFooter hf in section.HeadersFooters)
                {
                    foreach (DocumentObject hfobj in hf.ChildObjects)
                    {
                        RemoveLinks(hfobj, document);
                    }
                }
            }
            //保存文档
            document.SaveToFile("RemoveLinks.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("RemoveLinks.docx");
        }
//自定义方法RemoveLinks()删除段落、表格中的超链接
             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 in row.Cells)
                         {
                             foreach (DocumentObject cobj in cell.ChildObjects)
                            {
                                RemoveLinksInPara(cobj,document);
                            }
                        }
                    }
                }
             }
//自定义方法RemoveLinksInPara()删除文档段落中的所有超链接
        private static void RemoveLinksInPara(DocumentObject obj,Document document)
         {
            //遍历文档段落中所有子对象
             if (obj.DocumentObjectType == DocumentObjectType.Paragraph)
              {
                  var objs = (obj as Paragraph).ChildObjects;
                  for (int i = 0; i < objs.Count; i++)
                  {
                     if (objs[i].DocumentObjectType == DocumentObjectType.Field)
                     {
                      //获取超链接域
                       Field field = objs[i] as Field;
                       if (field.Type == FieldType.FieldHyperlink)
                       {
                           //获取超链接的文本或图片对象
                           DocumentObject dObj = field.NextSibling.NextSibling as DocumentObject;
                           //删除文本超链接,保留文本和样式
                           if (dObj is TextRange)
                           {
                               //获取超链接文本样式
                               CharacterFormat format = (dObj as TextRange).CharacterFormat;
                               format.UnderlineStyle = UnderlineStyle.None;
                               format.TextColor = Color.Black;
                               //创建TextRange并把超链接的文本赋予TextRange
                               TextRange tr = new TextRange(document);
                               tr.Text = field.FieldText;
                               //应用样式
                               tr.ApplyCharacterFormat(format);
                               //删除文本超链接域
                               objs.RemoveAt(i);
                               //重新插入文本
                               objs.Insert(i, tr);
                            }
                              //删除图片超链接,保留图片
                              if (dObj is DocPicture)
                              {
                                  //删除图片超链接域
                                  objs.RemoveAt(i);
                                  //重新插入图片
                                  objs.Insert(i, dObj);
                              }
                          }
                      }
                  }
              }
         }
    }
}

测试效果:

以上是本次关于“C#操作Word超链接的方法”的全部内容。

如需转载,请注明出处!!

原文地址:http://blog.51cto.com/eiceblue/2154006

时间: 2024-11-08 06:33:51

C# 插入、格式化、删除Word超链接的相关文章

C# 批量删除Word超链接

对于Word文档中包含较多的超链接,如果一个个来删除很花费时间和精力,本篇文章将提供一种可用于批量删除Word中的超链接的方法.这里的超链接可以是页眉页脚处的超链接.正文中的超链接.表格中的超链接.文字超链接.图片超链接等等.下面将具体演示如何来进行代码操作. 所需工具 Free Spire.Doc for .NET 6.3 (免费版) PS:下载安装后,注意在项目程序中添加引用Spire.Doc.dll,dll文件可在安装路径下的Bin文件夹中获取. 测试文档中的超链接情况,如下图: C# 代

C# /VB.NET 操作Word——插入、修改、删除Word批注

批注内容可以是对某段文字或内容的注释,也可以是对文段中心思想的概括提要,或者是对文章内容的评判.疑问,以及在阅读时给自己或他人起到提示作用.本篇文章中将介绍如何在C#/VB中操作Word批注,主要包含以下要点: 插入Word批注 修改Word批注 删除Word批注使用工具:Free Spire.Doc for .NET 6.3(最新社区版)注:编辑代码前注意添加引用Sprie.Doc.dll(dll文件可在安装路径下的Bin文件夹中获取) 1.插入Word批注 C# using Spire.Do

C# 如何处理Word文档分页——插入、删除、阻止分页

本篇文章将介绍C#编程如何来处理Word分页的方法.操作Word中的分页这里分为几种情况的来介绍: 插入分页1.1在指定段落末尾插入分页1.2 在指定字符后插入分页 删除分页3.阻止表格分页 处理工具:Spire.Doc for .NET 6.1安装该类库后,在程序中引用Spire.Doc.dll文件即可(如下图),dll文件在安装路径下Bin文件夹中获取. [示例1]插入分页(在指定段落末尾插入分页) [C#] using Spire.Doc; using Spire.Doc.Document

闭散列表的查找、插入和删除操作的完整C代码

/*闭散列表的建立.查找.插入.删除*/ #include <stdio.h> #define NIL -1 //假设关键字为非负整数 #define DEL -2 typedef int KeyType; KeyType HashTable[13]; //便于验证算法,关键字个数假定为不超过13,哈希表长定为13 //关键字插入函数 void InsertHashTable(KeyType k) { for(int i=0; i<13; i++) if( NIL == HashTabl

最小堆的建立 插入 与删除

堆是完全二叉树,完全二叉树最大的特点就是 把数据储存在数组里 通过父子结点的关系来做  不用实际建树  parent=leftchild/2: leftchild=2*parent  右就加1这儿指的是序号关系,储存的时候注意是利用树的逻辑图 从上到下 从左到右编号12345..... 建堆:实际是把数据先放入数组(注意下标从1开始),对应逻辑图,写调整代码,我的基本思路是从数组末尾开始,对应元素与其父节点比较,满足条件就换值,并且对被换的调用调整函数(要单独写个调整函数)因为被换的一个是可能不

【JS学习笔记】DOM操作应用-创建、插入和删除元素;文档碎片

一.创建.插入和删除元素 (1)创建DOM元素 createElement(标签名) 创建一个节点 appendChild(节点) 追加一个节点 例子:为ul插入li <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="htt

重温数据结构:二叉排序树的查找、插入、删除

读完本文你将了解到: 什么是二叉排序树 Binary Sort Tree BST 二叉排序树的关键操作 查找 插入 删除 运行代码测试 一道面试题 总结 Thanks 我们知道,二分查找可以缩短查找的时间,但是有个要求就是 查找的数据必须是有序的.每次查找.操作时都要维护一个有序的数据集,于是有了二叉排序树这个概念. 上篇文章 我们介绍了 二叉树 的概念,二叉树有左右子树之分,想必在区分左右子树时有一定的规则. 现在我们来介绍二叉树的一种特殊形式 - 二叉排序树,了解它的区分策略及常用操作. 什

数据结构Java实现03----单向链表的插入和删除

数据结构Java实现03----单向链表的插入和删除 文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构:            概念: 链式存储结构是基于指针实现的.我们把一个数据元素和一个指针称为结点.   数据域:存数数据元素信息的域. 指针域:存储直接后继位置的域. 链式存储结构是用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)链接起来.链式存储结构的线性表称为链表. 链表类型: 根据链表的构造方式的不同可以分为: 单向链表 单向循环链表 双向循环链表 二

MongoDB之DBref(关联插入,查询,删除) 实例深入

MongoDB之DBref(关联插入,查询,删除) 实例深入 如图所示,A,B,C三个Collection互相关联. 其中的数字为document的value值. 关于DBref的入门可以看http://blog.csdn.net/crazyjixiang/article/details/6616678这篇文章. 我们先建立A collection. Cpp代码 > var a={value:"1"} > var b={value:"2"} > v