Word控件Spire.Doc 【超链接】教程(1):如何在C#/VB.NET中给Word 文档插入超链接

news2024/11/18 15:44:58

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。

Spire.Doc for.NET 最新下载(qun:767755948)icon-default.png?t=M85Bhttps://www.evget.com/product/3368/download

Word 文档中的超链接使读者能够从其位置跳转到文档中的不同位置,或者跳转到不同的文件或网站,或者跳转到新的电子邮件消息。超链接使读者可以快速轻松地导航到相关信息。本文演示了如何使用Spire.Doc for .NET在 C# 和 VB.NET 中向文本或图像添加超链接。

步骤一:为 .NET 安装 Spire.Doc

首先,您需要将 Spire.Doc for.NET 包中包含的 DLL 文件添加为 .NET 项目中的引用。

PM> Install-Package Spire.Doc

步骤二:向 Word 添加段落时插入超链接

Spire.Doc 提供了Paragraph.AppendHyperlink()方法,用于将 Web 链接、电子邮件链接、文件链接或书签链接添加到段落中的一段文本或图像。以下是详细步骤。

  • 创建一个文档对象。
  • 向其中添加一个部分和一个段落。
  • 使用Paragraph.AppendHyerplink(string link, string text, HyperlinkType type)方法插入基于文本的超链接。
  • 使用Paragraph.AppendPicture()方法将图像添加到段落。
  • 使用Paragraph.AppendHyerplink(string link, Spire.Doc.Fields.DocPicture picture, HyperlinkType type)方法插入基于图像的超链接。
  • 使用Document.SaveToFile()方法保存文档。

【C#】

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

namespace InsertHyperlinks
{
class Program
{
static void Main(string[] args)
{
//Create a Word document
Document doc = new Document();

//Add a section
Section section = doc.AddSection();

//Add a paragraph
Paragraph paragraph = section.AddParagraph();
paragraph.AppendHyperlink("https://www-iceblue.com/", "Home Page", HyperlinkType.WebLink);

//Append line breaks
paragraph.AppendBreak(BreakType.LineBreak);
paragraph.AppendBreak(BreakType.LineBreak);

//Add an email link
paragraph.AppendHyperlink("mailto:support@e-iceblue.com", "Mail Us", HyperlinkType.EMailLink);

//Append line breaks
paragraph.AppendBreak(BreakType.LineBreak);
paragraph.AppendBreak(BreakType.LineBreak);

//Add a file link
string filePath = @"C:\Users\Administrator\Desktop\report.xlsx";
paragraph.AppendHyperlink(filePath, "Click to open the report", HyperlinkType.FileLink);

//Append line breaks
paragraph.AppendBreak(BreakType.LineBreak);
paragraph.AppendBreak(BreakType.LineBreak);

//Add another section and create a bookmark
Section section2 = doc.AddSection();
Paragraph bookmarkParagrapg = section2.AddParagraph();
bookmarkParagrapg.AppendText("Here is a bookmark");
BookmarkStart start = bookmarkParagrapg.AppendBookmarkStart("myBookmark");
bookmarkParagrapg.Items.Insert(0, start);
bookmarkParagrapg.AppendBookmarkEnd("myBookmark");

//Link to the bookmark
paragraph.AppendHyperlink("myBookmark", "Jump to a location inside this document", HyperlinkType.Bookmark);

//Append line breaks
paragraph.AppendBreak(BreakType.LineBreak);
paragraph.AppendBreak(BreakType.LineBreak);

//Add an image link
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.png");
Spire.Doc.Fields.DocPicture picture = paragraph.AppendPicture(image);
paragraph.AppendHyperlink("https://docs.microsoft.com/en-us/dotnet/", picture, HyperlinkType.WebLink);

//Save to file
doc.SaveToFile("InsertHyperlinks.docx", FileFormat.Docx2013);
}
}
}

【VB.NET】

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports System.Drawing

Namespace InsertHyperlinks
Class Program
Shared Sub Main(ByVal args() As String)
'Create a Word document
Document doc = New Document()

'Add a section
Dim section As Section = doc.AddSection()

'Add a paragraph
Dim paragraph As Paragraph = section.AddParagraph()
paragraph.AppendHyperlink("https://www.e-iceblue.com/", "Home Page", HyperlinkType.WebLink)

'Append line breaks
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

