python-docx

Polar Sponsor
爱发电 赞助
.NET 9.0

python-docx Skill功能概述python-docx Skill是一项面向实际任务的技能,主要用于本Skill提供使用python-docx生成专业Word文档的标准方法和最佳实践;生成安全服务方案文档;核心要点生成技术架构设计文档;生成任何需要专业排版的Word文档;核心库 : python-docx;使用与执行辅助库 : docx.shared , docx.enum , docx.oxml.ns;标准代码模板;1. 文档初始化;2. 字体设置(必须!它将相关步骤、工具调用和结果整理方式集

python-docx Skill

功能概述

python-docx Skill是一项面向实际任务的技能,主要用于本Skill提供使用python-docx生成专业Word文档的标准方法和最佳实践;生成安全服务方案文档;

核心要点

  • 生成技术架构设计文档;
  • 生成任何需要专业排版的Word文档;
  • 核心库 : python-docx;

使用与执行

辅助库 : docx.shared , docx.enum , docx.oxml.ns;标准代码模板;1. 文档初始化;2. 字体设置(必须!它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

python-docx Skill

概述

本Skill提供使用python-docx生成专业Word文档的标准方法和最佳实践。

适用场景

  • 生成安全服务方案文档
  • 生成技术架构设计文档
  • 生成任何需要专业排版的Word文档

技术栈

  • 核心库: python-docx
  • 辅助库: docx.shared, docx.enum, docx.oxml.ns

标准代码模板

1. 文档初始化

from docx import Document
from docx.shared import Inches, Pt, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn

def create_document():
    """创建标准文档"""
    doc = Document()

    # 设置默认字体(关键!)
    style = doc.styles['Normal']
    style.font.name = 'Microsoft YaHei'
    style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Microsoft YaHei')

    return doc

2. 字体设置(必须!)

def set_font(run, font_name='Microsoft YaHei'):
    """设置字体"""
    run.font.name = font_name
    run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)

3. 标题添加

def add_heading_custom(doc, text, level=1):
    """
    添加标准标题

    Args:
        doc: Document对象
        text: 标题文本
        level: 1=一级, 2=二级, 3=三级

    Returns:
        标题段落对象
    """
    heading = doc.add_heading(level=level)
    run = heading.add_run(text)
    set_font(run)

    if level == 1:
        run.font.size = Pt(16)
        run.font.color.rgb = RGBColor(0, 51, 102)
        run.font.bold = True
    elif level == 2:
        run.font.size = Pt(14)
        run.font.color.rgb = RGBColor(0, 51, 102)
        run.font.bold = True
    else:
        run.font.size = Pt(12)
        run.font.color.rgb = RGBColor(0, 0, 0)
        run.font.bold = True

    return heading

4. 段落添加

def add_para_custom(doc, text, bold=False, indent=0, color=None):
    """
    添加标准段落

    Args:
        doc: Document对象
        text: 段落文本
        bold: 是否加粗
        indent: 首行缩进(厘米)
        color: RGBColor颜色对象

    Returns:
        段落对象
    """
    p = doc.add_paragraph()
    p.paragraph_format.first_line_indent = Cm(indent)

    run = p.add_run(text)
    run.font.size = Pt(11)
    set_font(run)

    if bold:
        run.font.bold = True
    if color:
        run.font.color.rgb = color

    return p

5. 项目符号列表

def add_bullet_custom(doc, text, level=0):
    """
    添加项目符号段落

    Args:
        doc: Document对象
        text: 列表项文本
        level: 缩进级别(0=一级, 1=二级)

    Returns:
        段落对象
    """
    p = doc.add_paragraph(style='List Bullet')
    p.paragraph_format.left_indent = Cm(0.5 + level * 0.5)

    run = p.add_run(text)
    run.font.size = Pt(11)
    set_font(run)

    return p

6. 编号列表

def add_numbered_custom(doc, text, level=0):
    """
    添加编号列表段落

    Args:
        doc: Document对象
        text: 列表项文本
        level: 缩进级别

    Returns:
        段落对象
    """
    p = doc.add_paragraph(style='List Number')
    p.paragraph_format.left_indent = Cm(0.5 + level * 0.5)

    run = p.add_run(text)
    run.font.size = Pt(11)
    set_font(run)

    return p

7. 表格创建

def create_table(doc, headers, data):
    """
    创建标准表格

    Args:
        doc: Document对象
        headers: 表头列表
        data: 二维列表,每行是一个列表

    Returns:
        表格对象
    """
    table = doc.add_table(rows=1+len(data), cols=len(headers))
    table.style = 'Light Grid Accent 1'
    table.alignment = WD_TABLE_ALIGNMENT.CENTER

    # 表头
    for i, header in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = header
        for paragraph in cell.paragraphs:
            for run in paragraph.runs:
                run.font.bold = True
                run.font.size = Pt(10)
                set_font(run)

    # 数据
    for row_idx, row_data in enumerate(data, 1):
        for col_idx, cell_data in enumerate(row_data):
            cell = table.rows[row_idx].cells[col_idx]
            cell.text = str(cell_data)
            for paragraph in cell.paragraphs:
                for run in paragraph.runs:
                    run.font.size = Pt(9)
                    set_font(run)

    return table

8. 图片插入

def insert_image(doc, image_path, width=Inches(6), caption=None):
    """
    插入标准图片

    Args:
        doc: Document对象
        image_path: 图片路径
        width: 图片宽度
        caption: 图片标题(可选)

    Returns:
        段落对象
    """
    # 插入图片
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run()
    run.add_picture(image_path, width=width)

    # 添加标题
    if caption:
        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        run = p.add_run(caption)
        run.font.size = Pt(10)
        run.font.color.rgb = RGBColor(102, 102, 102)
        set_font(run)

    return p

9. 分页

def add_page_break(doc):
    """添加分页符"""
    doc.add_page_break()

10. 封面创建

def create_cover(doc, title, subtitle=None, customer=None, date=None, version=None):
    """
    创建标准封面

    Args:
        doc: Document对象
        title: 主标题
        subtitle: 副标题(可选)
        customer: 客户名称(可选)
        date: 日期(可选)
        version: 版本号(可选)
    """
    # 空行占位
    for _ in range(6):
        doc.add_paragraph()

    # 主标题
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(title)
    run.font.size = Pt(28)
    run.font.bold = True
    run.font.color.rgb = RGBColor(0, 51, 102)
    set_font(run)

    # 副标题
    if subtitle:
        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        run = p.add_run(subtitle)
        run.font.size = Pt(16)
        run.font.color.rgb = RGBColor(102, 102, 102)
        set_font(run)

    # 空行
    for _ in range(4):
        doc.add_paragraph()

    # 信息
    info = doc.add_paragraph()
    info.alignment = WD_ALIGN_PARAGRAPH.CENTER

    if customer:
        run = info.add_run(f'客户:{customer}n')
        run.font.size = Pt(14)
        set_font(run)

    if date:
        run = info.add_run(f'日期:{date}n')
        run.font.size = Pt(14)
        set_font(run)

    if version:
        run = info.add_run(f'版本:{version}')
        run.font.size = Pt(14)
        set_font(run)

完整示例

# 创建文档
doc = create_document()

# 添加封面
create_cover(doc, 
    title='安全服务方案',
    subtitle='Security Service Proposal',
    customer='某某公司',
    date='2026-03-23',
    version='V1.0'
)

# 分页
doc.add_page_break()

# 添加一级标题
add_heading_custom(doc, '一、 服务概述', level=1)

# 添加二级标题
add_heading_custom(doc, '1.1 服务背景', level=2)

# 添加正文
add_para_custom(doc, '这是正文内容,首行缩进两字符。', indent=0.5)

# 添加项目符号
add_bullet_custom(doc, '项目符号内容')

# 添加编号列表
add_numbered_custom(doc, '编号列表内容')

# 添加表格
headers = ['列1', '列2', '列3']
data = [['A', 'B', 'C'], ['D', 'E', 'F']]
create_table(doc, headers, data)

# 保存
doc.save('output.docx')

常见问题

Q: 中文显示为方框?
A: 确保每个run都调用set_font()设置字体

Q: 表格样式不统一?
A: 设置table.style = 'Light Grid Accent 1'

Q: 图片无法显示?
A: 检查图片路径是否正确,使用绝对路径

Q: 文档格式错乱?
A: 确保所有文本都设置了字体和大小

参考

  • python-docx官方文档: https://python-docx.readthedocs.io/

相关专题

更多
Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

2026.06.29

140

15

Python FastAPI异步微服务与高性能接口设计
Python FastAPI异步微服务与高性能接口设计

本专题聚焦 Python FastAPI 框架在高性能接口与微服务开发中的应用,讲解异步请求处理、依赖注入机制、路由设计、数据库异步操作以及接口性能优化策略。结合实际项目案例,帮助开发者构建高并发、低延迟的现代化后端服务架构。

2026.06.16

219

12

Python数据分析实战指南
Python数据分析实战指南

聚焦Python在数据分析领域的核心应用,涵盖Pandas、NumPy、Matplotlib等库的使用技巧、真实业务场景案例及性能优化方法。

2026.06.04

146

48

Python入门零基础通关合集
Python入门零基础通关合集

从安装环境、变量循环到函数与类,专为小白设计的手把手Python教程,配套100道实战练习题,快速掌握自动化与数据分析基础。

2026.06.03

334

26

Python 设计模式与代码架构教程合集
Python 设计模式与代码架构教程合集

以 Python 语言特性为基础,讲解经典设计模式的 Pythonic 实现方式,涵盖单例模式(模块级/元类/new)、工厂模式与注册表模式、策略模式(函数作为一等公民替代类继承)、观察者模式(信号与事件系统)、装饰器模式(语言原生支持)、代理模式(getattr 动态代理)、依赖注入(dependency-injector 库)、仓储模式(Repository Pattern)在数据层的应用,同时讲解 Python 项目的分层架构(领

2026.05.15

424

19

Python日志系统与监控告警教程大全
Python日志系统与监控告警教程大全

全面讲解 Python 应用的日志管理与监控方案,涵盖 logging 标准库的 Logger/Handler/Formatter/Filter 体系、日志级别规范与分模块配置、dictConfig / fileConfig 声明式配置、loguru 第三方库的简洁用法与结构化输出、日志轮转(RotatingFileHandler/TimedRotatingFileHandler)策略、JSON 格式结构化日志输出、ELK / Loki

2026.05.15

186

27

Python数据库与ORM实践
Python数据库与ORM实践

全面讲解 Python 中数据库操作的技术方案,涵盖 sqlite3 标准库的轻量数据库操作、PyMySQL / psycopg2 连接 MySQL / PostgreSQL、DB-API 2.0 规范与游标操作、SQL 注入防范与参数化查询、SQLAlchemy Core 表达式语言与 ORM 模型定义/查询/关联关系映射、Alembic 数据库迁移管理、连接池(SQLAlchemy Pool / DBUtils)配置与调优、异步数据

2026.05.11

171

19

Python Web框架FastAPI 全栈开发教程合集
Python Web框架FastAPI 全栈开发教程合集

以 FastAPI 为核心,讲解现代 Python Web API 的高效开发方式,涵盖路由定义与路径参数/查询参数/请求体绑定、Pydantic 模型的数据校验与序列化、依赖注入(Depends)系统的分层设计、中间件与 CORS 配置、OAuth2 + JWT 认证流程、后台任务(BackgroundTasks)、WebSocket 实时通信、SQLAlchemy 异步 ORM 集成、自动生成 OpenAPI/Swagger 交互文

2026.05.09

316

23

Python多线程、多进程与并发编程教程大全
Python多线程、多进程与并发编程教程大全

系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务

2026.05.08

114

32

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程