侵权投诉

如何在环境安装使用Python操作word

Android编程精选 2021-09-05 15:13 次阅读

作者丨超级大洋葱806

https://tangxing.blog.csdn.net/article/details/108418066

环境安装使用Python操作word大部分情况都是写操作,也有少许情况会用到读操作,在本次教程中都会进行讲解,本次课程主要用到以下4个库,请大家提前安装。

升级pip(便于安装最新库)

python -m pip install -U pip setuptools

python-docx(我们大部分操作都是使用此库)

安装方法:

pip install python-docx

使用方法:

from docx import Document

from docx.shared import Inches

官方文档:

https://python-docx.readthedocs.io/en/latest/index.html

win32com(主要用作doc转docx格式转换用)

安装方法:

pip install pypiwin32

使用方法:

import win32com

from win32com.client import Dispatch, constants

官方文档:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia

mailmerge(用作按照模板生成大量同类型文档)

安装方法:

pip install docx-mailmerge

使用方法:

from mailmerge import MailMerge

官方文档:

https://pypi.org/project/docx-mailmerge/

matplotlib(Python 的绘图库,本期简单讲解,后期会有专门的课程)

安装方法:

pip install matplotlib

使用方法:

import matplotlib.pyplot as plt

官方文档:

https://matplotlib.org/3.2.2/tutorials/introductory/sample_plots.html

Python-docx 新建文档示例代码1:

from docx import Document

document = Document()

document.save(‘new.docx’)

示例代码 0.1 Python-docx新建文档.py:

from docx import Document

def GenerateNewWord(filename):

document = Document()

document.save(filename)

if __name__ == “__main__”:

print(“大家好!我们今天开始学习word文档自动化”)

print(“我们先来直接生成一个名为‘new.docx’的文档”)

document = Document()

document.save(‘new.docx’)

print(“没错,里面什么都没有”)

# 我是华丽的分隔符

print(“我们使用函数生成一个word文档试试”)

newname = ‘使用函数生成的文档.docx’

GenerateNewWord(newname)

Python-docx 编辑已存在文档我们很多时候需要在已存在的word文档上添加自己的内容,那么我们赶紧看看应该怎样操作吧~

旧文档:

示例代码:

from docx import Document

document = Document(‘exist.docx’)

document.save(‘new.docx’)

也许你会说,没有没搞错,就这三句话?是的,就这三句,你就完成了旧文档的复制,如果你想修改,直接添加内容就行了呢!

win32com 将 doc 转为 docx旧文档:

示例代码:

import os

from win32com import client as wc

def TransDocToDocx(oldDocName,newDocxName):

print(“我是 TransDocToDocx 函数”)

# 打开word应用程序

word = wc.Dispatch(‘Word.Application’)

# 打开 旧word 文件

doc = word.Documents.Open(oldDocName)

# 保存为 新word 文件,其中参数 12 表示的是docx文件

doc.SaveAs(newDocxName, 12)

# 关闭word文档

doc.Close()

word.Quit()

print(“生成完毕!”)

if __name__ == “__main__”:

# 获取当前目录完整路径

currentPath = os.getcwd()

print(“当前路径为:”,currentPath)

# 获取 旧doc格式word文件绝对路径名

docName = os.path.join(currentPath,‘旧doc格式文档.doc’)

print(“docFilePath = ”, docName)

# 设置新docx格式文档文件名

docxName = os.path.join(currentPath,‘新生成docx格式文档.docx’)

TransDocToDocx(docName,docxName)

win32com 操作 word打开新的word文档并添加内容

示例代码:

import win32com

from win32com.client import Dispatch, constants

import os

# 创建新的word文档def funOpenNewFile():

word = Dispatch(‘Word.Application’)

# 或者使用下面的方法,使用启动独立的进程:

# word = DispatchEx(‘Word.Application’)

# 如果不声明以下属性,运行的时候会显示的打开word

word.Visible = 1 # 0:后台运行 1:前台运行(可见)

word.DisplayAlerts = 0 # 不显示,不警告

# 创建新的word文档

doc = word.Documents.Add()

# 在文档开头添加内容

myRange1 = doc.Range(0, 0)

myRange1.InsertBefore(‘Hello word

’)

# 在文档末尾添加内容

myRange2 = doc.Range()

myRange2.InsertAfter(‘Bye word

’)

# 在文档i指定位置添加内容

i = 0

myRange3 = doc.Range(0, i)

myRange3.InsertAfter(“what‘s up, bro?

”)

# doc.Save() # 保存

doc.SaveAs(os.getcwd() + “\funOpenNewFile.docx”) # 另存为

doc.Close() # 关闭 word 文档

word.Quit() # 关闭 officeif __name__ == ’__main__‘:

print(“当前文件路径名:”,os.getcwd())

print(“调用funOpenNewFile()”)

funOpenNewFile()

打开已存在word文档并添加内容

前提条件:

示例代码:

import win32com

from win32com.client import Dispatch, constants

import os

# 打开已存在的word文件def funOpenExistFile():

word = Dispatch(’Word.Application‘)

# 或者使用下面的方法,使用启动独立的进程:

# word = DispatchEx(’Word.Application‘)

