超链接可以指向文件、电子邮件、网站、图像或视频,当读者点击时。超链接在 Word 文档中被广泛使用,因为它非常方便地将读者引导到相关有用的内容。通过使用 Spire.Doc for .NET,开发人员可以添加超链接、查找超链接和修改超链接。在本文中,我们将演示如何使用 Spire. Doc for .NET 在 C# 中找到 Word 文档中的所有现有超链接以及修改特定的超链接。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc
查找 Word 文档中所有超链接
超链接由两个基本部分组成:超链接地址(URL)和其显示文本。使用 Spire.Doc for .NET,您可以先遍历文档对象,找到所有超链接对象,再使用 Field.FieldText 和 Field.Code 属性来获取超链接的显示文本地址和地址(URL),详细步骤如下。
- 创建 Document 对象。
- 使用 Document.LoadFromFile() 方法来加载源文档。
- 创建一个 List 对象 List<Field> 用于存放找到的超链接对象。
- 遍历示例 Word 文档每个节中的每个段落,找到段落中的超链接对象,并将其添加到 List 对象中。
- 遍历 List 对象,通过 Field.FieldText、Field.Code 获取每个超链接的显示文本以及地址 URL。
- 通过 StringBuilder 对象和 File 类将获取到的所有的超链接信息保存到本地 TXT 文档中。
- C#
using Spire.Doc;
using System.IO;
using System.Text;
namespace FindHyperlink
{
internal class Program
{
static void Main(string[] args)
{
// 创建一个Document对象
Document doc = new Document();
// 从指定路径加载一个Word文档
doc.LoadFromFile(@"hyperlink.docx");
// 创建一个Field类型的列表,用于存储超链接
List hyperlinks = new List();
// 遍历文档的所有节
foreach (Section section in doc.Sections)
{
// 遍历每个节的子对象
foreach (DocumentObject sec in section.Body.ChildObjects)
{
// 判断子对象是否为段落类型
if (sec.DocumentObjectType == DocumentObjectType.Paragraph)
{
// 遍历段落的子对象
foreach (DocumentObject para in (sec as Paragraph).ChildObjects)
{
// 判断子对象是否为Field类型
if (para.DocumentObjectType == DocumentObjectType.Field)
{
// 将子对象转换为Field类型
Field field = para as Field;
// 判断字段是否为超链接类型
if (field.Type == FieldType.FieldHyperlink)
{
// 将超链接对象添加到列表中
hyperlinks.Add(field);
}
}
}
}
}
}
// 创建一个StringBuilder对象,用于拼接超链接信息
StringBuilder sb = new StringBuilder();
// 遍历超链接列表
foreach (Field hyperlink in hyperlinks)
{
// 添加超链接显示文本到StringBuilder中
sb.AppendLine("超链接的文本:" + hyperlink.FieldText);
// 添加超链接地址URL到StringBuilder中
sb.AppendLine("超链接的链接:" + hyperlink.Code);
// 添加空行分隔不同的超链接信息
sb.AppendLine();
}
// 将StringBuilder中的内容写入到指定的文件中
File.WriteAllText(@"Hyper_Result.txt", sb.ToString());
// 关闭文档对象
doc.Close();
}
}
}
修改 Word 文档中特定超链接
使用 Spire.Doc for .NET,您可以使用 Field.Code 和 Field.FieldText 属性修改现有超链接的地址和显示文本,通过 Field.CharacterFormat 下的相关属性来设置超链接显示文本的字体大小、字体颜色、字体斜体效果、字体加粗效果等,具体步骤如下:
- 创建一个 Document 对象。
- 使用 Document.LoadFromFile() 方法来加载源文档。
- 遍历源文档的每个节中的每个段落,找到段落中的超链接对象。
- 判断当前超链接的显示文本是不是指定文本内容,如果是,就通过 Field.Code 来修改链接地址(URL),通过 Field.CharacterFormat.FontSize、Field.CharacterFormat.TextColor、Field.CharacterFormat.Italic、Field.CharacterFormat.Bold 来修改超链接显示文本的字体大小、字体颜色、字体斜体效果、字体加粗效果。
- 通过 Document.SaveToFile 保存结果文档。
- C#
using Spire.Doc.Documents;
using Spire.Doc;
using System.Text;
using System.IO;
namespace CountWordsAndCharactersForParagraph
{
internal class Program
{
static void Main(string[] args)
{
// 创建一个Document对象
Document doc = new Document();
// 从指定路径加载一个Word文档
doc.LoadFromFile(@"../../data/hyperlink.docx");
// 遍历文档的所有节
foreach (Section section in doc.Sections)
{
// 遍历每个节的子对象
foreach (DocumentObject sec in section.Body.ChildObjects)
{
// 判断子对象是否为段落类型
if (sec.DocumentObjectType == DocumentObjectType.Paragraph)
{
// 遍历段落的子对象
foreach (DocumentObject para in (sec as Paragraph).ChildObjects)
{
// 判断子对象是否为Field类型
if (para.DocumentObjectType == DocumentObjectType.Field)
{
// 将子对象转换为Field类型
Field field = para as Field;
// 判断字段是否为超链接类型
if (field.Type == FieldType.FieldHyperlink)
{
// 判断超链接文本是否为"Spire.Doc for .NET"
if (field.FieldText.Equals("Spire.Doc for .NET"))
{
// 修改超链接的目标地址
field.Code = "HYPERLINK \"" + "https://www.e-iceblue.com/Introduce/word-for-net-introduce.html" + "\"";
// 设置超链接字体大小为15
field.CharacterFormat.FontSize = 15;
// 设置超链接字体颜色为红色
field.CharacterFormat.TextColor = Color.Red;
// 设置超链接字体为斜体
field.CharacterFormat.Italic = true;
// 设置超链接字体为粗体
field.CharacterFormat.Bold = true;
}
}
}
}
}
}
}
// 将修改后的文档保存到指定路径,格式为Docx
doc.SaveToFile(@"EditHyperlinks.docx", FileFormat.Docx);
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。