写点什么

python 操作 word 文件

用户头像
wjchenge
关注
发布于: 2020 年 08 月 17 日
python操作word文件



需求

需要把图1格式的word文件中的部分内容填写到图2的表格中,存在大量需要复制粘贴的操作,用python批量读取处理,省时省力。



图1



图2

准备



使用python-docx类库

pip install python-docx

word文档与python代码放在同级目录下

获取用户需求标题



代码如下:



from docx import Document
def print_head(path):
# 获取文档对象
obj = Document(path)
# 与文档中的段落相对应的段落实例列表,按文档顺序排列。
for p in obj.paragraphs:
# 获取样式信息
style_name = p.style.name
# 打印4级标题信息
if style_name.startswith('Heading 4'):
print(style_name, p.text, sep=':')
print_head('详细设计说明书.docx')



结果如下:



官方文档地址:https://python-docx.readthedocs.io/en/latest/(需科学上网)

p.style.name有如下默认值:



  • Normal

  • Body Text

  • Body Text 2

  • Body Text 3

  • Caption

  • Heading 1

  • Heading 2

  • Heading 3

  • Heading 4

  • Heading 5

  • Heading 6

  • Heading 7

  • Heading 8

  • Heading 9

  • Intense Quote

  • List

  • List 2

  • List 3

  • List Bullet

  • List Bullet 2

  • List Bullet 3

  • List Continue

  • List Continue 2

  • List Continue 3

  • List Number

  • List Number 2

  • List Number 3

  • List Paragraph

  • Macro Text

  • No Spacing

  • Quote

  • Subtitle

  • TOCHeading

  • Title



获取软件需求功能描述



代码如下:

from docx import Document
def get_all_tables_text(path):
document = Document(path)
# 与文档中的表格相对应的表格实例的列表,按文档顺序排列。
all_tables = document.tables
for table in all_tables:
for row in table.rows:
# 只打印功能描述相关的内容标识
b = False
for cell in row.cells:
if (cell.text == "功能描述"):
b = True
if (b and cell.text != "功能描述"):
# 因为表格中的内容存在换号,内容前后加上||便于确定那几行需要相同表格的内容
print('||' + cell.text + '||')
get_all_tables_text('详细设计说明书.docx')



结果如下:



发布于: 2020 年 08 月 17 日阅读数: 56
用户头像

wjchenge

关注

还未添加个人签名 2018.07.27 加入

还未添加个人简介

评论

发布
暂无评论
python操作word文件