# 如果不声明以下属性,运行的时候会显示的打开word

word.Visible = 1 # 0:后台运行 1:前台运行(可见)

word.DisplayAlerts = 0 # 不显示,不警告

doc = word.Documents.Open(os.getcwd() + “\3.1 win32com测试.docx”) # 打开一个已有的word文档

# 在文档开头添加内容

myRange1 = doc.Range(0, 0)

myRange1.InsertBefore(’Hello word

‘)

# 在文档末尾添加内容

myRange2 = doc.Range()

myRange2.InsertAfter(’Bye word

‘)

# 在文档i指定位置添加内容

i = 0

myRange3 = doc.Range(0, i)

myRange3.InsertAfter(“what’s up, bro?

”)

# doc.Save() # 保存

doc.SaveAs(os.getcwd() + “\funOpenExistFile.docx”) # 另存为

doc.Close() # 关闭 word 文档

word.Quit() # 关闭 officeif __name__ == ‘__main__’:

print(“当前文件路径名:”,os.getcwd())

print(“调用funOpenExistFile()”)

funOpenExistFile()

转换word为pdf

示例代码:

import win32com

from win32com.client import Dispatch, constants

import os

# 生成Pdf文件def funGeneratePDF():

word = Dispatch(“Word.Application”)

word.Visible = 0 # 后台运行,不显示

word.DisplayAlerts = 0 # 不警告

doc = word.Documents.Open(os.getcwd() + “\3.3 win32com转换word为pdf等格式.docx”) # 打开一个已有的word文档

doc.SaveAs(os.getcwd() + “\3.3 win32com转换word为pdf等格式.pdf”, 17) # txt=4, html=10, docx=16, pdf=17

doc.Close()

word.Quit()

if __name__ == ‘__main__’:

funGeneratePDF()

Python-docx 操作 word官方文档:(最权威指南,没有之一)

https://python-docx.readthedocs.io/en/latest/

Python-docx官方例程

前提条件:

示例代码:

from docx import Document

from docx.shared import Inches

document = Document()

document.add_heading(‘Document Title’, 0)

p = document.add_paragraph(‘A plain paragraph having some ’)

p.add_run(‘bold’).bold = True

p.add_run(‘ and some ’)

p.add_run(‘italic.’).italic = True

document.add_heading(‘Heading, level 1’, level=1)

document.add_paragraph(‘Intense quote’, style=‘Intense Quote’)

