怎么在Python中利用python-docx对word文档进行读写

怎么在Python中利用python-docx对word文档进行读写?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、安装包

pip3installpython-docx

二、创建word文档

下面是在官文示例基础上对个别地方稍微修改,并加上函数的使用说明

fromdocximportDocument
fromdocx.sharedimportInches

document=Document()

#添加标题,并设置级别,范围:0至9,默认为1
document.add_heading('DocumentTitle',0)

#添加段落,文本可以包含制表符(\t)、换行符(\n)或回车符(\r)等
p=document.add_paragraph('Aplainparagraphhavingsome')
#在段落后面追加文本,并可设置样式
p.add_run('bold').bold=True
p.add_run('andsome')
p.add_run('italic.').italic=True

document.add_heading('Heading,level1',level=1)
document.add_paragraph('Intensequote',style='IntenseQuote')

#添加项目列表(前面一个小圆点)
document.add_paragraph(
'firstiteminunorderedlist',style='ListBullet'
)
document.add_paragraph('seconditeminunorderedlist',style='ListBullet')

#添加项目列表(前面数字)
document.add_paragraph('firstiteminorderedlist',style='ListNumber')
document.add_paragraph('seconditeminorderedlist',style='ListNumber')

#添加图片
document.add_picture('monty-truth.png',width=Inches(1.25))

records=(
(3,'101','Spam'),
(7,'422','Eggs'),
(4,'631','Spam,spam,eggs,andspam')
)

#添加表格:一行三列
#表格样式参数可选:
#NormalTable
#TableGrid
#LightShading、LightShadingAccent1至LightShadingAccent6
#LightList、LightListAccent1至LightListAccent6
#LightGrid、LightGridAccent1至LightGridAccent6
#太多了其它省略...
table=document.add_table(rows=1,cols=3,style='LightShadingAccent2')
#获取第一行的单元格列表
hdr_cells=table.rows[0].cells
#下面三行设置上面第一行的三个单元格的文本值
hdr_cells[0].text='Qty'
hdr_cells[1].text='Id'
hdr_cells[2].text='Desc'
forqty,id,descinrecords:
#表格添加行,并返回行所在的单元格列表
row_cells=table.add_row().cells
row_cells[0].text=str(qty)
row_cells[1].text=id
row_cells[2].text=desc

document.add_page_break()

#保存.docx文档
document.save('demo.docx')

创建的demo.docx内容如下:

怎么在Python中利用python-docx对word文档进行读写

三、读取word文档

fromdocximportDocument

doc=Document('demo.docx')

#每一段的内容
forparaindoc.paragraphs:
print(para.text)

#每一段的编号、内容
foriinrange(len(doc.paragraphs)):
print(str(i),doc.paragraphs[i].text)

#表格
tbs=doc.tables
fortbintbs:
#行
forrowintb.rows:
#列
forcellinrow.cells:
print(cell.text)
#也可以用下面方法
'''text=''
forpincell.paragraphs:
text+=p.text
print(text)'''

运行结果:

DocumentTitle
Aplainparagraphhavingsomeboldandsomeitalic.
Heading,level1
Intensequote
firstiteminunorderedlist
seconditeminunorderedlist
firstiteminorderedlist
seconditeminorderedlist
DocumentTitle
Aplainparagraphhavingsomeboldandsomeitalic.
Heading,level1
Intensequote
firstiteminunorderedlist
seconditeminunorderedlist
firstiteminorderedlist
seconditeminorderedlist



Qty
Id
Desc
101
Spam
422
Eggs
631
Spam,spam,eggs,andspam
[Finishedin0.2s]

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。

发布于 2021-03-24 01:23:17
收藏
分享
海报
0 条评论
155
上一篇:怎么在vue项目中利用微信JS-SDK实现一个分享功能 下一篇:怎么在python中利用pdfminer3k读取PDF文档
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码