python-docx高级用法

发布时间 2023-04-22 14:35:27作者: linux星

from docx import Document
from docx.enum.section import WD_SECTION
# 创建一个新文档
doc = Document()
# 添加页眉
header = doc.sections[0].header
header.add_paragraph('Header text')
# 添加页脚
footer = doc.sections[0].footer
footer.add_paragraph('Footer text')
# 设置页眉页脚不同
doc.sections[0].different_first_page_header_footer = True
doc.sections[0].first_page_header.add_paragraph('First page header')
doc.sections[0].first_page_footer.add_paragraph('First page footer')

from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn
# 创建一个新文档
doc = Document()
# 添加目录
doc.add_paragraph('Table of Contents', style='Heading 1')
doc.add_paragraph('Chapter 1', style='Heading 2')
doc.add_paragraph('Section 1.1', style='Heading 3')
doc.add_paragraph('Section 1.2', style='Heading 3')
doc.add_paragraph('Chapter 2', style='Heading 2')
doc.add_paragraph('Section 2.1', style='Heading 3')
doc.add_paragraph('Section 2.2', style='Heading 3')
doc.add_paragraph('Section 2.3', style='Heading 3')
doc.add_paragraph('Chapter 3', style='Heading 2')
doc.add_paragraph('Section 3.1', style='Heading 3')
doc.add_paragraph('Section 3.2', style='Heading 3')
doc.add_paragraph('Section 3.3', style='Heading 3')
doc.add_paragraph('Section 3.4', style='Heading 3')
doc.add_paragraph('Section 3.5', style='Heading 3')
doc.add_paragraph('Section 3.6', style='Heading 3')
doc.add_paragraph('Section 3.7', style='Heading 3')
# 添加书签
doc.add_paragraph('Bookmark', style='Heading 1')
bookmark = doc.add_paragraph()
bookmark.add_run('This is a bookmarked text.').italic = True
doc.add_bookmark('bookmark', bookmark)
# 更新目录
doc.sections[0].page_width = Pt(700)
doc.sections[0].page_height = Pt(1000)
doc.sections[0].orient = WD_SECTION.LANDSCAPE
doc.sections[0].start_type = WD_SECTION.NEW_PAGE
doc.sections[0].add_page_break()
doc.add_paragraph('Updated Table of Contents', style='Heading 1')
doc.add_paragraph('Chapter 1', style='Heading 2')
doc.add_paragraph('Section 1.1', style='Heading 3')
doc.add_paragraph('Section 1.2', style='Heading 3')
doc.add_paragraph('Chapter 2', style='Heading 2')
doc.add_paragraph('Section 2.1', style='Heading 3')
doc.add_paragraph('Section 2.2', style='Heading 3')
doc.add_paragraph('Section 2.3', style='Heading 3')
doc.add_paragraph('Chapter 3', style='Heading 2')
doc.add_paragraph('Section 3.1', style='Heading 3')
doc.add_paragraph('Section 3.2', style='Heading 3')
doc.add_paragraph('Section 3.3', style='Heading 3')
doc.add_paragraph('Section 3.4', style='Heading 3')
doc.add_paragraph('Section 3.5', style='Heading 3')
doc.add_paragraph('Section 3.6', style='Heading 3')
doc.add_paragraph('Section 3.7', style='Heading 3')
doc.add_paragraph('Bookmark', style='Heading 1')
doc.add_paragraph().add_run('This is a bookmarked text.').italic = True
doc.save('example.docx')

from docx import Document
# 创建一个新文档
doc = Document()
# 添加注释
para = doc.add_paragraph('This is a paragraph with a comment.')
comment = para.add_comment('This is a comment.')
comment.author = 'Author'
# 添加批注
para = doc.add_paragraph('This is a paragraph with a comment.')
doc.add_paragraph('This is another paragraph.')
para.add_run().underline = True
doc.add_comment('This is a comment.', para)
doc.save('example.docx')

from docxtpl import DocxTemplate, InlineImage
# 使用模板生成文档
tpl = DocxTemplate('template.docx')
context = {
    'title': 'Document Title',
    'subtitle': 'Document Subtitle',
    'image': InlineImage(tpl, 'image.jpg', width=500, height=500),
    'table': [
        {'name': 'John', 'age': 30},
        {'name': 'Mary', 'age': 25},
        {'name': 'Tom', 'age': 35}
    ]
}
tpl.render(context)
tpl.save('example.docx')