携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情
前言
Microsoft (MS) Office 是日常中最常见的软件之一,而其中的 MS Word 几乎是可编辑文档的事实标准。使用自动化脚本创建 docx 文档有助于快速生成许多具有固定格式的重复性文档。
Python 创建 Word 文档
在本节中,我们将学习如何使用 Python 以编程方式生成完整的 Word 文档,主要使用 python-docx 库完成创建 docx 文档任务。
首先,导入 python-docx 和其它所需库:
>>> import docx
>>> from datetime import datetime
使用要存储在 Word 文档中的数据定义字典 context,为进一步在文档中展示数据做准备:
>>> context = {'date':datetime.now(), 'user': '001', 'movie_name':['007', 'Spiderman', 'Batman'], 'rating':[5.4, 5.6, 5.5]}
创建文档并添加标题,这种情况下会自动设置文本样式,创建一个新的 docx 文档并为其设定一个标题—— “Movie Rating”:
>>> document = docx.Document()
>>> document.add_heading('Movie Rating', 0)
<docx.text.paragraph.Paragraph object at 0x7f711bd89a50>
Word 文档创建的基本方式是将文档分成若干段落,每个段落都被分成若干部分 (run)。run 是共享相同样式的段落中的一部分。添加文档创建的日期,且使用斜体显示日期文本(因此可以说该段中包含两个 run):
>>> paragraph = document.add_paragraph('Date: ')
>>> paragraph.add_run(str(context['date'])).italic = True
默认情况下,创建一个新段落将具有默认的文本样式,但我们也可以添加新的 run 来更改它。例如,我们使用默认段落为文本 Date: 添加了默认样式,作为第一个 run,并在此之后添加了另一个 run,其中包含文档创建时间并且格式修改为斜体。
添加有关用户和有关电影评分信息:
>>> paragraph = document.add_paragraph('User name: ')
>>> paragraph.add_run(str(context['user'])).italic = True
>>> paragraph = document.add_paragraph('Movies see in the last 30 days: ')
将每部电影均添加为列表中的项目:
>>> for movie, rating in zip(context['movie_name'], context['rating']):
... document.add_paragraph('User rating for {} is {}.'.format(movie, rating), style='List Bullet')
...
<docx.text.paragraph.Paragraph object at 0x7f711bd89e50>
<docx.text.paragraph.Paragraph object at 0x7f711bd89a50>
<docx.text.paragraph.Paragraph object at 0x7f711bd89e50>
存储电影评分总的数据量,其中数量值使用加粗样式,并将文档存储在文件系统中。添加总电影数并保存文件 word.docx:
>>> paragraph = document.add_paragraph('Total movies: ')
>>> paragraph.add_run(str(len(context['movie_name']))).bold = True
>>> document.save('word.docx')
打开 word.docx 文件进行检查: