安裝docx模塊
pip3 install python-docx
讀取word整文
from docx import Document doc=Document("./a.docx") for p in doc.paragraphs: print(p.text)
簡單實例1
# word_1.py # 導入庫 from docx import Document from docx.shared import Pt from docx.shared import Inches from docx.oxml.ns import qn # 新建空白文檔 doc1 = Document() # 新增文檔標題 doc1.add_heading('如何使用 Python 創建 Word',0) # 創建段落描述 doc1.add_paragraph('我們平時使用 Word 用來做文章的處理,可能沒想過它可以用 Python 生成,下面我們就介紹具體如何操作……') # 創建一級標題 doc1.add_heading('安裝 python-docx 庫',1) # 創建段落描述 doc1.add_paragraph('現在開始我們來介紹如何安裝 python-docx 庫,具體需要以下兩步操作:') # 創建二級標題 doc1.add_heading('第一步:安裝 Python',2) # 保存文件 doc1.save('word1.docx')
查看效果
簡單實例2
對“表揚信.docx”文檔進行修改,需要修改的地方已在圖中標記出。
- 第一個箭頭處,首行縮進2字符
- 第二個箭頭處,對段落進行左縮進2字符,並添加“向小z同學學習!”
- 第三個和第四個箭頭處,進行右對齊,並右縮進2cm
- 趙東來,修改為小z
- 陸亦可,修改為大Z
- 她,修改為他
- 狗糧,修改為貓糧
代碼如下
from docx import Document from docx.shared import Cm from docx.enum.text import WD_ALIGN_PARAGRAPH import re document=Document(r"g:\CS\Python Scripts\表揚信.docx") # 首先對段落格式進行修改,docx默認標題也屬於段落,因此“表揚信”是第一段 paragraphs=document.paragraphs paragraphs[2].paragraph_format.first_line_indent=Cm(0.74) paragraphs[3].paragraph_format.left_indent=Cm(0.74) paragraphs[4].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT paragraphs[4].paragraph_format.right_indent=Cm(2) paragraphs[5].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT paragraphs[5].paragraph_format.right_indent=Cm(2) # 對文本進行修改 # 修改第二段 paragraphs[1].text="小Z同學:" # 將第三段陸亦可替換為大Z,她替換為他。通過python的正則表達式,可以很簡單地實現文本的替換和查找。 text=re.sub('陸亦可','大Z',paragraphs[2].text) text=re.sub('她','他',text) paragraphs[2].text=text # 在第四段后面加上 paragraphs[3].add_run("向小z同學學習!") # 修改表格里面的內容 tables=document.tables tables[0].cell(1,0).text="貓糧" tables[0].cell(2,0).text="貓糧" tables[0].cell(3,0).text="貓糧" # 插入一張圖片,圖片寬度設置為11.8cm document.add_picture('fun.jpg', width=Cm(11.8)) document.save()
修改后效果
簡單實例3
from docx import Document import time import re # 讀取模板文件 doc_zh = Document("/auto/data/綜合平台應用層點檢早報.docx") doc_wl = Document("/auto/data/物流平台應用層點檢報告.docx") # 變量定義 today_time = time.strftime("%Y/%m/%d", time.localtime()) today_time2 = time.strftime("%Y%m%d", time.localtime()) # time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) file_name_zh = "綜合平台應用層點檢早報_" + today_time2 file_name_wl = "物流平台應用層點檢報告_" + today_time2 # 修改word paragraphs_zh = doc_zh.paragraphs paragraphs_zh[6].text = re.sub('日期',today_time,paragraphs_zh[6].text) paragraphs_wl = doc_wl.paragraphs paragraphs_wl[11].text = re.sub('日期',today_time,paragraphs_wl[11].text) # 保存文件 doc_zh.save("/auto/data_finish/" + file_name_zh + ".docx") doc_wl.save("/auto/data_finish/" + file_name_wl + ".docx") print("word_auto finish") # for p in doc.paragraphs: # print(p.text)