前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python-docx 基础用法讲解

python-docx 基础用法讲解

原创
作者头像
IT蜗壳-Tango
发布2024-01-22 22:46:35
14300
代码可运行
发布2024-01-22 22:46:35
举报
运行总次数:0
代码可运行

前言

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

add_paragraph

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

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

引自《红楼梦》

代码语言:python
代码运行次数:0
复制
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
image-20240122221117415

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

代码语言:python
代码运行次数:0
复制
import docx

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

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

add_heading

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

代码语言:python
代码运行次数:0
复制
import docx

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

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

add_picture

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

add_page_break

这个方法是添加分页符

代码语言:python
代码运行次数:0
复制
file.add_page_break()
image-20240122222332208
image-20240122222332208

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

add_table

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

代码语言:python
代码运行次数:0
复制
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
image-20240122223815939

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

代码语言:python
代码运行次数:0
复制
file = docx.Document('demo4.docx')
table = file.tables[0]
for row in table.rows:
    for cell in row.cells:
        print(cell.text)
image-20240122224032722
image-20240122224032722

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

代码语言:python
代码运行次数:0
复制
for p in file.paragraphs:
    print(p.text)
image-20240122224246928
image-20240122224246928

最后

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

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


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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • add_paragraph
  • add_heading
  • add_picture
  • add_page_break
  • add_table
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档