
本文介绍如何获取并可视化 python-docx 默认文档模板中所有内置表格样式,通过遍历 `document.styles` 筛选表格样式,并自动生成样表示例文档,帮助开发者直观选择合适样式。
在使用 python-docx 创建 Word 文档时,为表格应用美观、统一的样式(如 'Table Grid'、'Light Shading')能显著提升专业度。但官方文档并未直接提供“一键列出所有表格样式”的 API,也未在运行时返回可读样式名列表。实际上,python-docx 的表格样式来源于底层默认 Word 模板(Normal.dotm),其可用样式需通过 Document.styles 集合动态提取并过滤。
✅ 正确做法是:创建一个空白文档 → 遍历 doc.styles → 筛选出类型为 WD_STYLE_TYPE.TABLE 的样式 → 排除隐藏样式(如以 _ 开头者)→ 逐个应用于示例表格并插入文档。
以下是一个完整、可运行的教程代码,用于生成包含所有可用表格样式的预览文档:
from docx import Document
from docx.enum.style import WD_STYLE_TYPE
from docx.shared import Pt
# 创建新文档
doc = Document()
# 添加标题
doc.add_heading('Python-docx 表格样式预览', level=1)
doc.add_paragraph('以下为当前环境默认模板中所有可用的表格样式(仅显示可见样式):\n')
# 获取所有表格样式(排除隐藏样式)
table_styles = [
style for style in doc.styles
if style.type == WD_STYLE_TYPE.TABLE and not style.name.startswith('_')
]
table_styles.sort(key=lambda s: s.name) # 按名称排序,便于阅读
# 为每个样式生成一个示例表格
for i, style in enumerate(table_styles, start=1):
doc.add_heading(f'{i}. "{style.name}"', level=2)
# 创建 2×3 示例表(简洁清晰)
table = doc.add_table(rows=2, cols=3)
table.style = style.name
table.autofit = False
table.allow_autofit = False
# 设置固定列宽(避免自动缩放干扰样式展示)
for cell in table.columns[0].cells:
cell.width = Pt(120)
for cell in table.columns[1].cells:
cell.width = Pt(80)
for cell in table.columns[2].cells:
cell.width = Pt(140)
# 填充表头与示例数据
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '列 A'
hdr_cells[1].text = '列 B'
hdr_cells[2].text = '列 C'
data_cells = table.rows[1].cells
data_cells[0].text = '内容 1'
data_cells[1].text = '内容 2'
data_cells[2].text = '内容 3'
# 保存预览文档
doc.save('table_styles_preview.docx')
print(f"✅ 已生成包含 {len(table_styles)} 个表格样式的预览文档:table_styles_preview.docx")? 注意事项与技巧:
立即学习“Python免费学习笔记(深入)”;
- ✅ 样式名称区分大小写,且必须严格匹配(如 'Light Shading Accent 1' 不可写作 'light shading');
- ⚠️ 某些样式(如 'Table Normal')可能视觉上无明显边框,属 Word 默认基础样式,仍有效;
- ? 若需更多样式,可将自定义 .dotx 模板作为 Document(template='my_template.dotx') 加载,样式将自动继承;
- ? 在 Windows 上,若发现样式数量过少(如仅 3–5 个),可能是 python-docx 未正确加载 Office 默认模板 —— 此时建议显式指定模板路径或升级至 python-docx>=0.8.11;
- ? 预览文档生成后,建议用 Microsoft Word 打开(而非 WPS 或在线查看器),以确保样式渲染准确。
通过该方法,你不仅能系统掌握当前环境支持的所有表格样式,还可将其作为团队内部样式指南快速复用。无需查文档、不依赖猜测,所见即所得 —— 这正是自动化样式探索的核心价值。











