如何删除 Word 中的超链接:桌面、在线和 C#

快速概览(TL;DR):

  • 删除一个或少量超链接: 右键点击带有链接的文本,然后选择 取消超链接

  • 一次删除文档中的所有超链接:

    • Windows:Ctrl + A,然后按 Ctrl + Shift + F9

    • Mac:Cmd + A,然后按 Cmd + Shift + F9。如果 F9 被 macOS 分配给系统功能,可以使用 Cmd + Fn + Shift + F9,或者按 Cmd + 6 执行 Word 的 UnlinkFields 命令。

  • 电脑上没有安装 Word: 使用 Word 网页版在浏览器中删除超链接。

  • 需要处理多个 Word 文件: 使用 C# 批量删除超链接。

超链接常用于在 Word 文档中添加网站、参考资料和其他资源。不过,在准备打印、发布或重复使用文档时,这些链接有时并不需要,或者会留下你不想保留的链接样式。

本文将介绍如何删除 Word 中的超链接,包括在 Microsoft Word 中删除单个或全部链接、使用 Word 网页版处理超链接,以及通过 C# 自动批量清理多个 DOCX 文件。

在 Microsoft Word 中删除超链接

适用场景: 只需要删除一个或少量超链接,并且不希望影响文档中的其他内容。

如果只需要处理少量链接,Word 内置的 取消超链接 命令是最直接也最稳妥的方法。它会移除链接目标,同时保留原来的显示文本。

如果文档中包含目录、交叉引用或其他动态域,这种方法尤其合适,因为它只会影响当前选中的超链接。

操作步骤

  1. 在 Microsoft Word 中打开文档。

  2. 找到需要删除的超链接。

  3. 右键点击带有链接的文本。

  4. 选择 取消超链接

    Word 右键菜单中的取消超链接命令

结果: 选中的文本仍然保留在文档中,但不再包含可以跳转的链接。

Word 中删除超链接后保留的文本

⚡ 提示: 如果你想同时删除超链接及其显示文本,直接选中文本并按 DeleteBackspace 即可。

一次性删除 Word 文档中的所有超链接

适用场景: 快速删除结构相对简单的 Word 文档中的大量超链接。

如果文档中有几十上百个链接,逐个右键删除会比较耗时。Word 提供了快捷键,可以一次性删除当前选中内容中的超链接。

在 Windows 上删除所有超链接

  1. Ctrl + A 选中文档中的全部内容。你也可以手动选择仅需要处理的部分。

  2. Ctrl + Shift + F9

在 Mac 上删除所有超链接

  1. Cmd + A 选中文档内容。

  2. Cmd + Shift + F9
    ⚡ 提示: 如果 Mac 将 F9 用作系统或媒体功能键,可以改用 Cmd + Fn + Shift + F9,或者按 Cmd + 6 执行 Word 的 UnlinkFields 命令。

结果: 所有选中的超链接都会转换为普通文本,同时保留原来的文字内容。

Word 文档中的超链接转换为普通文本后的效果

⚠️ 重要提示:使用该快捷键前请检查动态域

Ctrl + Shift + F9 并不是专门用于删除超链接的快捷键,而是 Word 通用的 Unlink Field(取消域链接) 命令。这意味着,选中范围内的其他域也可能被转换成静态文本,例如:

  • 自动生成的目录
  • 交叉引用
  • 其他动态 Word 域

对于报告、论文、手册或其他依赖动态域的文档,建议先保存一份备份,再使用这个快捷键。另外需要注意,Ctrl + A 通常选中的是文档正文。页眉和页脚中的超链接可能需要单独处理。

在线删除 Word 超链接

适用场景: 没有安装桌面版 Microsoft Word,只需要偶尔删除少量超链接。

如果电脑上没有安装 Word,可以打开 Word 网页版,直接在浏览器中编辑超链接。对于少量链接来说,这种方式比较方便,也无需另外安装软件。

方法 A:使用弹出工具栏

  1. 点击带有超链接的文本。

  2. 点击弹出工具栏右侧的 取消链接 图标(带有小“X”的链条图标)。

    Word 网页版弹出工具栏中的取消链接图标

方法 B:使用右键菜单

  1. 右键点击带有超链接的文本。

  2. 在右键菜单中选择 删除链接

无法在 Word 网页版中删除超链接怎么办?

Word 网页版中的部分链接可能会显示为灰色,或者无法编辑。常见原因包括:

  • 修订: 该链接是在“修订”模式下创建或编辑的。
  • 跨多个段落的链接: 链接跨越多个段落,并且是在桌面版 Word 中创建的。

解决方法: 点击顶部功能区 编辑 下拉菜单中的 在桌面版中打开,然后在桌面版 Word 中删除这些链接。

使用 Csharp 批量删除 Word 文档中的超链接

适用场景: 需要自动处理后台文档、清理导入文件,或者一次处理大量 Word 文档的开发人员。

如果需要对多个 Word 文件执行相同的取消超链接操作,手动逐个处理效率会很低。例如,批量处理导入的文档、发布或归档前清理报告,或者整理其他系统生成的文件时,都可能遇到这种情况。

