最专业网站建设开发,wordpress点赞分享,最优的郑州网站建设,个人主题网站文章目录 一、python-docx简介二、基本使用1、新建与保存word2、写入Word#xff08;1#xff09;打开文档#xff08;2#xff09;添加标题#xff08;3#xff09;添加段落#xff08;4#xff09;添加文字块#xff08;5#xff09;添加图片#xff08;6#xf… 文章目录 一、python-docx简介二、基本使用1、新建与保存word2、写入Word1打开文档2添加标题3添加段落4添加文字块5添加图片6添加表格7添加分页符 3、读取word 一、python-docx简介
python自动化操作Word最常用的模块就是python-docx。
python-docx模块处理word文档处理方式是面向对象的。也就是说python-docx模块会把word文档文档中的段落、文本、字体等都看做对象对对象进行处理就是对word文档的内容处理。
如果需要读取word文档中的文字一般来说程序也只需要认识word文档中的文字信息需要先了解python-docx模块的几个概念。 Word文档一般可以结构化成三个部分 Document表示一个word文档 Paragraph表示word文档中的一个段落 Run表示段落中的文字块 Document - Paragraph - Run三级结构这是最普遍的情况。但是如果Word中存在表格这时会有新的文档结构如下 这时的结构非常类似Excel 可以看成Document-Table-Row/Column-Cells四级结构。
# 安装
pip install python-docx二、基本使用
1、新建与保存word
from docx import Document
document Document() #创建一个空文档
document.save(rD:\自动化\word\道德经.docx) # 保存文件2、写入Word
from docx import Document # 导入docx库
from docx.shared import Inches, Cm # 导入英寸单位 厘米Cm 可用于指定图片大小、表格宽高等# 打开一个document
file_path rD:\自动化\word\道德经.docx
document Document(file_path)# 设置标题段落
document.add_heading(道德经, 0)# 添加段落
p document.add_paragraph(道可道非常道名可名非常名。)
p.add_run(无名天地之始).bold True # 在指定段落后添加粗体文字
p.add_run(有名) # 在指定段落后添加默认格式文字
p.add_run(万物之母。).italic True # 在指定段落后添加斜体文字# 添加1级标题标题1
document.add_heading(故常无欲, level1)# 添加指定格式段落 style后面则是样式
document.add_paragraph(以观其妙, styleIntense Quote)
# 添加段落样式为List Bullet类型
document.add_paragraph(常有欲以观其徼。, styleList Bullet)
# 添加段落样式为List Number类型
document.add_paragraph(此两者同出而异名同谓之玄玄之又玄众妙之门。, styleListNumber)
document.add_paragraph(所以说霸夫老师教Python教得妙。, styleList Number)# 添加图片
img_path rD:\自动化\word\girl.png
document.add_picture(img_path)
document.add_picture(img_path, widthInches(1.25))
document.add_picture(img_path, widthCm(5), heightCm(5))# 待添加到表格的内容
records ((1, 李白, 诗仙),(2, 杜甫, 诗圣),(3, 白居易, 香山居士, 与元稹并称元白, 与刘禹锡合称刘白)
)# 添加一个1行3列的表格, 表格样式为Table Grid
# 表格样式参数可选缺省时为Normal Table
# Normal Table
# Table Grid
# Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6
# Light List、Light List Accent 1 至 Light List Accent 6
# Light Grid、Light Grid Accent 1 至 Light Grid Accent 6
# 太多了其它省略...
table document.add_table(rows1, cols3, styleTable Grid)
# 填充标题行
hdr_cells table.rows[0].cells
hdr_cells[0].text 序号
hdr_cells[1].text 姓名
hdr_cells[2].text 描述# 动态添加数据行
for id, name, desc in records:row_cells table.add_row().cellsrow_cells[0].text str(id)row_cells[1].text namerow_cells[2].text descdocument.add_paragraph(再添加一个表格)
# 待添加到表格的内容
records2 [[姓名, 性别, 家庭地址],[貂蝉, 女, 河北省],[杨贵妃, 女, 贵州省],[西施, 女, 山东省]
]# 添加一个4行3列的表格
table2 document.add_table(rows4, cols3, styleLight List Accent 5)# 填充表格
for 行索引 in range(4):cells table2.rows[行索引].cellsfor 列索引 in range(3):cells[列索引].text str(records2[行索引][列索引])
# 添加分页符
document.add_page_break()
# 保存文档
document.save(file_path)1打开文档
Document()传入参数是打开相应的文档不传参数则是创建一个空文档。
# 创建一个空文档
document Document()
# 加载旧文档用于修改或添加内容
document Document(exist.docx)2添加标题
level等级1-9 也就是标题1-标题9我们可以在旧文档中将标题格式设置好使用Python-docx打开旧文档再添加相应等级标题即可。
document.add_heading(一级标题, level1)3添加段落
段落在 Word 中是基本内容。它们用于正文文本也用于标题和项目列表如项目符号。 添加段落的时候赋值给一个变量方便我们后面进行格式调整。
p document.add_paragraph(道可道非常道名可名非常名。)
# 添加指定格式段落 style后面则是样式
document.add_paragraph(以观其妙, styleIntense Quote)4添加文字块
在指定段落上添加文字块。
p.add_run(无名天地之始).bold True # 在指定段落后添加粗体文字
p.add_run(有名) # 在指定段落后添加默认格式文字
p.add_run(万物之母。).italic True # 在指定段落后添加斜体文字5添加图片
width, height可用于设置图片尺寸缺省时为图片默认大小。
document.add_picture(girl.png)
document.add_picture(girl.png, widthInches(1.25))
document.add_picture(girl.png, widthCm(5), heightCm(5))6添加表格
表格样式style参数可选缺省时默认为Normal Table。 常用样式有 Normal Table Table Grid Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6 Light List、Light List Accent 1 至 Light List Accent 6 Light Grid、Light Grid Accent 1 至 Light Grid Accent 6
# 添加一个4行3列的表格
table document.add_table(rows4, cols3)
table document.add_table(rows4, cols3, styleLight Shading Accent 2)7添加分页符
# 添加分页符
document.add_page_break()3、读取word 文档.paragraphs可以获取文档中所有段落数据不包含表格这里注意一点图片跟分页符也会计算在段落数据内
段落.runs 可以获取段落的所有文字块
文档.tables可以获取文档中所有表格数据
文档.save (path) 可以用于保存修改后的文档本身同样也可在将打开的文档另存为新文档from docx import Document
doc Document(rD:\自动化\word\道德经.docx)# 读取 word 中所有内容
for p in doc.paragraphs:print(p, p.text)# 读取指定段落中的所有run
for run in doc.paragraphs[1].runs:print(run, run.text)# 读取 word中所有表格内容
for 表格 in doc.tables:print(表格)for 行 in 表格.rows:for 单元格 in 行.cells:print(单元格.text)doc.save(rD:\自动化\word\另存为新文档.docx)