Python自動化 | 利用python-docx 實現word操作
一、安裝python-docx模組
pip install python-docx
二、讀取word檔案
1.word文件結構
Document: 文件
Paragraph:段落
Run:文字塊
2.提取文字
2.1提取段落例項,段數:
.paragraphs 獲取一個列表,包含每個段落的例項
from docx import Document
doc = Document("0.docx")
print(doc.paragraphs)
print(len(doc.paragraphs))
結果:
[<docx.text.paragraph.Paragraph object at 0x000001F88E2F2E80>, <docx.text.paragraph.Paragraph object at 0x000001F88E2F2C88>, <docx.text.paragraph.Paragraph object at 0x000001F88E2F2EF0>]
3
結果說明有三段
2.2提取段落內容
from docx import Document
doc = Document("0.docx")
for paragraph in doc.paragraphs:
print(paragraph.text)
以上便是word與python結合的第二部分內容,後續將會持續更新excel,ppt,爬蟲,人工智慧等相關內容,敬請關注
2.3獲取文字塊run
一個格式為一個文字塊run 上述句子有7個文字塊run
from docx import Document
doc = Document("0.docx")
paragraph = doc.paragraphs[1]
runs = paragraph.runs
print(runs)
[<docx.text.run.Run object at 0x000001F88E2F2E10>, <docx.text.run.Run object at 0x000001F88E2F2C88>, <docx.text.run.Run object at 0x000001F88E2F2E80>, <docx.text.run.Run object at 0x000001F88E2F2DD8>, <docx.text.run.Run object at 0x000001F88E2F2EB8>, <docx.text.run.Run object at 0x000001F88E2F2F28>, <docx.text.run.Run object at 0x000001F88E2F2F60>]
paragraph.runs 獲取一個列表,得到每個文字塊的例項
2.4提取文字塊的內容
from docx import Document
doc = Document("0.docx")
paragraph = doc.paragraphs[1]
runs = paragraph.runs
print(runs)
for run in runs:
print(run.text)
excel與python結合的第二部分內容,
後續將會持續更新excel
,
ppt
,
爬蟲
,人工智慧
三、寫入word檔案
1.新增文字內容
1.1新增標題
方法:doc.add_heading("標題內容",level=標題等級)
from docx import Document
doc = Document()
doc.add_heading("新增一個一級標題",level=1)
1.2新增段落
方法:doc.add_paragraph("段落文字內容")
from docx import Document
doc = Document()
doc.add_heading("新增一個一級標題",level=1)
paragraph1 = doc.add_paragraph("新增段落1")
paragraph2 = doc.add_paragraph("新增段落2")
1.3新增文字塊
方法:add_run("文字內容").bold = True (一些可設定的引數)
from docx import Document
doc = Document()
doc.add_heading("新增一個一級標題",level=1)
paragraph1 = doc.add_paragraph("新增段落1")
paragraph2 = doc.add_paragraph("新增段落2")
paragraph3 = doc.add_paragraph()
paragraph3.add_run("粗體").bold = True
paragraph3.add_run('正常')
paragraph3.add_run('斜體').italic = True
1.4新增分頁
方法:doc.add_page_break()
from docx import Document
doc = Document() #新建檔案
doc.add_heading("新增一個一級標題",level=1) #標題
paragraph1 = doc.add_paragraph("新增段落1") #段落
paragraph2 = doc.add_paragraph("新增段落2")
paragraph3 = doc.add_paragraph()
paragraph3.add_run("粗體").bold = True #文字塊
paragraph3.add_run('正常')
paragraph3.add_run('斜體').italic = True
doc.add_page_break()
2.新增圖片and表格
新增圖片:
方法:
doc.add_picture("圖片地址",width=Cm(設定的寬度))
doc.add_picture("圖片地址",height=Cm(設定的高度))
只需要給定一個高度或者寬度,另一個尺寸會根據比列自動計算
from docx import Document
from docx.shared import Cm
doc = Document() #新建檔案
doc.add_heading("新增一個一級標題",level=1) #標題
paragraph1 = doc.add_paragraph("新增段落1") #段落
paragraph2 = doc.add_paragraph("新增段落2")
paragraph3 = doc.add_paragraph()
paragraph3.add_run("粗體").bold = True #文字塊
paragraph3.add_run('正常')
paragraph3.add_run('斜體').italic = True
doc.add_page_break() #新增分頁
doc.add_picture("00.png",width=Cm(2))
doc.add_picture("00.png",height=Cm(3))
新增表格:
方法:doc.add_table(rows=行數,cols=列數)
from docx import Document
from docx.shared import Cm
doc = Document() #新建檔案
doc.add_heading("新增一個一級標題",level=1) #標題
paragraph1 = doc.add_paragraph("新增段落1") #段落
paragraph2 = doc.add_paragraph("新增段落2")
paragraph3 = doc.add_paragraph()
paragraph3.add_run("粗體").bold = True #文字塊
paragraph3.add_run('正常')
paragraph3.add_run('斜體').italic = True
doc.add_page_break() #新增分頁
doc.add_picture("00.png",width=Cm(2))
doc.add_picture("00.png",height=Cm(3))
tabs = [
["姓名",'學號',"成績"],
['李華',101,93],
['小明',102,94],
['小麗',103,98],
['小張',104,100],
]
table = doc.add_table(rows=4,cols=3)
for row in range(4):
cells = table.rows[row].cells
for col in range(3):
cells[col].text = str(tabs[row][col])
3.儲存
doc.save(檔案路徑)
完整程式碼:
from docx import Document
from docx.shared import Cm
doc = Document() #新建檔案
doc.add_heading("新增一個一級標題",level=1) #標題
paragraph1 = doc.add_paragraph("新增段落1") #段落
paragraph2 = doc.add_paragraph("新增段落2")
paragraph3 = doc.add_paragraph()
paragraph3.add_run("粗體").bold = True #文字塊
paragraph3.add_run('正常')
paragraph3.add_run('斜體').italic = True
doc.add_page_break() #新增分頁
doc.add_picture("00.png",width=Cm(2))
doc.add_picture("00.png",height=Cm(3))
tabs = [
["姓名",'學號',"成績"],
['李華',101,93],
['小明',102,94],
['小麗',103,98],
['小張',104,100],
]
table = doc.add_table(rows=4,cols=3)
for row in range(4):
cells = table.rows[row].cells
for col in range(3):
cells[col].text = str(tabs[row][col])
doc.save('10.docx')
結果:
四、調整Word文件樣式
1.修改文字樣式
from docx import Document
from docx.shared import Pt,RGBColor
from docx.oxml.ns import qn
doc = Document("0.docx")
for paragraph in doc.paragraphs:
for run in paragraph.runs:
run.font.bold = True #黑體
run.font.italic = True #斜體
run.font.underline = True #下劃線
run.font.strike = True #刪除線
run.font.shadow = True #陰影
run.font.size = Pt(15) #字型大小
run.font.color.rgb = RGBColor(255,255,0) #顏色
run.font.name = "微軟雅黑" #字型
r = run._element.rPr.rFonts #中文字型
r.set(qn('w:eastAsia'),"微軟雅黑")
doc.save("xin0.docx")
2.修改段落格式
2.1對齊樣式:
from docx.enum.text import WD_ALIGN_PARAGRAPH
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
也可選擇其他不同對齊
如:LEFT,RIGHT等
2.2行間距
paragraph.paragraph_foramt.line_spacing = 2.0
paragraph.paragraph_foramt.line_spacing = 2.0
用浮點數,表示兩倍行間距
2.3段前和段後間距
paragraph.paragraph_format.space_before = Pt(12)
paragraph.paragraph_format.space_after = Pt(21)
pt(21)表示21磅
3.整體程式碼
from docx import Document
from docx.shared import Pt,RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document("0.docx")
for paragraph in doc.paragraphs:
for run in paragraph.runs:
run.font.bold = True #黑體
run.font.italic = True #斜體
run.font.underline = True #下劃線
run.font.strike = True #刪除線
run.font.shadow = True #陰影
run.font.size = Pt(15) #字型大小
run.font.color.rgb = RGBColor(255,255,0) #顏色
run.font.name = "微軟雅黑" #字型
r = run._element.rPr.rFonts #中文字型
r.set(qn('w:eastAsia'),"微軟雅黑")
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #duiqi
paragraph.paragraph_format.line_spacing = 2.0 #用浮點數,表示兩倍行間距
paragraph.paragraph_format.space_before = Pt(12) #pt(21)表示21磅
paragraph.paragraph_format.space_after = Pt(21)
doc.save("xin1.docx")
結果:
相關文章
- 利用Python實現微信半自動化操作!Python
- python-docx操作word文件詳解Python
- [Python] python-docx 編輯word文件Python
- 利用Github Actions實現自動化部署Github
- 搬運:python基於pywinauto實現PC端自動化 python操作微信自動化Python
- python-docx處理Word必備工具Python
- iOS--利用Fastlane實現自動化打包iOSAST
- 用C++Builder實現Word 97自動化 (轉)UI
- 利用python實現批量自動化運維指令碼案例薦Python運維指令碼
- 利用github提供的Webhooks實現自動化部署GithubWebHook
- 如何利用 RPA 實現自動化獲客?
- 利用C++Builder 中OLE自動化功能實現呼叫Word進行報表製作 (轉)C++UI
- 利用Python實現自動掃雷小指令碼Python指令碼
- freemark+dom4j實現自動化word匯出
- 利用 ACME 實現SSL證書自動化配置更新ACM
- 利用AI智慧體實現自動化公開課AI智慧體
- Golang 控制 iOS 裝置實現自動化操作GolangiOS
- python自動化審計及實現Python
- python+requests 實現介面自動化Python
- Python 實現自動化 Excel 報表PythonExcel
- python實現自動化辦公01Python
- 實現一鍵式自動化操作(快速建立 Python 與 Shell 檔案)Python
- 按鍵大師:用Python實現無人值守的自動化操作Python
- Python辦公自動化:效率飛躍,自動化批次彙總Excel到WordPythonExcel
- 使用Robot機器人框架實現自動化操作機器人框架
- 【python】實現文章同步csdn社群自動化Python
- Python 實現pywinauto自動化測試操作軟體(C/S結構)Python
- SaaS 營銷,如何利用 RPA 實現自動化獲客?
- Selenium自動化實現web自動化-1Web
- 【Python自動化Excel】Python與pandas字串操作PythonExcel字串
- 【python+selenium的web自動化】- 針對上傳操作的實現方案PythonWeb
- 用python實現selenium 自動化測試Python
- Python實現自動化測試入門指南Python
- Python操作WordPython
- 最全總結 | 聊聊 Python 辦公自動化之 Word(上)Python
- 最全總結 | 聊聊 Python 辦公自動化之 Word(中)Python
- 最全總結 | 聊聊 Python 辦公自動化之 Word(下)Python
- Python辦公自動化之——調整Word樣式(二)Python