python-docx 将递归数据生成多级目录及标题和内容
时间: 2024-04-30 13:20:56 浏览: 13
可以使用python-docx库来生成多级目录及标题和内容。首先需要安装python-docx库,可以使用以下命令进行安装:
```
pip install python-docx
```
接下来,可以使用以下代码来生成多级目录和内容:
```python
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
from docx.oxml.ns import qn
def add_heading(paragraph, text, level):
"""
添加标题
"""
if level == 1:
paragraph.add_run(text).bold = True
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
paragraph.paragraph_format.space_before = Pt(0)
paragraph.paragraph_format.space_after = Pt(12)
paragraph.style.font.size = Pt(20)
paragraph.style.font.name = '黑体'
elif level == 2:
paragraph.add_run(text).bold = True
paragraph.paragraph_format.space_before = Pt(12)
paragraph.paragraph_format.space_after = Pt(6)
paragraph.style.font.size = Pt(16)
paragraph.style.font.name = '黑体'
elif level == 3:
paragraph.add_run(text).bold = True
paragraph.paragraph_format.space_before = Pt(6)
paragraph.paragraph_format.space_after = Pt(6)
paragraph.style.font.size = Pt(14)
paragraph.style.font.name = '黑体'
def add_content(paragraph, text):
"""
添加内容
"""
paragraph.add_run(text)
paragraph.paragraph_format.space_before = Pt(6)
paragraph.paragraph_format.space_after = Pt(6)
paragraph.style.font.size = Pt(12)
paragraph.style.font.name = '宋体'
def add_toc(document):
"""
添加目录
"""
paragraph = document.add_paragraph()
paragraph.add_run('目录').bold = True
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
paragraph.paragraph_format.space_before = Pt(0)
paragraph.paragraph_format.space_after = Pt(12)
paragraph.style.font.size = Pt(20)
paragraph.style.font.name = '黑体'
toc = document.add_paragraph()
toc.style.font.name = '宋体'
toc.style.font.size = Pt(12)
toc.alignment = WD_ALIGN_PARAGRAPH.CENTER
for i in range(3):
toc.add_run('\t' * i + ' ')
toc.add_run('第%d章 ' % (i+1))
toc.add_run('章节标题')
toc.add_run('\t')
toc.add_run(str(document.page_number-1))
toc.add_run('\n')
if __name__ == '__main__':
document = Document()
# 添加目录
add_toc(document)
# 添加内容
for i in range(3):
heading1 = document.add_paragraph()
add_heading(heading1, '第%d章 章节标题' % (i+1), 1)
for j in range(2):
heading2 = document.add_paragraph()
add_heading(heading2, '第%d节 章节标题' % (j+1), 2)
for k in range(3):
content = document.add_paragraph()
add_content(content, '第%d小节 内容' % (k+1))
document.save('test.docx')
```
这段代码会生成一个包含三个章节,每个章节包含两个小节,每个小节包含三个小节内容的文档,并且会自动生成目录。其中,`add_heading`函数用于添加标题,`add_content`函数用于添加内容,`add_toc`函数用于添加目录。在添加标题和内容时,可以根据不同级别设置不同的样式。