'Add an email link
paragraph.AppendHyperlink("mailto:support@e-iceblue.com", "Mail Us", HyperlinkType.EMailLink)

'Append line breaks
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

'Add a file link
Dim filePath As String = "C:\Users\Administrator\Desktop\report.xlsx"
paragraph.AppendHyperlink(filePath, "Click to open the report", HyperlinkType.FileLink)

'Append line breaks
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

'Add another section and create a bookmark
Dim section2 As Section = doc.AddSection()
Dim bookmarkParagrapg As Paragraph = section2.AddParagraph()
bookmarkParagrapg.AppendText("Here is a bookmark")
Dim start As BookmarkStart = bookmarkParagrapg.AppendBookmarkStart("myBookmark")
bookmarkParagrapg.Items.Insert(0, start)
bookmarkParagrapg.AppendBookmarkEnd("myBookmark")

'Link to the bookmark
paragraph.AppendHyperlink("myBookmark", "Jump to a location inside this document", HyperlinkType.Bookmark)

'Append line breaks
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

'Add an image link
Dim image As Image = Image.FromFile("C:\Users\Administrator\Desktop\logo.png")
Dim picture As Spire.Doc.Fields.DocPicture = paragraph.AppendPicture(image)
paragraph.AppendHyperlink("https://docs.microsoft.com/en-us/dotnet/", picture, HyperlinkType.WebLink)

'Save to file
doc.SaveToFile("InsertHyperlinks.docx", FileFormat.Docx2013)
System.Diagnostics.Process.Start("InsertHyperlinks.docx")
End Sub
End Class
End Namespace

步骤三:将超链接添加到 Word 中的现有文本

将超链接添加到文档中的现有文本有点复杂。您需要先找到目标字符串,然后在段落中将其替换为超链接字段。以下是步骤。

  • 创建一个文档对象。
  • 使用Document.LoadFromFile()方法加载 Word 文件。
  • 使用Document.FindAllString()方法查找文档中所有出现的目标字符串,并从集合中通过其索引获取特定字符串。
  • 获取字符串自己的段落及其在其中的位置。
  • 从段落中删除字符串。
  • 创建一个超链接字段并将其插入到字符串所在的位置。
  • 使用Document.SaveToFle()方法将文档保存到另一个文件。

【C#】

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

namespace AddHyperlinksToExistingText
{
class Program
{
static void Main(string[] args)
{
//Create a Document object
Document document = new Document();

//Load a Word file
document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");

//Find all the occurrences of the string ".NET Framework" in the document
TextSelection[] selections = document.FindAllString(".NET Framework", true, true);

//Get the second occurrence
TextRange range = selections[1].GetAsOneRange();

//Get its owner paragraph
Paragraph parapgraph = range.OwnerParagraph;

//Get its position in the paragraph
int index = parapgraph.Items.IndexOf(range);

//Remove it from the paragraph
parapgraph.Items.Remove(range);

//Create a hyperlink field
Spire.Doc.Fields.Field field = new Spire.Doc.Fields.Field(document);
field.Type = Spire.Doc.FieldType.FieldHyperlink;
Hyperlink hyperlink = new Hyperlink(field);
hyperlink.Type = HyperlinkType.WebLink;
hyperlink.Uri = "https://en.wikipedia.org/wiki/.NET_Framework";
parapgraph.Items.Insert(index, field);

//Insert a field mark "start" to the paragraph
IParagraphBase start = document.CreateParagraphItem(ParagraphItemType.FieldMark);
(start as FieldMark).Type = FieldMarkType.FieldSeparator;
parapgraph.Items.Insert(index + 1, start);

//Insert a text range between two field marks
ITextRange textRange = new Spire.Doc.Fields.TextRange(document);
textRange.Text = ".NET Framework";
textRange.CharacterFormat.Font = range.CharacterFormat.Font;
textRange.CharacterFormat.TextColor = System.Drawing.Color.Blue;
textRange.CharacterFormat.UnderlineStyle = UnderlineStyle.Single;
parapgraph.Items.Insert(index + 2, textRange);

//Insert a field mark "end" to the paragraph
IParagraphBase end = document.CreateParagraphItem(ParagraphItemType.FieldMark);
(end as FieldMark).Type = FieldMarkType.FieldEnd;
parapgraph.Items.Insert(index + 3, end);

//Save to file
document.SaveToFile("AddHyperlink.docx", Spire.Doc.FileFormat.Docx);
}
}
}

