安装
docx是一个非标准库,因此需要自行安装,安装过程并不困难,Windows/Mac用户均可以在命令行(CMD)/终端(Terminal)中使用pip安装
注意调用时用的是docx,安装时用的是python-docx
pip install python-docx
前置知识
Word中一般可以结构化成三个部分:
- 文档Document
- 段落Paragraph
- 文字块Run
也就是Document - Paragraph - Run三级结构,这是最普遍的情况。其中文字块Run最难理解,并不能完成按照图中所示,两个符号之间的短句是文字块。
通常情况下可以这么理解,但假如这个短句子中有多种不同的样式,则会被划分成多个文字块。
- 以图中的第一个黄圈为例,如果给这个短句添加一些细节👇
此时就有4个文字块
- 同时有时候一个Word文档中是存在表格的,这时就会新的文档结构产生
这时的结构非常类似Excel,可以看成Document - Table - Row/Column - Cell四级结构
读取word
打开word
from docx import Document
path = r'C:\Users\Administrator\Desktop\yxy.docx'
doc = Document(path)
获取段落/全部段落文本内容
一个word文件由一个或者多个paragraph段落组成
para = doc.paragraphs[0] #输出第一段落
print(para.text)
for para in doc.paragraphs: #输出所有段落
print(para.text)
获取文字块文本内容
一个paragraph段落由一个或者多个run文字块组成
para = doc.paragraphs[1] #打开输出第二段落
run = para.runs[3] #打开第四个文字块
print(run.text)
获取表格中所有文字
for table in doc.tables: #输出所有表格
for row in table.rows:
for cell in row.cells:
print(cell.text)
写入word
创建word
只要不指定路径,就默认创建新word文件
from docx import Document
doc = Document()
保存文件
需要完整的保存路径,默认存到py脚本同文件夹下
doc.save('路径+文件名.docx')
设置文本样式
docx.enum.style.WD_STYLE_TYPE是一个枚举类型,用于指定样式的类型。例如,可以使用WD_STYLE_TYPE.PARAGRAPH来指定一个段落样式。
docx.shared.Pt是一个类,用于表示磅数(point)的大小。在文档处理中,通常使用磅作为字体大小的单位。
docx.enum.text.WD_PARAGRAPH_ALIGNMENT是一个枚举类型,用于指定段落的对齐方式。例如,可以使用WD_PARAGRAPH_ALIGNMENT.CENTER来指定段落居中对齐。其他常用
WD_PARAGRAPH_ALIGNMENT.LEFT:左对齐
WD_PARAGRAPH_ALIGNMENT.RIGHT:右对齐
WD_PARAGRAPH_ALIGNMENT.JUSTIFY:两端对齐
WD_PARAGRAPH_ALIGNMENT.JUSTIFY_LOW:两端对齐,但最后一行左对齐
from docx.enum.style import WD_STYLE_TYPE
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
new_style = doc.styles.add_style('我新建的样式',WD_STYLE_TYPE.PARAGRAPH)
new_style.font.name = 'Arial'
new_style.font.bold = True # 加粗
new_style.font.italic = True # 斜体
new_style.font.underline = True # 下划线
new_style.font.strike = True # 删除线
new_style.font.shadow = True # 阴影
new_style.font.size = Pt(20) # 字号
new_style.font.color.rgb = RGBColor(255, 0, 0) # 字体颜色
new_style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
修改标题类型
- 查看已有的标题类型
for style in doc.styles:
print(style.name)
- 修改标题类型
para = doc.paragraphs[0]
para.style = '我新建的样式'
修改后实例