目录
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