Python 操作 Word 详解(python-docx)

1 概述

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

2 快速入门

from docx import Document
from docx.shared import Inches

# 新建一个Word文档
document = Document()
# 添加标题,标题级别设置为0级(标题级别范围:0~9)
document.add_heading('Document Title', 0)
# 添加段落
p = document.add_paragraph('A plain paragraph having some ')
# 追加段落内容,并设置格式
p.add_run('bold').bold = True  # 追加段落内容“bold”,并设置为粗体
p.add_run(' and some ')  # 追加段落内容“ and some ”
p.add_run('italic.').italic = True  # 追加段落内容“italic.”,并设置为斜体
# 添加标题,标题级别默认为1级(标题级别范围:0~9)
document.add_heading('Heading, level 1')
# 添加段落,并设置样式为引用
document.add_paragraph('Intense quote', style='Intense Quote')
# 添加段落,并设置样式为无序列表
document.add_paragraph('first item in unordered list', style='List Bullet')
# 添加段落,并设置样式为有序列表
document.add_paragraph('first item in ordered list', style='List Number')
# 添加图片,并设置图片宽、高分别为1.25、1.65英寸
document.add_picture('优快云.png', width=Inches(1.25), height=Inches(1.65))
# 准备数据
data = [['姓名', '语文', '数学', '英语'],
        ['张三', 82, 96, 88],
        ['李四', 92, 86, 66],
        ['王五', 62, 98, 80]]
# 添加表格
table = document.add_table(rows=4, cols=4)
for i, row in enumerate(table.rows):
    for j, cell in enumerate(row.cells):
        cell.text = str(data[i][j])
# 添加分页符
document.add_page_break()
# 保存文档
document.save('test.docx')

在这里插入图片描述

3 深入理解文本对象(object),并设置属性(properties)

3.1 块级对象(block-level object)

  • 段落是 Word 中的主要块级对象。
  • 块级对象将其包含的文本在其左右边缘之间流动,每次文本超出其右边界时添加额外的一行。对于段落,边界通常是页边距,但如果页面按列布局,也可以是列边界,如果段落位于表格单元格内,则可以是单元格边界。
  • 表也是一个块级对象。
  • 块级对象的属性指定了它在页面上的位置,例如段落前后的缩进和空格。

3.2 内联级对象(inline-level object)

  • 内联级对象是块级对象的一部分。例如以粗体显示的单词或全大写的句子。最常见的内联级对象是 run。块级对象的所有内容都在内联级对象中。通常,一个段落包含一个或多个 run,每个 run 都包含段落文本的某些部分。
  • 内联级对象的属性指定了内容显示的字体,如字体、字体大小、粗体和斜体。

3.3 块级对象属性(block-level object properties)

  • 块对象一般包括:段落(paragraph)、图片(picture)、表(table)、标题(heading)。
  • 常用属性:水平对齐(horizontal alignment)、缩进(indentation)、制表位(tab stops)、段落间距(paragraph spacing)、行间距(line spacing)、分页属性(pagination properties)。

水平对齐(horizontal alignment)

WD_ALIGN_PARAGRAPH 存储了多种对齐格式,例如:LEFT(左对齐)、CENTER(居中对齐)、RIGHT(右对齐)。 更多参见:https://python-docx.readthedocs.io/en/latest/api/enum/WdAlignParagraph.html#wdparagraphalignment

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH

# 新建一个Word文档
document = Document()
# 添加段落
paragraph = document.add_paragraph('python-docx')
# 设置段落格式
paragraph_format = paragraph.paragraph_format
# 设置段落居中对齐
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 保存文档
document.save('test.docx')

缩进(indentation)

from docx import Document
from docx.shared import Pt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值