【VB.NET】

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports Spire.Doc.Interface

Namespace AddHyperlinksToExistingText
Class Program
Shared Sub Main(ByVal args() As String)
'Create a Document object
Dim document As Document = New Document()

'Load a Word file
document.LoadFromFile("C:\Users\Administrator\Desktop\sample.docx")

'Find all the occurrences of the string ".NET Framework" in the document
Dim selections() As TextSelection = document.FindAllString(".NET Framework",True,True)

'Get the second occurrence
Dim range As TextRange = selections(1).GetAsOneRange()

'Get its owner paragraph
Dim parapgraph As Paragraph = range.OwnerParagraph

'Get its position in the paragraph
Dim index As Integer = parapgraph.Items.IndexOf(range)

'Remove it from the paragraph
parapgraph.Items.Remove(range)

'Create a hyperlink field
Dim field As Spire.Doc.Fields.Field = New Spire.Doc.Fields.Field(document)
field.Type = Spire.Doc.FieldType.FieldHyperlink
Dim hyperlink As Hyperlink = New Hyperlink(field)
hyperlink.Type = HyperlinkType.WebLink
hyperlink.Uri = "https://en.wikipedia.org/wiki/.NET_Framework"
parapgraph.Items.Insert(index, field)

'Insert a field mark "start" to the paragraph
Dim start As IParagraphBase = document.CreateParagraphItem(ParagraphItemType.FieldMark)
(start as FieldMark).Type = FieldMarkType.FieldSeparator
parapgraph.Items.Insert(index + 1, start)

'Insert a text range between two field marks
Dim textRange As ITextRange = New Spire.Doc.Fields.TextRange(document)
textRange.Text = ".NET Framework"
textRange.CharacterFormat.Font = range.CharacterFormat.Font
textRange.CharacterFormat.TextColor = System.Drawing.Color.Blue
textRange.CharacterFormat.UnderlineStyle = UnderlineStyle.Single
parapgraph.Items.Insert(index + 2, textRange)

'Insert a field mark "end" to the paragraph
Dim end As IParagraphBase = document.CreateParagraphItem(ParagraphItemType.FieldMark)
(end as FieldMark).Type = FieldMarkType.FieldEnd
parapgraph.Items.Insert(index + 3, end)

'Save to file
document.SaveToFile("AddHyperlink.docx", Spire.Doc.FileFormat.Docx)
End Sub
End Class
End Namespace

以上便是如何在C#/VB.NET中给Word 文档插入超链接,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统移植 uboot 2

一、uboot源码获取 1.1 uboot官网获取 ftp://ftp.denx.de/pub/u-boot/ 前提是是芯片厂家将uboot源码开源到uboot官网上 1.2 ST开发社区获取 https://wiki.stmicroelectronics.cn/stm32mpu/wiki/STM32MP1_Developer_Package 1.3 ST官网 https://www.st.com/en/embedded-sof…

opcj3—人人开源三大套件的简单用法

renren开源是一个很不错的开源开发组件,人人开源 其中目前对我们最有用的有三个:renren-fast、renren-fast-vue和renren-generator。 renren-generator是核心服务,可以根据数据库自动生成从controller层到service层,再到持久层的…

.net开发安卓入门 - 环境安装

文章目录工具VS2022Android SDK Manager如下图,安装一个镜像和工具模拟器设备管理器如下图启动模拟器,看一下效果常见问题工具 VS2022 下载地址:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCom…

Linux邮件服务Postfix部署

我们看下邮件协议: 简单邮件传输协议(SMTP):用于发送和中转出的电子邮件。使用TCP/25端口。 邮局协议版本(POP3):用于将邮件存储到本地,占用服务器的TCP/110端口。 Internet 消息访问…

【Python游戏】一个csdn小编用Python语言写了一个足球游戏,成功模拟世界杯决赛现场

前言 halo,包子们下午好 最近世界杯不是很火呀 很多小伙伴应该都知道球赛反正买,别墅靠大海! 今天就给大家实现一个类似世界杯的足球小游戏,咱就说真的堪比国足了! 哈哈哈~ 好啦 直接开整!!&am…

「以代码作画」从数据角度剖析Art Blocks生成艺术

