精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在環境安裝使用Python操作word

Android編程精選 ? 來源:CSDN博客 ? 作者:超級大洋蔥806 ? 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’)

哈哈哈哈?。≡氯?0萬,走向人生巔峰~

生成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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化
    +關注

    關注

    29

    文章

    5519

    瀏覽量

    79122
  • python
    +關注

    關注

    56

    文章

    4783

    瀏覽量

    84473

原文標題:Python自動化辦公之Word,全網最全看這一篇就夠了

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Docker運行環境安裝

    、發布、測試和部署,可以幫助開發人員將最新版本代碼應用到生產環境中。 Docker可以安裝在多個平臺中,包括Mac、Windows和Linux。不過,生產環境還是推薦在Linux上運行,以下以主流的Linux
    的頭像 發表于 10-29 11:28 ?166次閱讀

    pycharm配置pytorch運行環境

    在PyCharm中配置PyTorch運行環境主要包括安裝PyCharm、安裝Python(如果尚未安裝)、配置PyTorch
    的頭像 發表于 08-01 16:25 ?1474次閱讀

    pycharm怎么配置pytorch環境

    1. 安裝PyCharm 首先,確保您已經安裝了PyCharm。PyCharm是JetBrains公司開發的一款流行的Python集成開發環境(IDE)。您可以從JetBrains官網
    的頭像 發表于 08-01 15:40 ?969次閱讀

    python寫驗證環境cocotb

    本文介紹了cocotb的安裝、python tb文件的寫法、用xrun仿真cocotb的腳本等,我們來看看體驗如何。
    的頭像 發表于 07-24 09:38 ?479次閱讀
    用<b class='flag-5'>python</b>寫驗證<b class='flag-5'>環境</b>cocotb

    如何實現Python復制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現文件復制的特殊方法。下面我們開始學習這九種不同的方法來實現
    的頭像 發表于 07-18 14:53 ?382次閱讀

    用pycharm進行python爬蟲的步驟

    以下是使用PyCharm進行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyC
    的頭像 發表于 07-11 10:11 ?729次閱讀

    編譯ESP-AT工程,運行python build.py install命令提示符遇到的疑問求解

    你好,我按照“編譯 ESP-AT 工程”步驟操作時候,走到第三步:安裝環境,運行python build.py install命令提示符,顯示 C
    發表于 06-27 06:05

    何在離線環境安裝VSCode的ESP-IDF擴展插件?

    仍然需要連接網絡配置python環境下載資源包。于是我將另外一臺有網絡并且已安裝完畢的電腦上的一些資源包拷貝過來,可以識別到資源需求滿足但仍然顯示部分配置缺失,類似如下:Code: Select all
    發表于 06-13 07:56

    用離線安裝安裝的idf,其創建的Python虛擬環境無激活腳本是怎么回事?

    如題,用離線安裝安裝的idf,其創建的Python虛擬環境無激活腳本,具體如下圖所示: 反而用vscode插件安裝的idf有,如下圖:vs
    發表于 06-11 06:49

    如何使用linux下gdb來調試python程序

    中,我們將介紹如何在Linux中使用GDB來調試Python程序。 一、安裝GDB和Python調試符號 在使用GDB調試Python程序之
    的頭像 發表于 01-31 10:41 ?2437次閱讀

    何在CYGWIN的IFX環境安裝cysecuretool?

    嗨, 我正在嘗試在 cygwin 中安裝 cysecure 工具但遇到了錯誤。 誰能指導如何在 CYGWIN 的 IFX 環境安裝 cysecuretool?
    發表于 01-25 08:25

    【涂鴉T2-U開發板試用體驗】+T2 Development Board V1.0.0 python環境搭建

    要在T2 Development Board V1.0.0上搭建Python環境,請按照以下步驟操作: 1. 首先,確保您的T2 Development Board V1.0.0已經連接到計算機
    發表于 12-15 17:55

    python環境變量的配置pip

    開始,然后討論如何找到Python安裝路徑以及如何配置環境變量。接下來,我們將詳細講解pip的用途和安裝方法,并解決一些與pip相關的常見問題。 一、
    的頭像 發表于 12-15 15:41 ?2363次閱讀

    PyTorch安裝教程超詳細

    PyTorch是一個用于機器學習和深度學習的開源庫,它提供了豐富的工具和接口,幫助開發者快速構建深度學習模型。本文將介紹如何在不同操作系統上安裝PyTorch,并詳細講解每個步驟。 Windows
    的頭像 發表于 12-07 11:19 ?2158次閱讀

    何在eclipse配置jdk環境

    在Eclipse中配置JDK環境非常重要,它是開發Java程序的基礎。本文將詳細介紹如何在Eclipse中配置JDK環境。 下載和安裝JDK 首先,在Oracle官網上下載適用于您的
    的頭像 發表于 12-06 11:49 ?1619次閱讀