Python实现自动化办公:Python对Word文档的基本操作(python-docx)
Posted 笠li笠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实现自动化办公:Python对Word文档的基本操作(python-docx)相关的知识,希望对你有一定的参考价值。
Python对Word的基本操作
文章目录
一、docx模块
1、官方文档
docx python库官方文档:python-docx 0.8.11 documentation
2、安装docx模块
pip3 install python-docx
注意:
此处安装不是pip3 install docx,如若使用pip3 install docx,则会出现以下报错。
File "D:\\python\\lib\\site-packages\\docx.py", line 30, in <module>
from exceptions import PendingDeprecationWarning
ModuleNotFoundError: No module named 'exceptions'
# ModuleNotFoundError:没有名为“exceptions”的模块
解决方法:
卸载之前安装的docx:pip3 uninstall docx
重新安装python-docx模块:pip3 install python-docx
二、基本函数的使用方法
1、读取
获取Word文档:document = Document('xx.docx')
获取所有段落:paras= document.paragraphs
获取段落内容:txt = para.text
获取所有行:runs = para.runs
获取行内容:run_txt = run.text
获取所有表格:tables = document.tables
获取表格中的所有行:rows = table.rows
获取行的所有单元格:cells = row.cells
获取单元格的值:txt = cell.text
2、写入
设置文档的基础字体:document.styles['Normal'].font.name = 'xx'
设置中文字体:document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),'xx')
插入图片:document.add_picture('图片',width=Inches(num)) # 英寸
插入表格:table = document.add_table(rows=num,cols=num,style='Table Grid') # 行、列、格式
添加表格内容(单元格):table.cell(x,y).text = 'xx'
合并表格单元格:table.cell(x1,y1).merge(table.cell(x2,y2)) # 左上角坐标,右下角坐标
初始化段落:para = document.add_paragraph()
设置对齐:para.alignment = 'xx'
设置段前间距:para.space_after = Pt(num)
设置段后间距:para.space_before = Pt(num)
添加行至段落:run = para.add_run('xx')
设置行字体:run.font.name = 'xx'
设置中文字体:run.element.rPr.rFonts.set(qn('w:eastAsia'),'xx')
设置行字体大小:run.font.size = Pt(num)
设置行字体是否加粗:run.bold = True # 是:True 否:False
添加分页符:document.add_page_break()
保存文档:document.save('xx.docx')
Python库设置对齐的对应方法:
设置段落格式 | 功能 |
---|---|
WD_ALIGN_PARAGRAPH.CENTER | 水平居中对齐 |
WD_ALIGN_PARAGRAPH.LEFT | 左对齐 |
WD_ALIGN_PARAGRAPH.RIGHT | 右对齐 |
三、使用案例
1、读取段落和行
Word文档内容:
符号↓即为换行,回车即为段落
代码如下:
from docx import Document # 可用于Word文档的定义
document = Document('python.docx') #获取Word文档
paras= document.paragraphs # 获取所有段落
for para in paras: # 获取每一个段落
txt = para.text # 获取每一个段落的内容
print(txt,'\\n')
print('#------------------------#')
for para in paras: # 获取每个段落
for run in para.runs: # 获取段落的每一行
run_txt = run.text # 获取每一行的内容
print(run_txt,'\\n')
效果如下图所示:
2、读取表格
Word文档内容:
使用docx库读取word表格首先要定位其中一个表格,然后获取表格的行,再获取表格中每个单元格的内容。操作方法类似于对Excel的遍历。在此篇博客中的openpyxl遍历Excel工作表(或指定区域)有记录遍历方法:Python实现自动化办公(一):Python对Excel的基本操作
代码如下:
from docx import Document # 可用于Word文档的定义
document = Document('python.docx') #获取Word文档
tables = document.tables # 获取Word文档中的所有表格
for table in tables: # 遍历表格
for row in table.rows: # 遍历表格的行
for cell in row.cells: # 遍历行的所有单元格
txt = cell.text # 获取单元格的值
print(txt,end = ' ')
print('\\n')
效果如下:
3、写入word
1、导包
常用的方法:
from docx import Document # 可用于Word文档的定义
from docx.enum.text import WD_ALIGN_PARAGRAPH # 可用于定义格式
from docx.shared import Pt # 可用于定义间距或字体格式(磅数)
from docx.oxml.ns import qn # 可用于设置中文格式
from docx.shared import Inches # 可用于设置图片尺寸
2、案例
代码如下:
from docx import Document # 可用于Word文档的定义
from docx.enum.text import WD_ALIGN_PARAGRAPH # 可用于定义格式
from docx.shared import Pt # 可用于定义间距或字体格式(磅数)
from docx.oxml.ns import qn # 可用于设置中文格式
from docx.shared import Inches # 可用于设置图片尺寸
document = Document()
document.styles['Normal'].font.name = '宋体' # 设置文档的基础字体
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),'宋体')
para_one = document.add_paragraph() # 初始化第一个自然段
para_one.alignment = WD_ALIGN_PARAGRAPH.CENTER
run_1 = para_one.add_run('Python') # 添加行至第一段(题目)
run_1.font.size = Pt(22) # 设置大小
run_1.bold = True # 设置粗体
para_two = document.add_paragraph() # 初始化第二个自然段
run_2 = para_two.add_run('CSDN:') # 添加行至第二段
run_2.font.size = Pt(15) # 设置大小
table = document.add_table(rows=2,cols=2,style='Table Grid') # 插入表格
#添加单元格内容
table.cell(0,0).text = 'Word'
table.cell(0,1).text = '对应库'
table.cell(1,0).text = 'Python'
table.cell(1,1).text = 'python-docx'
para_three = document.add_paragraph() # 初始化第三个自然段
para_four = document.add_paragraph() # 初始化第四个自然段
para_four.alignment = WD_ALIGN_PARAGRAPH.CENTER
run_4 = para_four.add_run('人生苦短,我学Python') # 添加行至第二段
run_4.font.size = Pt(22) # 设置大小
document.add_page_break() # 添加分页符
document.add_picture('picture.jpg',width=Inches(5)) # 插入图片
document.save('python.docx')
效果如下:
我是一名学生,目前正在学习中,本篇文章是我的学习笔记,如有错误的话还请指正。
以上是关于Python实现自动化办公:Python对Word文档的基本操作(python-docx)的主要内容,如果未能解决你的问题,请参考以下文章
Python实现办公自动化读书笔记——自动化处理Word文档
最全总结 | 聊聊 Python 办公自动化之 Word(上)
python自动化高效办公第二期,带你项目实战{excel数据处理批量化生成word模板pdf和ppt等自动化操作}