python-docx 基础用法讲解

Python
240
0
0
2024-04-27

前言

我们上一篇文章中使用python-docx生成了一个word文档,里面涉及到了一些基础用法,我们这篇做一个查漏补缺,将里面的一些方法做一个简单的说明。

add_paragraph

这个方法是添加一个段落,我们找一首古诗,然后通过这个方式写入到word文档中

世人都晓神仙好,惟有功名忘不了! 古今将相在何方?荒冢一堆草没了。 世人都晓神仙好,只有金银忘不了! 终朝只恨聚无多,及到多时眼闭了。 世人都晓神仙好,只有姣妻忘不了! 君生日日说恩情,君死又随人去了。 世人都晓神仙好,只有儿孙忘不了! 痴心父母古来多,孝顺儿孙谁见了?
引自《红楼梦》

代码语言:python

复制

import docx

file = docx.Document()
file.add_paragraph("世人都晓神仙好,惟有功名忘不了!")
file.add_paragraph("古今将相在何方?荒冢一堆草没了。")
file.add_paragraph("世人都晓神仙好,只有金银忘不了!")
file.add_paragraph("终朝只恨聚无多,及到多时眼闭了。")
file.add_paragraph("世人都晓神仙好,只有姣妻忘不了!")
file.add_paragraph("君生日日说恩情,君死又随人去了。")
file.add_paragraph("世人都晓神仙好,只有儿孙忘不了!")
file.add_paragraph("痴心父母古来多,孝顺儿孙谁见了?")
file.save("好了歌.docx")
print("Word 生成完成")

代码非常简单,运行后的效果如下,每一行就是一个段落。

image-20240122221117415

如果我们想打开一个文件,代码如下

代码语言:python

复制

import docx

file = docx.Document("好了歌.docx")

和创建文件不同的地方是在Document这个方法里面多了一个我们要打开的文件对象。

add_heading

这个方法是添加标题,我们尝试将好了歌/曹雪芹添加到刚刚生成的word文档中。

代码语言:python

复制

import docx

file = docx.Document("好了歌.docx")
file.add_heading("好了歌/曹雪芹", 0)
file.save("好了歌.docx")

image-20240122221745774

我们看到这个方法虽然脚heading但它并不会自动的添加到文档的开头位置,这个需要注意一下。我指定了level为0,它默认是带下划线的。

add_picture

这个方法是向文中添加图片,这里就演示了,大家可以参考上一篇文章中的代码。

add_page_break

这个方法是添加分页符

代码语言:python

复制

file.add_page_break()

image-20240122222332208

我们可以看到它新创建了一个空白页面。

add_table

这个方法是用来在word中创建表格的,主要有两个参数:rows代表行数,cols代表列数。我们来看一下,如果将上面那首诗用表格的形式展现该如何写

代码语言:python

复制

import docx

file = docx.Document()
table = file.add_table(rows=9, cols=2)
table.cell(0, 0).text = "世人都晓神仙好,"
table.cell(0, 1).text = "惟有功名忘不了!"

data = """\
  古今将相在何方?荒冢一堆草没了。
  世人都晓神仙好,只有金银忘不了!
  终朝只恨聚无多,及到多时眼闭了。
  世人都晓神仙好,只有姣妻忘不了!
  君生日日说恩情,君死又随人去了。
  世人都晓神仙好,只有儿孙忘不了!
  痴心父母古来多,孝顺儿孙谁见了?
"""


for i, line in enumerate(data.split('\n')):
    lin_str = line.strip()
    if not lin_str:
        continue
    table.cell(i+1, 0).text = lin_str[:8]
    table.cell(i+1, 1).text = lin_str[8:]

file.save('demo4.docx')

cell接收的两个参数分别代表行和列

这里为了省事就直接用循环来讲数据填充进去了,运行后效果如下

image-20240122223815939

我们也可以通过下面这样的方式来读取文档内容

代码语言:python

复制

file = docx.Document('demo4.docx')
table = file.tables[0]
for row in table.rows:
    for cell in row.cells:
        print(cell.text)

image-20240122224032722

如果不是表格的情况下也可以用下面这种方式

代码语言:python

复制

for p in file.paragraphs:
    print(p.text)

image-20240122224246928

最后

今天的内容就是这些了,我们简单的补充说明了一下这个库的基本用法,后面我们再把字体设置相关的内容说明一下,如果你对办公自动化感兴趣欢迎持续关注我,我们一起提高办公效率永不加班。

我是Tango,一个热爱分享技术的程序猿我们下期见。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!