这时,可以使用 C# 自动化该流程。下面的示例使用 Spire.Doc for .NET,它无需安装 Microsoft Word,即可批量删除多个 DOCX 文件中的超链接。

步骤 1:安装 .NET Word 库

可以通过 NuGet 的 Package Manager Console 或 .NET CLI 安装 Spire.Doc for .NET。

NuGet Package Manager Console:

1
Install-Package Spire.Doc

.NET CLI:

1
dotnet add package Spire.Doc

安装完成后,就可以在 C# 项目中直接引用所需的命名空间。

步骤 2:编写 C# 代码批量删除 DOCX 文件中的超链接

下面的示例会扫描输入文件夹中的所有 .docx 文件,查找文档中的超链接字段,移除超链接字段并保留显示文本,最后将处理后的文件保存到单独的输出文件夹中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;

namespace Remove_Hyperlinks
{
class Program
{
static void Main(string[] args)
{
string inputFolder = @"C:\WordFiles\Input";
string outputFolder = @"C:\WordFiles\Output";

// 如果输出文件夹不存在,则创建该文件夹
Directory.CreateDirectory(outputFolder);

// 处理输入文件夹中的所有 DOCX 文件
foreach (string inputFile in Directory.GetFiles(inputFolder, "*.docx"))
{
// 跳过 Word 临时文件
if (Path.GetFileName(inputFile).StartsWith("~$"))
continue;

// 创建 Document 实例
Document doc = new Document();

// 加载 Word 文档
doc.LoadFromFile(inputFile);

// 查找所有超链接
List<Field> hyperlinks = FindAllHyperlinks(doc);

// 将所有超链接转换为普通文本
for (int i = hyperlinks.Count - 1; i >= 0; i--)
{
FlattenHyperlinks(hyperlinks[i]);
}

// 保存处理后的文档
string outputFile = Path.Combine(
outputFolder,
Path.GetFileName(inputFile));

doc.SaveToFile(outputFile, FileFormat.Docx);
doc.Close();

Console.WriteLine(
$"已处理:{Path.GetFileName(inputFile)}");
}
}

// 获取文档正文中的所有超链接
private static List<Field> FindAllHyperlinks(Document document)
{
List<Field> hyperlinks = new List<Field>();

foreach (Section section in document.Sections)
{
foreach (DocumentObject sec in section.Body.ChildObjects)
{
if (sec.DocumentObjectType == DocumentObjectType.Paragraph)
{
foreach (DocumentObject para
in (sec as Paragraph).ChildObjects)
{
if (para.DocumentObjectType ==
DocumentObjectType.Field)
{
Field field = para as Field;

if (field.Type == FieldType.FieldHyperlink)
{
hyperlinks.Add(field);
}
}
}
}
}
}

return hyperlinks;
}

// 将超链接字段转换为普通文本,并保留显示内容
private static void FlattenHyperlinks(Field field)
{
int ownerParaIndex =
field.OwnerParagraph.OwnerTextBody.ChildObjects
.IndexOf(field.OwnerParagraph);

int fieldIndex =
field.OwnerParagraph.ChildObjects.IndexOf(field);

Paragraph sepOwnerPara =
field.Separator.OwnerParagraph;

int sepOwnerParaIndex =
field.Separator.OwnerParagraph.OwnerTextBody.ChildObjects
.IndexOf(field.Separator.OwnerParagraph);

int sepIndex =
field.Separator.OwnerParagraph.ChildObjects
.IndexOf(field.Separator);

int endIndex =
field.End.OwnerParagraph.ChildObjects
.IndexOf(field.End);

int endOwnerParaIndex =
field.End.OwnerParagraph.OwnerTextBody.ChildObjects
.IndexOf(field.End.OwnerParagraph);

FormatFieldResultText(
field.Separator.OwnerParagraph.OwnerTextBody,
sepOwnerParaIndex,
endOwnerParaIndex,
sepIndex,
endIndex);

// 删除字段结束标记
field.End.OwnerParagraph.ChildObjects.RemoveAt(endIndex);

// 删除字段代码和分隔符
for (int i = sepOwnerParaIndex; i >= ownerParaIndex; i--)
{
if (i == sepOwnerParaIndex && i == ownerParaIndex)
{
for (int j = sepIndex; j >= fieldIndex; j--)
{
field.OwnerParagraph.ChildObjects.RemoveAt(j);
}
}
else if (i == ownerParaIndex)
{
for (int j =
field.OwnerParagraph.ChildObjects.Count - 1;
j >= fieldIndex;
j--)
{
field.OwnerParagraph.ChildObjects.RemoveAt(j);
}
}
else if (i == sepOwnerParaIndex)
{
for (int j = sepIndex; j >= 0; j--)
{
sepOwnerPara.ChildObjects.RemoveAt(j);
}
}
else
{
field.OwnerParagraph.OwnerTextBody.ChildObjects
.RemoveAt(i);
}
}
}

// 将保留的超链接文本设置为黑色并移除下划线
private static void FormatFieldResultText(
Body ownerBody,
int sepOwnerParaIndex,
int endOwnerParaIndex,
int sepIndex,
int endIndex)
{
for (int i = sepOwnerParaIndex;
i <= endOwnerParaIndex;
i++)
{
Paragraph para =
ownerBody.ChildObjects[i] as Paragraph;

if (i == sepOwnerParaIndex &&
i == endOwnerParaIndex)
{
for (int j = sepIndex + 1; j < endIndex; j++)
{
FormatText(para.ChildObjects[j] as TextRange);
}
}
else if (i == sepOwnerParaIndex)
{
for (int j = sepIndex + 1;
j < para.ChildObjects.Count;
j++)
{
FormatText(para.ChildObjects[j] as TextRange);
}
}
else if (i == endOwnerParaIndex)
{
for (int j = 0; j < endIndex; j++)
{
FormatText(para.ChildObjects[j] as TextRange);
}
}
else
{
for (int j = 0;
j < para.ChildObjects.Count;
j++)
{
FormatText(para.ChildObjects[j] as TextRange);
}
}
}
}

// 将保留的超链接文本设置为黑色且不带下划线
private static void FormatText(TextRange textRange)
{
if (textRange == null)
return;

textRange.CharacterFormat.TextColor = Color.Black;
textRange.CharacterFormat.UnderlineStyle =
UnderlineStyle.None;
}
}
}