作者:Mia Bao, co-founder of thepass.to, chief partner of WHALE members 数据:Jin, data analyst of thepass.to 出品:ThePASS & BeepCrypto 文章数据:https://docs.google.com/spreadsheets/d/1zDun4eUTwA-BMU5Hl2c5EC…

基于SSM网上商城购物系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

目标检测算法——人体姿态估计数据集汇总 2(附下载链接)

🎄🎄近期,小海带在空闲之余收集整理了一批人体姿态估计数据集供大家参考。 整理不易,小伙伴们记得一键三连喔!!!🎈🎈 目录 一、V-COCO数据集 二、宜家 ASM 数据集 三、…

如何解决在加载、保存或覆盖项目文件时 Lumion 可能无法打开或显示错误的问题?

为什么在加载、保存或覆盖项目文件时 Lumion 可能无法打开或显示错误?那么这个问题大家跟着赞奇云工作站一起来解答吧。 1. 这就是为什么 如果Lumion在加载 .LS Project文件时崩溃或显示错误 ,通常意味着 .LS Project 文件因保存错误而损坏。遗憾的是&…

电脑技巧:分享6个实用的资源网站

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

一框式检索和高级检索

0. 学习内容 2022年12月8日15:38:07CNKI学习 学会多种检索方式检索基础文献 1. 一框式检索 1.1 简单使用 左侧选择检索字段 根据需求选择 输入想要的检索词输入想要的检索范围 顾名思义:在检索的时候只有一个搜索框,从而实现对文献进行检索 2. 高级检索…

「MacOS」在MacOS中添加环境变量

背景 最近在学习cmake使用,官网有dmg的安装教程,直接下载dmg文件然后拖拽到Application文件里就好。但在终端中执行cmake命令却显示没有cmake命令。下面内容以cmake为例,介绍如何在环境变量中添加命令行命令,其他命令也是如此。 …

m分别使用Dijkstra算法和Astar算法进行刚体机器人最短路径搜索和避障算法的matlab仿真,带GUI界面

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展…

图片加贴纸怎么添加?快来使用这些实用的添加方法

有时候我们需要发送一些图片给对方,可是图片上有自己的隐私,而且这些信息都显示在图片中间,那我们应该怎么处理这部分信息呢?可能有些小伙伴会使用马赛克来模糊这部分信息,但是马赛克不但影响图片美观,处理…

乐园管理系统| 乐园小程序 | 数字化门店会员管理

商场乐园总是不缺小孩子们的嬉闹,旁边也不缺拥挤的家长,不同于以前,现在的年轻家长,由于市场服务/产品多样化及思想进步,对自己孩子的衣食住行玩等方面非常上心,小孩子的天性使然,乐园行业在近些…

pca降维

两个矩阵相乘的意义是将右边矩阵中的每一列向量 ai 变换到左边矩阵中以每一行行向量为基所表示的空间中去 选择不同的基可以对同样一组数据给出不同的表示,如果基的数量少于向量本身的维数,则可以达到降维的效果。 将一组 N 维向量降为 K 维&#xff0…

SpringCloud-Ribbon负载均衡

关于Ribbon负载均衡 1.什么是Ribbon Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。 简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix的中间层服务连接在一起。…

智慧工地管理系统解决方案厂商-喜讯科技

智慧工地是建筑行业管理结合互联网的一种新的管理系统,应用最新的大数据、云计算和物联网的技术,对施工现场的人、机、料、法、环等资源进行集中管理,以可控化、数据化以及可视化的智能系统对项目管理进行全方位立体化的实时监管。 喜讯科技智…

elasticsearch8.5体验(docker部署)

服务部署 拉取elasticsearch镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.5.0拉取kibana镜像 docker pull docker.elastic.co/kibana/kibana:8.5.0创建docker网络 docker network create elastic启动elasticsearch docker run --name es01 --net el…

使用固定的公网TCP端口地址远程桌面【内网穿透】

文章目录1. 为远程桌面保留一个TCP地址2. 配置远程桌面隧道2.1 登录cpolar web ui2.2 修改远程桌面隧道信息2.3 查看公网地址3. 使用固定TCP地址远程桌面总结在上一篇文章中,我们通过cpolar映射远程桌面3389端口,成功实现了在外远程桌面控制家里/公司的W…