python-docx如何设置默认字体大小

引言

在使用 python-docx 库处理 Word 文档时,设置默认字体大小是提升文档一致性的关键步骤。本文将详细讲解如何通过修改内置样式(如 Normal 样式)来全局设置字体大小,并解决常见问题。

一、核心方法:修改 Normal 样式

步骤详解

  1. 导入必要模块

    from docx import Document
    from docx.shared import Pt
    from docx.oxml.ns import qn
    
  2. 创建文档并获取样式

    doc = Document()
    style = doc.styles['Normal']  # 获取默认的 Normal 样式
    
  3. 设置字体大小

    font = style.font
    font.size = Pt(12)  # 设置默认字体大小为 12 磅
    
  4. 设置中文字体(可选)

    # 针对中文内容,需额外设置 eastAsia 字体
    style._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    

完整代码示例

from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn

# 创建新文档
doc = Document()

# 修改 Normal 样式
style = doc.styles['Normal']
font = style.font
font.name = 'Arial'          # 西文字体
font.size = Pt(12)           # 字体大小
style._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 中文字体

# 添加内容(自动应用默认样式)
doc.add_heading('标题', level=1)
doc.add_paragraph('正文内容')

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

二、常见问题解决

1. 样式未生效

  • 原因:未在添加内容前设置样式,或内容覆盖了默认样式。
  • 解决方案
    • 确保在创建文档后立即设置样式。
    • 对于已有文档,遍历所有段落并强制应用样式:
      for paragraph in doc.paragraphs:
          paragraph.style = doc.styles['Normal']
      

2. 中文字体显示为方框

  • 原因:未正确设置 w:eastAsia 属性。
  • 解决方案
    # 同时设置西文和中文字体
    style.font.name = 'Arial'
    style._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    

3. 表格字体未继承默认样式

  • 原因:表格单元格默认不继承 Normal 样式。
  • 解决方案:手动设置表格字体:
    table = doc.add_table(rows=2, cols=2)
    for row in table.rows:
        for cell in row.cells:
            for paragraph in cell.paragraphs:
                paragraph.style = doc.styles['Normal']
    

三、高级技巧

1. 批量设置已有文档的字体

from docx import Document

doc = Document('input.docx')
for paragraph in doc.paragraphs:
    paragraph.style = doc.styles['Normal']
doc.save('output.docx')

2. 自定义样式(如标题)

# 创建自定义标题样式
style = doc.styles.add_style('CustomTitle', WD_STYLE_TYPE.PARAGRAPH)
font = style.font
font.name = 'Microsoft YaHei'
font.size = Pt(16)
font.bold = True

3. 使用模板文件

# 基于模板创建文档
doc = Document('template.docx')
# 后续内容会自动继承模板中的样式

四、验证效果

检查文档样式

  1. 打开生成的 output.docx
  2. 右键选择段落,查看字体设置是否为预期值。
  3. 确保中英文混合内容均正确显示。

调试技巧

  • 打印样式信息
    print(doc.styles['Normal'].font.name)
    print(doc.styles['Normal'].font.size)
    

五、总结

通过修改 Normal 样式,可以高效设置文档的默认字体大小。关键点包括:

  1. 优先设置样式,再添加内容。
  2. 中文字体需额外处理 w:eastAsia 属性。
  3. 遇到问题时,检查样式继承关系和代码执行顺序。

掌握这些方法后,您可以轻松统一文档风格,提升自动化办公效率。

你可能感兴趣的:(Python,python,word)