1. 程式人生 > 實用技巧 >python的docx模組處理word

python的docx模組處理word

安裝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”文件進行修改,需要修改的地方已在圖中標記出。

  1. 第一個箭頭處,首行縮排2字元
  2. 第二個箭頭處,對段落進行左縮排2字元,並新增“向小z同學學習!”
  3. 第三個和第四個箭頭處,進行右對齊,並右縮排2cm
  4. 趙東來,修改為小z
  5. 陸亦可,修改為大Z
  6. 她,修改為他
  7. 狗糧,修改為貓糧

程式碼如下

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)