创建 word 文档的目录有助于提升文档的可导航性和易读性。它如同文档的导航指南,使得读者能迅速概览文档结构,把握内容框架。帮助用户可以轻松跳转至文档内的任意章节,尤其对于长篇报告、论文或手册极为有用。这不仅节省了读者定位信息的时间,也增强了文档的专业性和读者的使用体验。此外,目录便于维护更新,文档结构调整后可快速更新目录以反映最新内容布局,保证文档的连贯性和准确性。本文将介绍如何使用 spire.doc for python 在 python 项目中给新建的 word 文档创建目录。
安装 spire.doc for python
本教程需要用到 spire.doc for python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 windows 中。
pip install spire.doc
如果您不确定如何安装,请参考此教程: 如何在 windows 中安装 spire.doc for python
python 利用标题样式创建目录
利用标题样式创建目录是一种在 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() 方法保存到文档。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个新的文档对象
doc = document()
# 在文档中添加一个节
section = doc.addsection()
# 添加目录段落
tocparagraph = section.addparagraph()
tocparagraph.appendtoc(1, 3)
# 创建字符格式对象并设置字体
characterformat1 = characterformat(doc)
characterformat1.fontname = "微软雅黑"
# 创建另一个字符格式对象并设置字体、字体大小
characterformat2 = characterformat(doc)
characterformat2.fontname = "微软雅黑"
characterformat2.fontsize = 12
# 添加标题1样式的段落
paragraph = section.body.addparagraph()
paragraph.applystyle(builtinstyle.heading1)
# 添加文本并应用字符格式
textrange1 = paragraph.appendtext("概述")
textrange1.applycharacterformat(characterformat1)
# 添加普通内容
paragraph = section.body.addparagraph()
textrange2 = paragraph.appendtext("spire.doc for python 是一款专业的 python word 开发组件,开发人员可以使用它轻松将 word 文档的创建、读取、编辑和转换等功能集成到自己的 python 应用程序中。作为一款完全独立的组件,spire.doc for python 的运行环境无需安装 microsoft word。同时兼容大部分国产操作系统,能够在中标麒麟和中科方德等国产操作系统中正常运行。")
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 python 是一个完全独立的 .net word 类库,它所运行的系统无需安装 microsoft office。spire.doc for python 和 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 python 能帮助用户将 word 文件保存在流中,还支持将 word 文件与 xml、rtf、emf、txt、xps、epub、html、svg 和 odt 等格式文件之间的双向转换。同时,它还支持将 word 文件转换为 pdf 文件和 ofd,html 文件转换为图像文件。")
textrange2.applycharacterformat(characterformat2)
# 添加标题2样式的段落
paragraph = section.body.addparagraph()
paragraph.applystyle(builtinstyle.heading2)
extrange1 = paragraph.appendtext("多样化的 word 文档功能")
textrange1.applycharacterformat(characterformat1)
# 添加普通内容
paragraph = section.body.addparagraph()
textrange2 = paragraph.appendtext("spire.doc for python 的一个常用功能就是动态创建一个全新的 word 文档。并支持几乎所有的 word 文档元素,它们主要包括页面、节、页眉、页脚、数字签名、脚注、尾注、段落、项目符号和编号、表格、文本、域、超链接、书签、注释、图片、样式、背景设置、打印功能、文档设置和文档保护。同时,也支持形状、文本框、图片、ole 对象、公式和内容控件。")
textrange2.applycharacterformat(characterformat2)
# 更新目录
doc.updatetableofcontents()
# 保存文档
doc.savetofile("利用标题样式创建目录.docx", fileformat.docx2016)
# 释放资源
doc.dispose()
python 利用大纲层级样式创建目录
在 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() 方法保存到文档。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个新的文档对象
doc = document()
# 在文档中添加一个节
section = doc.addsection()
# 定义大纲级别1
titlestyle1 = paragraphstyle(doc)
titlestyle1.name = "t1s"
titlestyle1.paragraphformat.outlinelevel = outlinelevel.level1
titlestyle1.characterformat.bold = true
titlestyle1.characterformat.fontname = "微软雅黑"
titlestyle1.characterformat.fontsize = 18
titlestyle1.paragraphformat.horizontalalignment = horizontalalignment.left
doc.styles.add(titlestyle1)
# 定义大纲级别2
titlestyle2 = paragraphstyle(doc)
titlestyle2.name = "t2s"
titlestyle2.paragraphformat.outlinelevel = outlinelevel.level2
titlestyle2.characterformat.bold = true
titlestyle2.characterformat.fontname = "微软雅黑"
titlestyle2.characterformat.fontsize = 16
titlestyle2.paragraphformat.horizontalalignment = horizontalalignment.left
doc.styles.add(titlestyle2)
# 定义大纲级别3
titlestyle3 = paragraphstyle(doc)
titlestyle3.name = "t3s"
titlestyle3.paragraphformat.outlinelevel = outlinelevel.level3
titlestyle3.characterformat.bold = true
titlestyle3.characterformat.fontname = "微软雅黑"
titlestyle3.characterformat.fontsize = 14
titlestyle3.paragraphformat.horizontalalignment = horizontalalignment.left
doc.styles.add(titlestyle3)
# 添加目录段落
tocparagraph = section.addparagraph()
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(doc)
characterformat.fontname = "微软雅黑"
characterformat.fontsize = 12
# 添加段落并应用大纲级别样式1
paragraph = section.body.addparagraph()
paragraph.applystyle(titlestyle1.name)
paragraph.appendtext("概述")
# 添加段落并设置文本内容
paragraph = section.body.addparagraph()
textrange = paragraph.appendtext("spire.doc for python 是一款专业的 python word 开发组件,开发人员可以使用它轻松将 word 文档的创建、读取、编辑和转换等功能集成到自己的 python 应用程序中。作为一款完全独立的组件,spire.doc for python 的运行环境无需安装 microsoft word。同时兼容大部分国产操作系统,能够在中标麒麟和中科方德等国产操作系统中正常运行。")
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 python 是一个完全独立的 .net word 类库,它所运行的系统无需安装 microsoft office。spire.doc for python 和 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 python 能帮助用户将 word 文件保存在流中,还支持将 word 文件与 xml、rtf、emf、txt、xps、epub、html、svg 和 odt 等格式文件之间的双向转换。同时,它还支持将 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 python 的一个常用功能就是动态创建一个全新的 word 文档。并支持几乎所有的 word 文档元素,它们主要包括页面、节、页眉、页脚、数字签名、脚注、尾注、段落、项目符号和编号、表格、文本、域、超链接、书签、注释、图片、样式、背景设置、打印功能、文档设置和文档保护。同时,也支持形状、文本框、图片、ole 对象、公式和内容控件。")
textrange.applycharacterformat(characterformat)
# 更新目录内容
doc.updatetableofcontents()
# 保存文档
doc.savetofile("利用大纲级别样式创建目录.docx", fileformat.docx2016)
# 释放资源
doc.dispose()
python 利用图片标题创建目录
使用 spire.doc 库,您可以利用 tableofcontent(document, " \\h \\z \\c \"图片\"") 方法通过图片标题来创建目录。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.addsection() 方法添加一个节。
- 创建一个目录对象 tocforimage = 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() 方法保存到文档。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个新文档对象
doc = document()
# 在文档中添加一个节
section = doc.addsection()
# 创建一个图片目录对象
tocforimage = tableofcontent(doc, " \\h \\z \\c \"图片\"")
# 在节中添加一个段落
tocparagraph = section.body.addparagraph()
# 将图片目录对象添加到段落中
tocparagraph.items.add(tocforimage)
# 添加字段分隔符
tocparagraph.appendfieldmark(fieldmarktype.fieldseparator)
# 添加文本内容
tocparagraph.appendtext("toc")
# 添加字段结束标记
tocparagraph.appendfieldmark(fieldmarktype.fieldend)
# 在节中添加一个空白段落
section.body.addparagraph()
# 在节中添加一个段落
paragraph = section.body.addparagraph()
# 添加一个图片
docpicture = paragraph.appendpicture("images/doc-python.png")
docpicture.width = 100
docpicture.height = 100
# 添加图片标题段落
obj = docpicture.addcaption("图片",captionnumberingformat.number,captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" spire.doc for python 产品")
paragraph.format.afterspacing = 20
# 继续在节中添加段落
paragraph = section.body.addparagraph()
docpicture = paragraph.appendpicture("images/pdf-python.png")
docpicture.width = 100
docpicture.height = 100
obj = docpicture.addcaption("图片",captionnumberingformat.number,captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" spire.pdf for python 产品")
paragraph.format.afterspacing = 20
paragraph = section.body.addparagraph()
docpicture = paragraph.appendpicture("images/xls-python.png")
docpicture.width = 100
docpicture.height = 100
obj = docpicture.addcaption("图片",captionnumberingformat.number,captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" spire.xls for python 产品")
paragraph.format.afterspacing = 20
paragraph = section.body.addparagraph()
docpicture = paragraph.appendpicture("images/ppt-python.png")
docpicture.width = 100
docpicture.height = 100
obj = docpicture.addcaption("图片",captionnumberingformat.number,captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" spire.presentation for python 产品")
paragraph.format.afterspacing = 20
# 更新目录
doc.updatetableofcontents(tocforimage)
# 将文档保存为文件
doc.savetofile("利用图片题注创建目录.docx", fileformat.docx2016)
# 释放文档对象
doc.dispose()
python 利用表格标题创建目录
同样也可以通过 tableofcontent(document, " \\h \\z \\c \"表格\"") 方法利用表格标题来创建目录。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.addsection() 方法添加一个节。
- 创建一个目录对象 tocfortable = 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() 方法保存到文档。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个新文档
doc = document()
# 在文档中添加一个节
section = doc.addsection()
# 创建一个表格目录对象
tocfortable = tableofcontent(doc, " \\h \\z \\c \"表格\"")
# 在节中添加一个段落用于放置表格目录
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 = section.body.addtable(true)
table.resetcells(1, 3)
# 添加一个表格的标题
obj = table.addcaption("表格", captionnumberingformat.number, captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" 一行三列")
paragraph.format.afterspacing = 20
# 在节中添加一个新的表格
table = section.body.addtable(true)
table.resetcells(3, 3)
# 添加第二个表格的标题
obj = table.addcaption("表格", captionnumberingformat.number, captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" 三行三列")
paragraph.format.afterspacing = 20
# 在节中添加另一个新的表格
table = section.body.addtable(true)
table.resetcells(5, 3)
# 添加第三个表格的标题
obj = table.addcaption("表格", captionnumberingformat.number, captionposition.belowitem)
paragraph = (paragraph)(obj)
paragraph.appendtext(" 五行三列")
paragraph.format.afterspacing = 20
# 更新表格目录
doc.updatetableofcontents(tocfortable)
# 将文档保存为指定文件
doc.savetofile("利用表格标题创建目录.docx", fileformat.docx2016)
# 释放资源
doc.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。