步骤 3:运行程序

修改输入和输出文件夹路径,将 DOCX 文件放入输入目录,然后运行程序。处理后的文件会以原文件名保存到输出文件夹中。

如果需要批量处理大量文件,建议先使用几个具有代表性的文档进行测试。

输出效果:

使用 C# 删除超链接后的 Word 文档

⚠️ 说明: 此 C# 示例只处理文档正文中的顶层段落。如果超链接位于表格、文本框、页眉或页脚等嵌套对象中,需要扩展遍历逻辑,递归检查这些子对象。代码还会将保留下来的超链接文本重置为黑色并去掉下划线。如果你只是想更改超链接颜色或去除下划线,而不是删除链接本身,可以单独修改超链接的格式。

阻止 Word 自动创建超链接

如果 Word 经常在你输入 URL 或电子邮件地址时自动将其转换为超链接,可以关闭自动创建超链接功能,这样就不必每次都手动删除。

在 Windows 版 Word 中

  1. 点击左上角的 文件,然后在侧边栏底部选择 选项

  2. 在左侧选择 校对

  3. 点击上方的 自动更正选项…

  4. 切换到 键入时自动套用格式 选项卡。

  5. 取消勾选 Internet 及网络路径替换为超链接

  6. 点击 确定 保存设置。

在 Mac 版 Word 中

  1. 点击顶部 Apple 菜单栏中的 Word,然后选择 偏好设置

  2. 在“创作和校对工具”区域打开 自动更正

  3. 切换到 键入时自动套用格式 选项卡。

  4. 取消勾选 Internet 及网络路径替换为超链接

修改这个设置后,Word 就不会再自动把之后输入的 URL 或电子邮件地址格式化为超链接,但已经存在于当前文档中的超链接不会被删除。

删除 Word 超链接后需要检查什么

删除超链接通常并不复杂,但完成后建议检查几个细节,包括文本格式、动态域,以及文档其他区域中可能遗留的链接。

  • 检查文本颜色和下划线: 如果删除超链接后文字仍然是蓝色或带下划线,可以将字体颜色设置为 自动,或者与周围文字保持一致,并根据需要取消下划线。

  • 检查动态域: 如果使用了 Ctrl + Shift + F9 快捷键,请检查目录和交叉引用等动态域,确认它们没有被意外转换为静态文本。

  • 检查页眉和页脚: Ctrl + A 不会选中页眉和页脚中的文本。可以双击页面顶部或底部,进入页眉或页脚区域,检查并清除其中剩余的超链接。

常见问题解答

Q1:删除超链接会同时删除显示文本吗?

A1:不会。删除超链接只会移除链接,同时保留原来的显示文本。

Q2:如何去掉蓝色下划线但保留超链接?

A2:选中超链接,进入 开始 选项卡,将字体颜色设置为 自动 或与周围文本保持一致,然后点击 下划线 按钮(或按 Ctrl + U)取消下划线。

Q3:如何删除 Word 图片上的超链接?

A3:右键点击带有超链接的图片,然后选择 删除链接。在自动化文档处理场景中,也可以通过代码操作图片的超链接

Q4:没有安装 Word,也能删除 Word 文档中的超链接吗?

A4:可以。你可以使用 Word 网页版在浏览器中打开并编辑文档。如果需要处理多个文件,也可以借助 Spire.Doc 等文档处理库,通过 C# 自动删除超链接。

总结

删除 Word 中的超链接时,可以根据实际场景选择不同的方法。对于少量链接,直接使用 Word 内置命令或快捷键即可;如果需要对大量 DOCX 文件重复执行相同操作,则可以通过 C# 自动化处理,避免逐个手动编辑文档。