如何在 python-docx 中查看并应用所有内置表格样式

10次阅读

如何在 python-docx 中查看并应用所有内置表格样式

本文详解如何枚举、预览并正确使用 python-docx 默认模板中所有可用的表格样式,通过程序化生成样式对照表,帮助开发者快速选择合适的表格外观。

在使用 python-docx 创建 word 文档时,为表格设置样式(如 ‘table Grid’)可显著提升文档专业度。但官方文档并未直接提供完整样式名称列表,也未内置 document.styles.table_styles 这类便捷接口——表格样式需从文档的默认模板(default.docx)中动态加载,且仅当样式实际存在于当前 Document 对象的样式库中时才可被赋值

幸运的是,python-docx 的默认模板(位于 docx/templates/default.docx)预置了约 20+ 种常用表格样式,包括 ‘Table Grid’、’Light Shading’、’Medium List 1’、’Dark List’ 等。要完整列出并预览它们,最可靠的方式是:创建一个空白文档 → 遍历其 styles 集合中类型为 WD_STYLE_TYPE.TABLE 的样式 → 为每个样式生成一个示例表格

以下是一个完整的样式枚举与可视化脚本:

from docx import Document from docx.enum.style import WD_STYLE_TYPE from docx.shared import Pt  # 创建新文档用于样式探测 doc = Document()  # 提取所有表格样式名称(去重 + 排序) table_style_names = [     style.name for style in doc.styles      if style.type == WD_STYLE_TYPE.TABLE ] table_style_names.sort()  # 按字母序便于浏览  print("✅ 共检测到", len(table_style_names), "个可用表格样式:") for i, name in enumerate(table_style_names, 1):     print(f"{i:2d}. {name}")  # 可选:生成样式对照文档(推荐用于实际选型) preview_doc = Document() preview_doc.add_heading('Python-docx 表格样式预览', level=1)  for style_name in table_style_names:     preview_doc.add_paragraph(f"▸ 样式名称:'{style_name}'", style='Heading 3')      # 创建 2×2 示例表格     table = preview_doc.add_table(rows=2, cols=2)     table.style = style_name  # 自动跳过无效样式(不会报错)     table.autofit = False     table.allow_autofit = False      # 填充内容增强可读性     table.cell(0, 0).text = '行1列1'     table.cell(0, 1).text = '行1列2'     table.cell(1, 0).text = '行2列1'     table.cell(1, 1).text = '行2列2'      # 统一单元格宽度(避免因样式自动缩放导致视觉混乱)     for row in table.rows:         for cell in row.cells:             cell.width = Pt(120)  preview_doc.save('table_styles_preview.docx') print("n? 已生成预览文档:table_styles_preview.docx —— 打开即可直观对比所有样式效果!")

? 关键注意事项

立即学习Python免费学习笔记(深入)”;

  • ✅ doc.styles 返回的是当前文档所继承的完整样式集(含段落、字符、表格等),务必用 WD_STYLE_TYPE.TABLE 过滤;
  • ⚠️ 并非所有样式名都“开箱即用”:若文档由自定义模板创建,或样式被手动删除,则对应名称将不在列表中;
  • ⚠️ 赋值 table.style = ‘xxx’ 时,若 ‘xxx’ 不存在,python-docx 静默忽略(不抛异常),表格将回退至默认无样式状态——因此建议先校验再使用;
  • ? 实际项目中,推荐将常用样式名存为常量(如 TABLE_STYLE_LIGHT_SHADING = ‘Light Shading Accent 1’),提高可维护性;
  • ? 如需扩展样式库,可将 .dotx 模板路径传入 Document(template_path),再从中提取样式。

掌握该方法后,你不仅能快速探索全部内置选项,还能构建自动化样式测试流程,大幅提升文档生成的可控性与一致性。

text=ZqhQzanResources