document.add_paragraph(

‘first item in unordered list’, style=‘List Bullet’

document.add_paragraph(

‘first item in ordered list’, style=‘List Number’

document.add_picture(‘countrygarden.png’, width=Inches(1.25))

records = (

(3, ‘101’, ‘Spam’),

(7, ‘422’, ‘Eggs’),

(4, ‘631’, ‘Spam, spam, eggs, and spam’)

table = document.add_table(rows=1, cols=3)

hdr_cells = table.rows[0].cells

hdr_cells[0].text = ‘Qty’

hdr_cells[1].text = ‘Id’

hdr_cells[2].text = ‘Desc’for qty, id, desc in records:

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()

document.save(‘4.1 Python-docx官方例程.docx’)

最终效果:

Python-docx官方例程解析

导入库操作

from docx import Document

导入英寸单位操作(可用于指定图片大小、表格宽高等)

from docx.shared import Inches

新建一个文档

document = Document()

加载旧文档(用于修改或添加内容)

document = Document(‘exist.docx’)

添加标题段落

document.add_heading(‘Document Title’, 0)

7322cb68-0d7c-11ec-8fb8-12bb97331649.png

添加段落操作

段落在 Word 中是基本内容。它们用于正文文本,也用于标题和项目列表(如项目符号)。

p = document.add_paragraph(‘A plain paragraph having some ’)

在指定段落上添加内容

p.add_run(‘bold’).bold = True # 添加粗体文字

p.add_run(‘ and some ’) # 添加默认格式文字

p.add_run(‘italic.’).italic = True # 添加斜体文字

添加标题操作

等级1-9 也就是标题1-标题9,我们可以在旧文档中将标题格式设置好,使用Python-docx打开旧文档,再添加相应等级标题即可。

document.add_heading(‘Heading, level 1’, level=1)

添加指定样式段落

样式详情:

https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html#understanding-styles

document.add_paragraph(‘Intense quote’, style=‘Intense Quote’)

# 以下两句的含义等同于上面一句

p = document.add_paragraph(‘Intense quote’)

p.style = ‘Intense Quote’

添加无序列表操作

document.add_paragraph( ‘first item in unordered list’, style=‘List Bullet’)

添加有序列表操作

document.add_paragraph( ‘first item in ordered list’, style=‘List Number’)

73500452-0d7c-11ec-8fb8-12bb97331649.png

添加图片操作

第一个参数为图片路径,需要正确无误

第二个参数为图片大小,单位英寸

document.add_picture(‘countrygarden.png’, width=Inches(1.25))

新建表格操作

table = document.add_table(rows=1, cols=3)

填充标题行操作

hdr_cells = table.rows[0].cells

hdr_cells[0].text = ‘Qty’

hdr_cells[1].text = ‘Id’

hdr_cells[2].text = ‘Desc’

为每组内容添加数据行并填充

for qty, id, desc in records:

row_cells = table.add_row().cells

row_cells[0].text = str(qty)

row_cells[1].text = id

row_cells[2].text = desc

设置标题样式操作

table.style = ‘LightShading-Accent1’

7373d3e6-0d7c-11ec-8fb8-12bb97331649.png

添加分页符操作

document.add_page_break()

保存当前文档操作

document.save(‘4.1 Python-docx官方例程.docx’)

Python-docx 表格样式设置

表格样式设置代码:

from docx import *

document = Document()

table = document.add_table(3, 3, style=“Medium Grid 1 Accent 1”)

heading_cells = table.rows[0].cells

heading_cells[0].text = ‘第一列内容’

heading_cells[1].text = ‘第二列内容’

heading_cells[2].text = ‘第三列内容’

document.save(“demo.docx”)

遍历所有样式:

from docx.enum.style import WD_STYLE_TYPE

from docx import Document

document = Document()

styles = document.styles

# 生成所有表样式for s in styles:

if s.type == WD_STYLE_TYPE.TABLE:

document.add_paragraph(“表格样式 : ” + s.name)

table = document.add_table(3, 3, style=s)

heading_cells = table.rows[0].cells

heading_cells[0].text = ‘第一列内容’

heading_cells[1].text = ‘第二列内容’

heading_cells[2].text = ‘第三列内容’

document.add_paragraph(“

”)

document.save(‘4.3 所有表格样式.docx’)

效果如下(大家按照喜欢的样式添加即可):

docx&matplotlib 自动生成数据分析报告最终效果

数据获取

我们这里使用xlrd作为数据获取所使用的库,简单回顾一下:

import xlrd

xlsx = xlrd.open_workbook(‘。/3_1 xlrd 读取 操作练习.xlsx’)

# 通过sheet名查找:xlsx.sheet_by_name(“sheet1”)# 通过索引查找:xlsx.sheet_by_index(3)

table = xlsx.sheet_by_index(0)

# 获取单个表格值 (2,1)表示获取第3行第2列单元格的值

value = table.cell_value(2, 1)

print(“第3行2列值为”,value)

# 获取表格行数

nrows = table.nrows

print(“表格一共有”,nrows,“行”)

# 获取第4列所有值(列表生成式)

name_list = [str(table.cell_value(i, 3)) for i in range(1, nrows)]

print(“第4列所有的值:”,name_list)

表格内容:

编写数据获取代码:

我们这里只获取用户姓名和,分数,并将它们保存到列表中,看代码。

# 获取学习成绩信息def GetExcelInfo():

print(“开始获取表格内容信息”)

# 打开指定文档

xlsx = xlrd.open_workbook(‘学生成绩表格.xlsx’)

# 获取sheet

sheet = xlsx.sheet_by_index(0)

# 获取表格行数

nrows = sheet.nrows

print(“一共 ”,nrows,“ 行数据”)

# 获取第2列,和第4列 所有值(列表生成式),从第2行开始获取

nameList = [str(sheet.cell_value(i, 1)) for i in range(1, nrows)]

scoreList = [int(sheet.cell_value(i, 3)) for i in range(1, nrows)]

# 返回名字列表和分数列表

return nameList,scoreList

获取结果:

73c1f06c-0d7c-11ec-8fb8-12bb97331649.png

柱状图生成

我们先将获取的姓名和成绩使用 字典 数据结构关联起来,再对其排序:

# 将名字和分数列表合并成字典(将学生姓名和分数关联起来)

scoreDictionary = dict(zip(nameList, scoreList))

print(“dictionary:”,scoreDictionary)

# 对字典进行值排序,高分在前,reverse=True 代表降序排列

scoreOrder = sorted(scoreDictionary.items(), key=lambda x: x[1], reverse=True)

print(“scoreOrder”,scoreOrder)

# 合成的字典

dictionary: {‘Dillon Miller’: 41, ‘Laura Robinson’: 48, ‘Gabrilla Rogers’: 28, ‘Carlos Chen’: 54, ‘Leonard Humphrey’: 44, ‘John Hall’: 63, ‘Miranda Nelson’: 74, ‘Jessica Morgan’: 34, ‘April Lawrence’: 67, ‘Cindy Brown’: 52, ‘Cassandra Fernan’: 29, ‘April Crawford’: 91, ‘Jennifer Arias’: 61, ‘Philip Walsh’: 58, ‘Christina Hill P’: 14, ‘Justin Dunlap’: 56, ‘Brian Lynch’: 84, ‘Michael Brown’: 68}

# 排序后,再次转换成列表

scoreOrder [(‘April Crawford’, 91), (‘Brian Lynch’, 84), (‘Miranda Nelson’, 74), (‘Michael Brown’, 68), (‘April Lawrence’, 67), (‘John Hall’, 63), (‘Jennifer Arias’, 61), (‘Philip Walsh’, 58), (‘Justin Dunlap’, 56), (‘Carlos Chen’, 54), (‘Cindy Brown’, 52), (‘Laura Robinson’, 48), (‘Leonard Humphrey’, 44), (‘Dillon Miller’, 41), (‘Jessica Morgan’, 34), (‘Cassandra Fernan’, 29), (‘Gabrilla Rogers’, 28), (‘Christina Hill P’, 14)]

使用 matplotlib 生成柱状图:

# 生成学生成绩柱状图(使用matplotlib)# 会生成一张名为“studentScore.jpg”的图片def GenerateScorePic(scoreList):

# 解析成绩列表,生成横纵坐标列表

xNameList = [str(studentInfo[0]) for studentInfo in scoreList]

yScoreList = [int(studentInfo[1]) for studentInfo in scoreList]

print(“xNameList”,xNameList)

print(“yScoreList”,yScoreList)

# 设置字体格式

matplotlib.rcParams[‘font.sans-serif’] = [‘SimHei’] # 用黑体显示中文

# 设置绘图尺寸

plt.figure(figsize=(10,5))

# 绘制图像

plt.bar(x=xNameList, height=yScoreList, label=‘学生成绩’, color=‘steelblue’, alpha=0.8)

# 在柱状图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式

for x1, yy in scoreList:

plt.text(x1, yy + 1, str(yy), ha=‘center’, va=‘bottom’, fontsize=16, rotation=0)

# 设置标题

plt.title(“学生成绩柱状图”)

# 为两条坐标轴设置名称

plt.xlabel(“学生姓名”)

plt.ylabel(“学生成绩”)

# 显示图例

plt.legend()

# 坐标轴旋转

plt.xticks(rotation=90)

# 设置底部比例,防止横坐标显示不全

plt.gcf().subplots_adjust(bottom=0.25)

# 保存为图片

plt.savefig(“studentScore.jpg”)

# 直接显示

plt.show()

生成最终报告

代码如下:

# 开始生成报告def GenerateScoreReport(scoreOrder,picPath):

# 新建一个文档

document = Document()

# 设置标题

document.add_heading(‘数据分析报告’, 0)

# 添加第一名的信息

p1 = document.add_paragraph(“分数排在第一的学生姓名为: ”)

p1.add_run(scoreOrder[0][0]).bold = True

p1.add_run(“ 分数为: ”)

p1.add_run(str(scoreOrder[0][1])).italic = True

# 添加总体情况信息

p2 = document.add_paragraph(“共有: ”)

p2.add_run(str(len(scoreOrder))).bold = True

p2.add_run(“ 名学生参加了考试,学生考试的总体情况: ”)

# 添加考试情况表格

table = document.add_table(rows=1, cols=2)

table.style = ‘Medium Grid 1 Accent 1’

hdr_cells = table.rows[0].cells

hdr_cells[0].text = ‘学生姓名’

hdr_cells[1].text = ‘学生分数’

for studentName,studentScore in scoreOrder:

row_cells = table.add_row().cells

row_cells[0].text = studentName

row_cells[1].text = str(studentScore)

# 添加学生成绩柱状图

document.add_picture(picPath, width=Inches(6))

document.save(‘学生成绩报告.docx’)

完整代码

import xlrd

import matplotlib

import matplotlib.pyplot as plt

from docx import Document

from docx.shared import Inches

# 获取学习成绩信息def GetExcelInfo():

print(“开始获取表格内容信息”)

# 打开指定文档

xlsx = xlrd.open_workbook(‘学生成绩表格.xlsx’)

# 获取sheet

sheet = xlsx.sheet_by_index(0)

# 获取表格行数

nrows = sheet.nrows

print(“一共 ”,nrows,“ 行数据”)

# 获取第2列,和第4列 所有值(列表生成式),从第2行开始获取

nameList = [str(sheet.cell_value(i, 1)) for i in range(1, nrows)]

scoreList = [int(sheet.cell_value(i, 3)) for i in range(1, nrows)]

# 返回名字列表和分数列表

return nameList,scoreList

# 生成学生成绩柱状图(使用matplotlib)# 会生成一张名为“studentScore.jpg”的图片def GenerateScorePic(scoreList):

# 解析成绩列表,生成横纵坐标列表

xNameList = [str(studentInfo[0]) for studentInfo in scoreList]

yScoreList = [int(studentInfo[1]) for studentInfo in scoreList]

print(“xNameList”,xNameList)

print(“yScoreList”,yScoreList)

# 设置字体格式

matplotlib.rcParams[‘font.sans-serif’] = [‘SimHei’] # 用黑体显示中文

# 设置绘图尺寸

plt.figure(figsize=(10,5))

# 绘制图像

plt.bar(x=xNameList, height=yScoreList, label=‘学生成绩’, color=‘steelblue’, alpha=0.8)

# 在柱状图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式

for x1, yy in scoreList:

plt.text(x1, yy + 1, str(yy), ha=‘center’, va=‘bottom’, fontsize=16, rotation=0)

# 设置标题

plt.title(“学生成绩柱状图”)

# 为两条坐标轴设置名称

plt.xlabel(“学生姓名”)

plt.ylabel(“学生成绩”)

# 显示图例

plt.legend()

# 坐标轴旋转

plt.xticks(rotation=90)

# 设置底部比例,防止横坐标显示不全

plt.gcf().subplots_adjust(bottom=0.25)

# 保存为图片

plt.savefig(“studentScore.jpg”)

# 直接显示

plt.show()

# 开始生成报告def GenerateScoreReport(scoreOrder,picPath):

# 新建一个文档

document = Document()

# 设置标题

document.add_heading(‘数据分析报告’, 0)

# 添加第一名的信息

p1 = document.add_paragraph(“分数排在第一的学生姓名为: ”)

p1.add_run(scoreOrder[0][0]).bold = True

p1.add_run(“ 分数为: ”)

p1.add_run(str(scoreOrder[0][1])).italic = True

# 添加总体情况信息

p2 = document.add_paragraph(“共有: ”)

p2.add_run(str(len(scoreOrder))).bold = True

p2.add_run(“ 名学生参加了考试,学生考试的总体情况: ”)

# 添加考试情况表格

table = document.add_table(rows=1, cols=2)

table.style = ‘Medium Grid 1 Accent 1’

hdr_cells = table.rows[0].cells

hdr_cells[0].text = ‘学生姓名’

hdr_cells[1].text = ‘学生分数’

for studentName,studentScore in scoreOrder:

row_cells = table.add_row().cells

row_cells[0].text = studentName

row_cells[1].text = str(studentScore)

# 添加学生成绩柱状图

document.add_picture(picPath, width=Inches(6))

document.save(‘学生成绩报告.docx’)

if __name__ == “__main__”:

# 调用信息获取方法,获取用户信息

nameList,scoreList = GetExcelInfo()

# print(“nameList:”,nameList)

# print(“ScoreList:”,scoreList)

# 将名字和分数列表合并成字典(将学生姓名和分数关联起来)

scoreDictionary = dict(zip(nameList, scoreList))

# print(“dictionary:”,scoreDictionary)

# 对字典进行值排序,高分在前,reverse=True 代表降序排列

scoreOrder = sorted(scoreDictionary.items(), key=lambda x: x[1], reverse=True)

# print(“scoreOrder”,scoreOrder)

# 将进行排序后的学生成绩列表生成柱状图

GenerateScorePic(scoreOrder)

# 开始生成报告

picPath = “studentScore.jpg”

GenerateScoreReport(scoreOrder,picPath)

print(“任务完成,报表生成完毕!”)

Python-docx 修改旧 word 文档回顾:打开旧文档,并另存为新文档

我们这里就拿上一节生成的学生成绩报告作为示例:

from docx import Document

if __name__ == “__main__”:

document = Document(‘6 学生成绩报告.docx’)

# 在这里进行操作,此处忽略

document.save(‘修改后的报告.docx’)

读取word文档的内容

示例代码:

from docx import Document

if __name__ == “__main__”:

document = Document(‘6 学生成绩报告.docx’)

# 读取 word 中所有内容

for p in document.paragraphs:

print(“paragraphs:”,p.text)

# 读取 word 中所有一级标题

for p in document.paragraphs:

if p.style.name == ‘Heading 1’:

print(“Heading 1:”,p.text)

# 读取 word 中所有二级标题

for p in document.paragraphs:

if p.style.name == ‘Heading 2’:

print(“Heading 2:”, p.text)

# 读取 word 中所有正文

for p in document.paragraphs:

if p.style.name == ‘Normal’:

print(“Normal:”, p.text)

document.save(‘修改后的报告.docx’)

读取docx中表格内

示例代码:

from docx import Document

if __name__ == “__main__”:

document = Document(‘6 学生成绩报告.docx’)

# 读取表格内容

for tb in document.tables:

for i,row in enumerate(tb.rows):

for j,cell in enumerate(row.cells):

text = ‘’

for p in cell.paragraphs:

text += p.text

print(f‘第{i}行,第{j}列的内容{text}’)

document.save(‘修改后的报告.docx’)

修改word中的内容

示例代码:

from docx import Document

if __name__ == “__main__”:

document = Document(‘6 学生成绩报告.docx’)

# 修改 word 中所有内容

for p in document.paragraphs:

p.text = “修改后的段落内容”

# 修改表格内容

for tb in document.tables:

for i,row in enumerate(tb.rows):

for j,cell in enumerate(row.cells):

text = ‘’

for p in cell.paragraphs:

p.text = (“第”,str(i),“行”,str(j),“列”)

print(f‘第{i}行,第{j}列的内容{text}’)

document.save(‘6.4 修改后的报告.docx’)

docx-mailmerge 自动生成万份劳动合同创建合同模板

添加内容框架

创建一个域

设置域名

依次全部添加

生成1份证明

示例代码:

from mailmerge import MailMerge

template = ‘薪资证明模板.docx’

document = MailMerge(template)

document.merge(name = ‘唐星’,

id = ‘1010101010’,

year = ‘2020’,

salary = ‘99999’,

job = ‘嵌入式软件开发工程师’)

document.write(‘生成的1份证明.docx’)

哈哈哈哈!!月入10万,走向人生巅峰~

生成10000份证明

示例代码:

from mailmerge import MailMerge

from datetime import datetime

# 生成单份合同def GenerateCertify(templateName,newName):

# 打开模板

document = MailMerge(templateName)

# 替换内容

document.merge(name=‘唐星’,

id=‘1010101010’,

year=‘2020’,

salary=‘99999’,

job=‘嵌入式软件开发工程师’)

# 保存文件

document.write(newName)

if __name__ == “__main__”:

templateName = ‘薪资证明模板.docx’

# 获得开始时间

startTime = datetime.now()

# 开始生成

for i in range(10000):

newName = f‘。/10000份证明/薪资证明{i}.docx’

GenerateCertify(templateName,newName)

# 获取结束时间

endTime = datetime.now()

# 计算时间差

allSeconds = (endTime - startTime).seconds

print(“生成10000份合同一共用时: ”,str(allSeconds),“ 秒”)

print(“程序结束!”)

只花了89秒,平均不到 0.01 就能生成一个!!快

74d84460-0d7c-11ec-8fb8-12bb97331649.png

责任编辑:haq

原文标题:Python自动化办公之Word,全网最全看这一篇就够了

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

剖析全自动生化分析仪的定义及功能

生化分析仪又叫生化仪,作为各级医院医学检验科中基本的诊断分析仪器,从研发到现在,经历了分光光度计、半....
发表于 10-18 16:27 21次 阅读

关于Python18个你不知道的高效编程技巧

初识Python语言,觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编....
的头像 马哥Linux运维 发表于 10-15 11:23 208次 阅读

塑料行业通用水分测试仪的常规参数介绍

塑料行业聚丙烯PP塑料原料密度为0.92g/cm3,极难溶于水。未着色时呈白色半透明晶体状、蜡状透明....
发表于 10-14 11:46 35次 阅读

滑石粉水分测量步骤及注意事项

滑石粉在生产过程中其生产工艺需符合国家标准水分检测方法,然而市场上有不少商家把含水量过多的滑石粉推向....
发表于 10-14 11:23 12次 阅读

鲜花水分测量仪的介绍

鲜花水分测量仪                                           ....
发表于 10-13 18:15 70次 阅读

点焊机是否和自动化生产有着紧密的联系

现在对自动化要求越来越高的今天,点焊机也能可依据客户自己产品规格制作,带有定位,移动,焊接为一体的功....
发表于 10-13 17:21 28次 阅读

用Python实现3D地图教程

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题....
的头像 马哥Linux运维 发表于 10-13 10:09 172次 阅读
用Python实现3D地图教程

关于Python对交通路口的红绿灯进行颜色检测

转自 |   Python联盟 1.视频读取 首先把视频读取进来,因为我测试的视频是4k的所以我用r....
的头像 新机器视觉 发表于 10-13 09:32 230次 阅读
关于Python对交通路口的红绿灯进行颜色检测

简述产品装配技术的发展、关键技术和未来趋势

装配是产品研制过程中的关键环节,将零件按规定技术要求组装起来,并经过调试、检验使之成为合格产品。 2....
的头像 欧时电子RS 发表于 10-12 17:32 252次 阅读

如何制作数据可视化大屏

经常有小伙伴问,如何制作数据可视化大屏? 今天将手把手带你爬取奥运会相关信息,并利用 可视化大屏 为....
的头像 Linux爱好者 发表于 10-12 16:31 159次 阅读
如何制作数据可视化大屏

腾阳码垛机器人的性能特点介绍

相比传统的人工搬运低产低效成本高,全自动搬运码垛机器人作为生产制造业装备中自动化产品,越来越多地被应....
发表于 10-12 13:31 563次 阅读

什么是MicroPython 它能做什么有什么局限

随着Python成为主流的编程语言,MicroPython在嵌入式系统领域也越来越热门起来,尤其是大....
的头像 电子森林 发表于 10-12 11:44 225次 阅读

咖啡水分测定仪测试原理和参数介绍

厦门搏仕检测设备有限公司  www.lboshi.cn 18959266236 咖啡一种能提神、抗疲....
发表于 10-12 11:21 48次 阅读

10具有挑战性的Python项目创意

你知道 Python 是被称为 全能编程语言 的吗?是的,它确实是,虽然不应该在每个项目中都使用它。....
的头像 Android编程精选 发表于 10-12 10:43 261次 阅读

如何把Python和Excel两大数据工具进行集成

  这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理....
的头像 数据分析与开发 发表于 10-12 09:41 164次 阅读
如何把Python和Excel两大数据工具进行集成

如何在Colab中使用SQL

如今,编码测试在数据科学面试过程中几乎是标准的。 作为一名数据科学招聘经理,我发现一个20-30分钟....
的头像 智能感知与物联网技术研究所 发表于 10-12 09:39 175次 阅读
如何在Colab中使用SQL

Python开发中Pycharm的实用小技巧

  Pycharm作为Python开发最常用的IDE之一,不仅兼容性好,而且功能也相当丰富,比如调试....
的头像 马哥Linux运维 发表于 10-12 09:36 145次 阅读

Python的时间处理模块中处理日期与时间的全面总结

Python的时间处理模块在日常的使用中用的较多,但是使用的时候基本上都是要查资料,还是有些麻烦的,....
的头像 马哥Linux运维 发表于 10-12 09:24 193次 阅读
Python的时间处理模块中处理日期与时间的全面总结

Python中最常用的几种线程锁你会用吗

前言本文将继续围绕 threading 模块讲解,基本上是纯理论偏多。 对于日常开发者来讲很少会使用....
的头像 马哥Linux运维 发表于 10-11 16:07 161次 阅读

优秀的 Verilog/FPGA开源项目介绍(一)

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信 今天开始会陆续介绍一些优秀的开源项....
的头像 OpenFPGA 发表于 10-11 15:31 259次 阅读
优秀的 Verilog/FPGA开源项目介绍(一)

Python入门知识汇总

Python代码生成EXE文件的方法是什么?
发表于 10-11 06:00 0次 阅读

Python版test1实战说明

上一篇文章已经带着大家安装 DeepStream 的 Python 开发环境,并且执行最简单的 de....
的头像 NVIDIA英伟达企业解决方案 发表于 10-09 14:28 155次 阅读

教你们如何用 Python 快速制作海报级地图附代码

 1 简介 基于 Python 中诸如 matplotlib 等功能丰富、自由度极高的绘图库,我们可....
的头像 Linux爱好者 发表于 10-09 11:36 264次 阅读

【2021年ST工业峰会】3大领域、超30个分论坛、150多个技术方案演示,激发智能 赋能创新

▌ST工业峰会简介 科技随“芯”精彩,意法半导体伴您相行!作为拥有18500多项行业领先专利的先驱,意法半导体已经成为许多技术...
发表于 10-09 10:53 1102次 阅读
【2021年ST工业峰会】3大领域、超30个分论坛、150多个技术方案演示,激发智能 赋能创新

什么是Python中的流程控制?

什么是Python中的流程控制?
发表于 10-09 07:24 0次 阅读

Python定时任务的实现方式

在日常工作中,我们常常会用到需要周期性执行的任务,一种方式是采用 Linux 系统自带的 crond....
的头像 马哥Linux运维 发表于 10-08 15:20 1241次 阅读

机器视觉检测设备在印刷行业的应用

随着社会的发展、越来越多的行业在工作方面用自动化设备来替代人工。比如说我们今天要讲的印刷上的印刷字符....
发表于 10-08 12:00 322次 阅读

码垛机器人工作站的特点及工作过程

机器人码垛工作站系统,包括工业机器人、控制器、编程器、机器人手爪、自动拆/叠盘机、托盘输送及定位设备....
发表于 10-08 10:44 85次 阅读

Python的矩阵传播机制

一、Python的矩阵传播机制(Broadcasting) 我们知道在深度学习中经常要操作各种矩阵(....
的头像 Linux爱好者 发表于 09-30 16:53 302次 阅读

Python提供了几个级别访问的网络服务呢

Python提供了几个级别访问的网络服务呢?
发表于 09-30 08:09 0次 阅读

PLC自动化控制系统优化设计要遵循哪些原则

PLC技术是什么? PLC自动化控制系统优化设计要遵循哪些原则?...
发表于 09-30 07:12 0次 阅读

如何用python实现贪吃蛇游戏

贪吃蛇 具体实现部分,大致分为三个模块来介绍:游戏初始化、游戏运行(蛇移动、吃掉食物)、游戏结束 1....
的头像 马哥Linux运维 发表于 09-29 18:05 469次 阅读
如何用python实现贪吃蛇游戏

python导出excel格式的oracle数据报表讲解

python导出excel格式的oracle数据报表讲解(通信电源技术期刊官网)-该文档为pytho....
发表于 09-28 13:10 24次 阅读
python导出excel格式的oracle数据报表讲解

品牌战略升级!昂视携多款视觉新品精彩亮相华南国际工业博览会!

9月27日,历经多次疫情延期的2021华南国际工业博览会(以下简称“华南工博会”)终于在深圳国际会展....
发表于 09-28 10:51 105次 阅读
品牌战略升级!昂视携多款视觉新品精彩亮相华南国际工业博览会!

在鸿蒙上使用Python进行物联网编程

在上一篇帖子《使用 Python 开发鸿蒙设备程序(1-GPIO 外设控制)》中,已经成功的使用 P....
的头像 HarmonyOS技术社区 发表于 09-28 09:55 467次 阅读
在鸿蒙上使用Python进行物联网编程

怎样去实现一种基于Python的OPC UA编程

怎样去实现一种基于Python的OPC UA编程? 如何通过FreeOpcUa创建自己的地址空间? ...
发表于 09-28 09:35 0次 阅读

用Python完成鸿蒙开发板外设控制

话说很久以前,我将 MicroPython 的解释器给“挖”了出来,然后做了适配,成功运行于鸿蒙设备....
的头像 HarmonyOS技术社区 发表于 09-28 09:22 329次 阅读

模块式柔性自动化生产线实训系统是什么

模块式柔性自动化生产线实训系统是什么? 模块式柔性自动化生产线实训系统有哪些技术参数? ...
发表于 09-27 09:23 0次 阅读

ZN-MPS03型柔性自动化生产线及工业机器人应用实训系统是什么

ZN-MPS03型柔性自动化生产线及工业机器人应用实训系统是什么? ZN-MPS03型柔性自动化生产线及工业机器人应用实训系统...
发表于 09-27 07:12 0次 阅读

ZN-MPS05型模块式工业机器人柔性自动化生产线实训系统是什么

ZN-MPS05型模块式工业机器人柔性自动化生产线实训系统是什么? ZN-MPS05型模块式工业机器人柔性自动化生产线实训系统...
发表于 09-27 06:55 0次 阅读

ZN-1ZX现场总线自动化综合控制实训系统的特点是什么

ZN-1ZX现场总线自动化综合控制实训系统的特点是什么? ZN-1ZX现场总线自动化综合控制实训系统是由哪些部分组成的? ...
发表于 09-27 06:26 0次 阅读

未来“智造业”微循环的关键 中国工业机器人产业加速发力

还记得那个首次植入心跳模块的仓储机器人吗?2019,由广东嘉腾机器人自动化有限公司研发的机器人心跳系....
的头像 话说科技 发表于 09-26 14:53 388次 阅读
未来“智造业”微循环的关键 中国工业机器人产业加速发力

pandas筛选数据的8个小技巧

  日常用 Python 做数据分析最常用到的就是查询筛选了,按各种条件、各种维度以及组合挑出我们想....
的头像 数据分析与开发 发表于 09-26 11:04 1112次 阅读
pandas筛选数据的8个小技巧

Python连接Oracle数据库

Python连接Oracle数据库(深圳市核达中远通电源技术股份有限公司招聘)-该文档为Python....
发表于 09-24 17:20 27次 阅读
Python连接Oracle数据库

深刻理解Python中的元类(metaclass)

深刻理解Python中的元类(metaclass)(大工20春电源技术在线作业2)-该文档为深刻理解....
发表于 09-24 16:12 26次 阅读
深刻理解Python中的元类(metaclass)

Automation(电力系统及其自动化)

Automation(电力系统及其自动化)(电脑电源技术指标包括)-Automation(电力系统及....
发表于 09-24 12:30 45次 阅读
Automation(电力系统及其自动化)

电力系统自动化实验指导

电力系统自动化实验指导(深圳市核达中远通电源技术股份有限公司电话)-电力系统自动化实验指导。。。。。....
发表于 09-24 11:46 38次 阅读
电力系统自动化实验指导

配网自动化技术

配网自动化技术(现代电源技术杜少武扫描版)-配网自动化技术,希望对大家有所帮助。。。。。.
发表于 09-24 11:32 50次 阅读
配网自动化技术

驾驶式全自动洗地机的功能特性

山东腾阳环卫设备有限公司是一家致力于新能源扫地机、洗地机、环卫车、清洁机器人等装备的研发、生产、销售....
发表于 09-23 17:10 44次 阅读

农田监测系统的功能特点

JD-QC9 农田监测系统价格多少?市场前景如何? விவசாய நில கண்காணிப்பு அ....
发表于 09-23 15:56 42次 阅读

Python后端项目的协程是什么

最近公司 Python 后端项目进行重构,整个后端逻辑基本都变更为采用“异步”协程的方式实现。看着满....
的头像 Linux爱好者 发表于 09-23 14:38 273次 阅读

Python中三个json组件的安装方式

在 Python 使用用 json.dumps(data) 时突然发现特别慢,data 本身不大,但....
的头像 马哥Linux运维 发表于 09-23 14:35 285次 阅读
Python中三个json组件的安装方式

调心滚子轴承的安装方法与维护注意事项

超精研是指在良好的润滑条件下,工件以一定的速度旋转,同时用细粒度的磨石以一定的压力压向工件加工表面,....
发表于 09-23 14:29 136次 阅读

焊接机器人和传统焊机的区别

焊接机器人和传统焊机的区别有哪些?焊接机器人是用于进行自动焊接作业的工业机器人,随着我国焊接技术的不....
发表于 09-22 15:32 89次 阅读

全自动负氧离子在线监测系统是什么

全自动负氧离子在线监测系统的功能特点介绍FT-FYLZ【风途】生态环境与人们的健康有关,人类之间的关....
发表于 09-18 16:40 33次 阅读

在Anaconda中安装python包seaborn

在Anaconda中安装python包seaborn(现代电源技术题库)-在Anaconda中安装p....
发表于 09-18 15:01 29次 阅读
在Anaconda中安装python包seaborn

Python科学计算利器Anaconda

Python科学计算利器Anaconda(开关电源技术毕业设计)-Python科学计算利器Anaco....
发表于 09-18 14:26 34次 阅读
Python科学计算利器Anaconda

水库水环境一体式浮标水质在线监测设备方案

产品介绍 水质监测浮标是一款以浮标为载体,集材料科学、传感器技术、数传技术为一体的水质监测系统。浮标....
发表于 09-18 11:35 63次 阅读

RFID技术在工具管理中的应用

在生产生活中我们需要用到各种各样的工具,例如医生外科手术的医疗器械、铁路维护管理工具、航空航天飞机维....
发表于 09-18 10:42 72次 阅读

玻璃瓶缺陷检测解决方案

玻璃瓶在食品、药品、饮料等产品包装中得到了广泛的应用。传统的玻璃瓶检测方法(人工检测),存在效率低、....
发表于 09-17 17:42 64次 阅读