给Word文档插入目录,可以方便在阅读时快速定位相关内容的位置。这里介绍如何给现有的文档插入目录,然后移除目录。
首先,请查看原始文档内容, 里面包含了Heading1(大纲级别1)、 Heading2(大纲级别2)和Heding3(大纲级别3)格式的内容。
下面的代码展示了如何将目录(TOC)插入到文档之中。
C#
//创建Document实例并加载文件
Document doc = new Document();
doc.LoadFromFile(@"F:\testing\doc form\original document\InsertTOC - 副本.docx", FileFormat.Docx2010);
//使用域代码自定义目录
TableOfContent toc = new TableOfContent(doc, "{\\o \"1-3\" \\h \\z \\u}");
Paragraph p = doc.Sections[0].Paragraphs[0];
p.Items.Add(toc);
p.AppendFieldMark(FieldMarkType.FieldSeparator);
p.AppendText("TOC");
p.AppendFieldMark(FieldMarkType.FieldEnd);
doc.TOC = toc;
//更新目录
doc.UpdateTableOfContents();
//保存文件
doc.SaveToFile("InsertTOC.docx", FileFormat.Docx);
VB.NET
'创建Document实例并加载文件
Dim doc As Document = New Document
doc.LoadFromFile("F:\testing\doc form\original document\InsertTOC - 副本.docx", FileFormat.Docx2010)
'使用域代码自定义目录
Dim toc As TableOfContent = New TableOfContent(doc, "{\o ""1-3"" \h \z \u}")
Dim p As Paragraph = doc.Sections(0).Paragraphs(0)
p.Items.Add(toc)
p.AppendFieldMark(FieldMarkType.FieldSeparator)
p.AppendText("TOC")
p.AppendFieldMark(FieldMarkType.FieldEnd)
doc.TOC = toc
'更新目录
doc.UpdateTableOfContents
'保存文件
doc.SaveToFile("InsertTOC.docx", FileFormat.Docx)
结果文档:
下面介绍如何删除已添加的目录。
C#
//创建实例并加载带目录的文件
Document doc = new Document();
doc.LoadFromFile("InsertTOC.docx", FileFormat.Docx2010
//得到第一个章节
Body body = doc.Sections[0].Body;
//遍历段落找到目录删除
Regex regex = new Regex("TOC\\w+");
for (int i = 0; i < body.Paragraphs.Count; i++)
{
if (regex.IsMatch(body.Paragraphs[i].StyleName))
{
body.Paragraphs.RemoveAt(i);
i--;
}
}
//保存文件
doc.SaveToFile("RemoveTOC.docx", FileFormat.Docx2010);
VB.NET
'创建实例并加载带目录的文件
Dim doc As Document = New Document
doc.LoadFromFile("InsertTOC.docx", FileFormat.Docx2010)
'得到第一个章节
Dim body As Body = doc.Sections(0).Body
'遍历段落找到目录删除
Dim regex As Regex = New Regex("TOC\w+")
Dim i As Integer = 0
Do While (i < body.Paragraphs.Count)
If regex.IsMatch(body.Paragraphs(i).StyleName) Then
body.Paragraphs.RemoveAt(i)
i = (i - 1)
End If
i = (i + 1)
Loop
'保存文件
doc.SaveToFile("RemoveTOC.docx", FileFormat.Docx2010)
结果文档: