在新建的 word 文档中创建目录是提升文档质量、提高阅读体验和传达信息效果的重要手段。目录作为文档的导航指南,为读者提供了快速定位和浏览文档内容的途径。通过目录,读者可以快速了解文档的结构和内容组织,节省阅读时间,提高工作效率。目录的存在使得文档更具可读性和易用性,帮助读者快速找到感兴趣的章节或主题,减少阅读障碍。此外,目录也有助于文档的索引和检索,使得信息的查找更为便捷。本文将介绍如何使用 spire.doc for .net 在 c# 项目中给新建的 word 文档创建目录。
安装 spire.doc for .net
首先,您需要将 spire.doc for.net 包含的 dll 文件作为引用添加到您的 .net项目中。dll 文件可以从此链接下载,也可以通过 安装。
pm> install-package spire.doc
c# 利用标题样式创建目录
利用标题样式创建目录是一种在 word 文档中默认自动生成目录的方法,通过使用不同级别的标题样式来标识文档中的章节和子章节,然后利用 word 的目录功能自动生成目录内容。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.addsection() 方法添加一个节。
- 使用 section.addparagraph() 方法添加一个段落。
- 使用 paragraph.appendtoc(int lowerlevel, int upperlevel) 方法创建一个目录对象。
- 创建一个 characterformat 字符格式对象并设置字体。
- 使用 paragraph.applystyle(builtinstyle.heading1) 方法给段落应用标题样式。
- 使用 paragraph.appendtex() 方法添加文本内容。
- 使用 textrange.applycharacterformat() 方法给文本设置字符格式。
- 使用 document.updatetableofcontents() 方法更新目录。
- 使用 document.savetofile() 方法保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新的文档对象
document doc = new document();
// 在文档中添加一个节
section section = doc.addsection();
// 添加目录段落
paragraph tocparagraph = section.addparagraph();
tocparagraph.appendtoc(1, 3);
// 创建字符格式对象并设置字体
characterformat characterformat1 = new characterformat(doc);
characterformat1.fontname = "微软雅黑";
// 创建另一个字符格式对象并设置字体、字体大小
characterformat characterformat2 = new characterformat(doc);
characterformat2.fontname = "微软雅黑";
characterformat2.fontsize = 12;
// 添加标题1样式的段落
paragraph paragraph = section.body.addparagraph();
paragraph.applystyle(builtinstyle.heading1);
// 添加文本并应用字符格式
textrange textrange1 = paragraph.appendtext("概述");
textrange1.applycharacterformat(characterformat1);
// 添加普通内容
paragraph = section.body.addparagraph();
textrange textrange2 = paragraph.appendtext("spire.doc for .net 是一款专门对 word 文档进行操作的 .net 类库。这款控件的主要功能在于帮助开发人员轻松快捷高效地创建、编辑、转换、比较和打印 microsoft word 文档。作为一款独立的 word .net 控件,spire.doc for .net 的运行系统(服务器端或客户端)均无需安装 microsoft word,但是它却可以将 microsoft word 文档的操作功能集成到任何开发人员的 .net (asp.net、windows form、.net core、.net 5.0、.net 6.0、.net 7.0、.net standard、xamarin、mono android)应用程序中。");
textrange2.applycharacterformat(characterformat2);
// 添加标题1样式的段落
paragraph = section.body.addparagraph();
paragraph.applystyle(builtinstyle.heading1);
textrange1 = paragraph.appendtext("主要功能");
textrange1.applycharacterformat(characterformat1);
// 添加标题2样式的段落
paragraph = section.body.addparagraph();
paragraph.applystyle(builtinstyle.heading2);
textrange1 = paragraph.appendtext("仅需 spire.doc,无需 microsoft office automation");
textrange1.applycharacterformat(characterformat1);
// 添加普通内容
paragraph = section.body.addparagraph();
textrange2 = paragraph.appendtext("spire.doc for .net 是一个完全独立的 .net word 类库,它所运行的系统无需安装 microsoft office。spire.doc for .net 和 microsoft word automation 相比,优点在于稳定性高,运行速度快和可扩展性强。");
textrange2.applycharacterformat(characterformat2);
// 添加标题3样式的段落
paragraph = section.body.addparagraph();
paragraph.applystyle(builtinstyle.heading3);
textrange1 = paragraph.appendtext("word 版本");
textrange1.applycharacterformat(characterformat1);
paragraph = section.body.addparagraph();
textrange2 = paragraph.appendtext("word97-03 word2007 word2010 word2013 word2016 word2019");
textrange2.applycharacterformat(characterformat2);
// 添加标题2样式的段落
paragraph = section.body.addparagraph();
paragraph.applystyle(builtinstyle.heading2);
textrange1 = paragraph.appendtext("高质量的文档转换");
textrange1.applycharacterformat(characterformat1);
// 添加普通内容
paragraph = section.body.addparagraph();
textrange2 = paragraph.appendtext("spire.doc for .net 能帮助用户将 word 文件保存在流中,也可以保存为 web response,还支持将 word 文件与 xml、rtf、emf、txt、xps、epub、html、svg、odt 和 markdown 等格式文件之间的双向转换。同时,它还支持将 word 文件转换为 pdf 文件和 ofd,html 文件转换为图像文件。");
textrange2.applycharacterformat(characterformat2);
// 添加标题2样式的段落
paragraph = section.body.addparagraph();
paragraph.applystyle(builtinstyle.heading2);
textrange1 = paragraph.appendtext("多样化的 word 文档功能");
textrange1.applycharacterformat(characterformat1);
// 添加普通内容
paragraph = section.body.addparagraph();
textrange2 = paragraph.appendtext("spire.doc for .net 的一个常用功能就是动态创建一个全新的 word 文档。并支持几乎所有的 word 文档元素,它们主要包括页面、节、页眉、页脚、数字签名、脚注、尾注、段落、项目符号和编号、表格、文本、域、超链接、书签、注释、图片、样式、背景设置、打印功能、文档设置和文档保护。同时,也支持形状、文本框、图片、ole 对象、公式和内容控件。");
textrange2.applycharacterformat(characterformat2);
// 更新目录
doc.updatetableofcontents();
// 保存文档
doc.savetofile("利用标题样式创建目录.docx", fileformat.docx2016);
// 释放资源
doc.dispose();
}
}
}
c# 利用大纲层级样式创建目录
在 word 文档中,利用大纲层级样式也可以创建目录。可以使用 paragraphformat.outlinelevel 属性来为段落指定在大纲中的层级样式。然后,通过 tableofcontent.settoclevelstyle() 方法将这些大纲层级样式应用到创建目录的规则中。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.addsection() 方法添加一个节。
- 创建一个 paragraphstyle 对象,并使用 paragraphstyle.paragraphformat.outlinelevel = outlinelevel.level1 设置大纲层级。
- 使用 document.styles.add() 方法将创建好的 paragraphstyle 对象添加到文档中。
- 使用 section.addparagraph() 方法添加一个段落。
- 使用 paragraph.appendtoc(int lowerlevel, int upperlevel) 方法创建一个目录对象。
- 将使用标题样式创建目录的默认设置改为 false, tableofcontent.useheadingstyles = false。
- 使用 tableofcontent.settoclevelstyle(int levelnumber, string stylename) 方法将大纲层级样式应用到目录规则中。
- 创建一个 characterformat 字符格式对象并设置字体。
- 使用 paragraph.applystyle(paragraphstyle.name) 方法给段落应用样式。
- 使用 paragraph.appendtex() 方法添加文本内容。
- 使用 textrange.applycharacterformat() 方法给文本设置字符格式。
- 使用 document.updatetableofcontents() 方法更新目录。
- 使用 document.savetofile() 方法保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新的文档对象
document doc = new document();
section section = doc.addsection();
// 定义大纲层级1
paragraphstyle titlestyle1 = new paragraphstyle(doc);
titlestyle1.name = "t1s";
titlestyle1.paragraphformat.outlinelevel = outlinelevel.level1;
titlestyle1.characterformat.bold = true;
titlestyle1.characterformat.fontname = "微软雅黑";
titlestyle1.characterformat.fontsize = 18f;
titlestyle1.paragraphformat.horizontalalignment = horizontalalignment.left;
doc.styles.add(titlestyle1);
// 定义大纲层级2
paragraphstyle titlestyle2 = new paragraphstyle(doc);
titlestyle2.name = "t2s";
titlestyle2.paragraphformat.outlinelevel = outlinelevel.level2;
titlestyle2.characterformat.bold = true;
titlestyle2.characterformat.fontname = "微软雅黑";
titlestyle2.characterformat.fontsize = 16f;
titlestyle2.paragraphformat.horizontalalignment = horizontalalignment.left;
doc.styles.add(titlestyle2);
// 定义大纲层级3
paragraphstyle titlestyle3 = new paragraphstyle(doc);
titlestyle3.name = "t3s";
titlestyle3.paragraphformat.outlinelevel = outlinelevel.level3;
titlestyle3.characterformat.bold = true;
titlestyle3.characterformat.fontname = "微软雅黑";
titlestyle3.characterformat.fontsize = 14f;
titlestyle3.paragraphformat.horizontalalignment = horizontalalignment.left;
doc.styles.add(titlestyle3);
// 添加目录段落
paragraph tocparagraph = section.addparagraph();
tableofcontent toc = tocparagraph.appendtoc(1, 3);
toc.useheadingstyles = false;
toc.usehyperlinks = true;
toc.usetableentryfields = false;
toc.rightalignpagenumbers = true;
toc.settoclevelstyle(1, titlestyle1.name);
toc.settoclevelstyle(2, titlestyle2.name);
toc.settoclevelstyle(3, titlestyle3.name);
// 定义字符格式
characterformat characterformat = new characterformat(doc);
characterformat.fontname = "微软雅黑";
characterformat.fontsize = 12;
// 添加段落并应用大纲层级样式1
paragraph paragraph = section.body.addparagraph();
paragraph.applystyle(titlestyle1.name);
paragraph.appendtext("概述");
// 添加段落并设置文本内容
paragraph = section.body.addparagraph();
textrange textrange = paragraph.appendtext("spire.doc for .net 是一款专门对 word 文档进行操作的 .net 类库。这款控件的主要功能在于帮助开发人员轻松快捷高效地创建、编辑、转换、比较和打印 microsoft word 文档。作为一款独立的 word .net 控件,spire.doc for .net 的运行系统(服务器端或客户端)均无需安装 microsoft word,但是它却可以将 microsoft word 文档的操作功能集成到任何开发人员的 .net (asp.net、windows form、.net core、.net 5.0、.net 6.0、.net 7.0、.net standard、xamarin、mono android)应用程序中。");
textrange.applycharacterformat(characterformat);
// 添加段落并应用大纲层级样式1
paragraph = section.body.addparagraph();
paragraph.applystyle(titlestyle1.name);
paragraph.appendtext("主要功能");
// 添加段落并应用大纲层级样式2
paragraph = section.body.addparagraph();
paragraph.applystyle(titlestyle2.name);
paragraph.appendtext("仅需 spire.doc,无需 microsoft office automation");
// 添加段落并设置文本内容
paragraph = section.body.addparagraph();
textrange = paragraph.appendtext("spire.doc for .net 是一个完全独立的 .net word 类库,它所运行的系统无需安装 microsoft office。spire.doc for .net 和 microsoft word automation 相比,优点在于稳定性高,运行速度快和可扩展性强。");
textrange.applycharacterformat(characterformat);
// 添加段落并应用大纲层级样式3
paragraph = section.body.addparagraph();
paragraph.applystyle(titlestyle3.name);
paragraph.appendtext("word 版本");
// 添加段落并设置文本内容
paragraph = section.body.addparagraph();
textrange = paragraph.appendtext("word97-03 word2007 word2010 word2013 word2016 word2019");
textrange.applycharacterformat(characterformat);
// 添加段落并应用大纲层级样式2
paragraph = section.body.addparagraph();
paragraph.applystyle(titlestyle2.name);
paragraph.appendtext("高质量的文档转换");
// 添加段落并设置文本内容
paragraph = section.body.addparagraph();
textrange = paragraph.appendtext("spire.doc for .net 能帮助用户将 word 文件保存在流中,也可以保存为 web response,还支持将 word 文件与 xml、rtf、emf、txt、xps、epub、html、svg、odt 和 markdown 等格式文件之间的双向转换。同时,它还支持将 word 文件转换为 pdf 文件和 ofd,html 文件转换为图像文件。");
textrange.applycharacterformat(characterformat);
// 添加段落并应用大纲层级样式2
paragraph = section.body.addparagraph();
paragraph.applystyle(titlestyle2.name);
paragraph.appendtext("多样化的 word 文档功能");
// 添加段落并设置文本内容
paragraph = section.body.addparagraph();
textrange = paragraph.appendtext("spire.doc for .net 的一个常用功能就是动态创建一个全新的 word 文档。并支持几乎所有的 word 文档元素,它们主要包括页面、节、页眉、页脚、数字签名、脚注、尾注、段落、项目符号和编号、表格、文本、域、超链接、书签、注释、图片、样式、背景设置、打印功能、文档设置和文档保护。同时,也支持形状、文本框、图片、ole 对象、公式和内容控件。");
textrange.applycharacterformat(characterformat);
// 更新目录内容
doc.updatetableofcontents();
// 保存文档
doc.savetofile("利用大纲层级样式创建目录.docx", fileformat.docx2016);
// 释放资源
doc.dispose();
}
}
}
c# 利用图片标题创建目录
使用 spire.doc 库,您可以利用 tableofcontent tocforimage = new tableofcontent(document, " \\h \\z \\c \"图片\"") 方法通过图片标题来创建目录。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.addsection() 方法添加一个节。
- 创建一个目录对象 tableofcontent tocforimage = new tableofcontent(document, " \\h \\z \\c \"图片\"") 并指定目录的样式。
- 使用 section.addparagraph() 方法添加一个段落。
- 使用 paragraph.items.add(tocforimage) 方法将目录对象添加到段落中 。
- 使用 paragraph.appendfieldmark(fieldmarktype.fieldseparator) 方法添加字段分隔符。
- 使用 paragraph.appendtext("toc") 方法添加文本内容 "toc"。
- 使用 paragraph.appendfieldmark(fieldmarktype.fieldend) 方法添加字段结束标记。
- 使用 paragraph.appendpicture() 方法添加一个图片。
- 使用 docpicture.addcaption() 方法添加图片标题段落,包括产品信息和格式设置.
- 利用 document.updatetableofcontents(tocforimage) 方法更新目录以反映文档中的更改。
- 使用 document.savetofile() 方法保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新文档对象
document doc = new document();
// 在文档中添加一个节
section section = doc.addsection();
// 创建一个图片目录对象
tableofcontent tocforimage = new tableofcontent(doc, " \\h \\z \\c \"图片\"");
// 在节中添加一个段落
paragraph tocparagraph = section.body.addparagraph();
// 将图片目录对象添加到段落中
tocparagraph.items.add(tocforimage);
// 添加字段分隔符
tocparagraph.appendfieldmark(fieldmarktype.fieldseparator);
// 添加文本内容
tocparagraph.appendtext("toc");
// 添加字段结束标记
tocparagraph.appendfieldmark(fieldmarktype.fieldend);
// 在节中添加一个空白段落
section.body.addparagraph();
// 在节中添加一个段落
paragraph paragraph = section.body.addparagraph();
// 添加一个图片
docpicture docpicture = paragraph.appendpicture("images/doc-net.png");
docpicture.width = 100;
docpicture.height = 100;
// 添加图片标题段落
paragraph picturecaptionparagraph = docpicture.addcaption("图片", captionnumberingformat.number, captionposition.belowitem) as paragraph;
picturecaptionparagraph.appendtext(" spire.doc for .net 产品 ");
picturecaptionparagraph.format.afterspacing = 20;
// 继续在节中添加段落
paragraph = section.body.addparagraph();
docpicture = paragraph.appendpicture("images/pdf-net.png");
docpicture.width = 100;
docpicture.height = 100;
picturecaptionparagraph = docpicture.addcaption("图片", captionnumberingformat.number, captionposition.belowitem) as paragraph;
picturecaptionparagraph.appendtext(" spire.pdf for .net 产品 ");
picturecaptionparagraph.format.afterspacing = 20;
paragraph = section.body.addparagraph();
docpicture = paragraph.appendpicture("images/xls-net.png");
docpicture.width = 100;
docpicture.height = 100;
picturecaptionparagraph = docpicture.addcaption("图片", captionnumberingformat.number, captionposition.belowitem) as paragraph;
picturecaptionparagraph.appendtext(" spire.xls for .net 产品 ");
picturecaptionparagraph.format.afterspacing = 20;
paragraph = section.body.addparagraph();
docpicture = paragraph.appendpicture("images/ppt-net.png");
docpicture.width = 100;
docpicture.height = 100;
picturecaptionparagraph = docpicture.addcaption("图片", captionnumberingformat.number, captionposition.belowitem) as paragraph;
picturecaptionparagraph.appendtext(" spire.presentation for .net 产品 ");
// 更新目录
doc.updatetableofcontents(tocforimage);
// 将文档保存为文件
doc.savetofile("利用图片标题创建目录.docx", spire.doc.fileformat.docx2016);
// 释放文档对象
doc.dispose();
}
}
}
c# 利用表格标题创建目录
同样也可以通过 tableofcontent tocfortable = new tableofcontent(document, " \\h \\z \\c \"表格\"") 方法利用表格标题来创建目录。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.addsection() 方法添加一个节。
- 创建一个目录对象 tableofcontent tocfortable = new tableofcontent(document, " \\h \\z \\c \"表格\"") 并指定目录的样式。
- 使用 section.addparagraph() 方法添加一个段落。
- 使用 paragraph.items.add(tocfortable) 方法将目录对象添加到段落中 。
- 使用 paragraph.appendfieldmark(fieldmarktype.fieldseparator) 方法添加字段分隔符。
- 使用 paragraph.appendtext("toc") 方法添加文本内容 "toc"。
- 使用 paragraph.appendfieldmark(fieldmarktype.fieldend) 方法添加字段结束标记。
- 使用 section.addtable() 方法添加一个表格并通过 table.resetcells(int rowsnum, int columnsnum) 方法设置行数和列数。
- 使用 table.addcaption() 方法添加表格片标题段落,包括产品信息和格式设置.
- 利用 document.updatetableofcontents(tocfortable) 方法更新目录以反映文档中的更改。
- 使用 document.savetofile() 方法保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新文档
document doc = new document();
// 在文档中添加一个节
section section = doc.addsection();
// 创建一个表格目录对象
tableofcontent tocfortable = new tableofcontent(doc, " \\h \\z \\c \"表格\"");
// 在节中添加一个段落用于放置表格目录
paragraph tocparagraph = section.body.addparagraph();
tocparagraph.items.add(tocfortable);
tocparagraph.appendfieldmark(fieldmarktype.fieldseparator);
tocparagraph.appendtext("toc");
tocparagraph.appendfieldmark(fieldmarktype.fieldend);
// 在节中添加两个空白段落
section.body.addparagraph();
section.body.addparagraph();
// 在节中添加一个表格
table table = section.body.addtable(true);
table.resetcells(1, 3);
// 添加一个表格的标题
paragraph tablecaptionparagraph = table.addcaption("表格", captionnumberingformat.number, captionposition.belowitem) as paragraph;
tablecaptionparagraph.appendtext(" 一行三列");
tablecaptionparagraph.format.afterspacing = 18;
// 在节中添加一个新的表格
table = section.body.addtable(true);
table.resetcells(3, 3);
// 添加第二个表格的标题
tablecaptionparagraph = table.addcaption("表格", captionnumberingformat.number, captionposition.belowitem) as paragraph;
tablecaptionparagraph.appendtext(" 三行三列");
tablecaptionparagraph.format.afterspacing = 18;
// 在节中添加另一个新的表格
table = section.body.addtable(true);
table.resetcells(5, 3);
// 添加第三个表格的标题
tablecaptionparagraph = table.addcaption("表格", captionnumberingformat.number, captionposition.belowitem) as paragraph;
tablecaptionparagraph.appendtext(" 五行三列");
// 更新表格目录
doc.updatetableofcontents(tocfortable);
// 将文档保存为指定文件
doc.savetofile("利用表格标题创建目录.docx", spire.doc.fileformat.docx2016);
// 释放资源
doc.dispose();
}
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。