Python-docx 模塊讀寫 Word 文檔基礎(一):創建文檔、段落格式、字體格式設置方法

Python-docx 模塊讀寫 Word 文檔基礎(一):創建文檔、段落格式、字體格式設置方法

前言:

從這篇博客開始,將開啓新一個專欄【Python與Word】。該專欄將詳細介紹Python的第三方包python_docx 操作 Office 辦公軟件 Word 文檔的方法。

python-docx 模塊簡介:

安裝方法:pip install python-docx
官方文檔地址: python-docx 0.8.10
python-docx 模塊集成了 Word 文檔的讀寫功能,不像 python 的 xlwt 和 xlrd 模塊操作 Excel 表格,一個輔助寫,一個負責讀,用起來還是很方便的。

【Python與Word】專欄簡介:

本專欄也會分兩個部分來講解:基礎接口(用法)詳解,實例演練 。
基礎接口講解內容:
1、python-doxc模塊新建(寫) Word 文檔(預計兩篇博客);
2、python-doxc模塊讀取 Word 文檔信息(預計一篇)。
實例演練:2-3 個實例。

本篇博客主要內容:

1、創建文檔與基礎操作;
2、文檔段落格式設置;
3、字體格式設置。

1、創建 Word 文檔及基礎用法:

模塊安裝後,導入模塊,新建 word 文檔對象:

# 導入模塊
from docx import Document

doc = Document()  # 新建文檔對象
'''按模板新建 word 文檔文件,具有模板文件的所有格式'''

新建了 Document 對象後就可以用它開始工作了:

# 增加標題:
doc.add_heading('標題',1)
'''
add_heading(self, text="", level=1):
'''

# 段落正文
par = doc.add_paragraph('第一個段落:')
print(par) 
# <docx.text.paragraph.Paragraph object at 0x000000000A889F08>
'''
add_paragraph(self, text='', style=None):
返回一個 Paragraph 段落對象
'''

# 在段落中添加文字
run_ = par.add_run('段落文字')
print(run_) 
# <docx.text.run.Run object at 0x000000000B2D31C8>
'''
add_run(self, text=None, style=None):
返回一個 run 對象
'''

解析:
以上代碼,在文檔中增加了一個標題、一個段落並在段落中增加了文字。以上三個方法都會返回相應的對象,以便後續的一些操作。

其他一些常用方法:(在文檔中增加圖片、表格)

# 增加圖片
pic_par = doc.add_picture('1.png')
'''
add_picture(self, image_path_or_stream, width=None, height=None):
返回一個 InlineShape 對象
'''
print(pic_par)  # <docx.shape.InlineShape object at 0x000000000B2F11C8>

# 增加表格
table = doc.add_table(2,3)
'''
add_table(self, rows, cols, style=None):
返回一個表格對象 
'''
print(table)  # <docx.table.Table object at 0x000000000B302688>

# 保存文件
doc.save('test.docx')

注:本篇博客會對 段落 run 對象進行詳細講解,增加圖片、表格方法將會放在下一篇博客裏介紹。

以上操作後,文件預覽:

在這裏插入圖片描述

2、段落格式設置:

add_heading 方法:

# 增加分頁符
doc.add_page_break()

# 增加標題 API 分析
for i in range(0,10):
    exec ("doc.add_heading('標題%s',%s)" % (i,i))
# 只能設置 0-9 級標題

add_heading 方法:是在Word 文檔中增加標題,也就是Word文檔中的這些快捷窗口:

在這裏插入圖片描述
0 - 9 級標題文件設置預覽:

在這裏插入圖片描述
新建一個段落,並對段落格式進行設置:

1、段落文字對齊設置:

# 增加分頁
doc.add_page_break()

par2 = doc.add_paragraph('第二個段落文本:麻煩給我的愛人來一杯MojIto,'
                         '我喜歡閱讀她微醺時的眼眸,而我的咖啡,糖不用太多,'
                         '這世界已經因爲她甜得過頭,沒有跟她笑容一樣濃郁的雪茄,'
                         '就別浪費時間介紹收起來吧,拱廊的壁畫,舊城的塗鴉,'
                         '所有色彩都因爲她說不出話。')

# Paragraph 段落格式設置
# 段落對齊設置:# 導入對齊選項
from docx.enum.text import WD_ALIGN_PARAGRAPH

# 設置段落文本右對齊
par2.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.RIGHT
'''
可選項有:
'LEFT', 0, 'left', 'Left-aligned'
'CENTER', 1, 'center', 'Center-aligned.'
'RIGHT', 2, 'right', 'Right-aligned.'
'JUSTIFY', 3, 'both', 'Fully justified.'
'DISTRIBUTE', 4, 'distribute', 'Paragraph characters are distrib'
            'uted to fill the entire width of the paragraph.'
'JUSTIFY_MED', 5, 'mediumKashida', 'Justified with a medium char'
            'acter compression ratio.'
'JUSTIFY_HI', 7, 'highKashida', 'Justified with a high character'
            ' compression ratio.'
'JUSTIFY_LOW', 8, 'lowKashida', 'Justified with a low character '
            'compression ratio.'
'THAI_JUSTIFY', 9, 'thaiDistribute', 'Justified according to Tha'
            'i formatting layout.'
'''
# 獲取段落設置的對齊方式
print(par2.alignment)

2、段落縮進設置:

# 段落縮進:
# 導入縮進單位
from docx.shared import Inches,Pt
# 左縮進,0.5 英寸
par2.paragraph_format.left_indent = Inches(0.5)
# 右縮進,20 磅
par2.paragraph_format.right_indent = Pt(20)
# 首行縮進
par2.paragraph_format.first_line_indent = Inches(1)

3、段落間距設置:

# 行間距
# par2.paragraph_format.line_spacing = Pt(20) # 20 磅
par2.paragraph_format.line_spacing = 1.5 # 1.5倍行距 單倍行距 1.0
"當line_spacing設置爲長度值時表示絕對距離,"
"設置爲浮點數時表示行高的倍數"

# 段前間距
par2.paragraph_format.space_before = Pt(5)
# 段後間距
par2.paragraph_format.space_after = Pt(10)

# 設置段落內部文字在遇到需分頁情況時處理狀態
par2.paragraph_format.keep_together = True  # 段中不分頁
par2.paragraph_format.keep_with_next = True # 與下段同頁
par2.paragraph_format.page_break_before = True # 段前分頁
par2.paragraph_format.widow_control = True # 孤行控制

以上段落設置方法,其實對應Word文檔中的段落設置方法:

在這裏插入圖片描述
以上代碼運行後文件效果截圖:

在這裏插入圖片描述
注:以上設置的段落格式,也均可獲取到設置值,如:

# 獲取段落的左縮進,首行縮進,段前間距:
l_space = par2.paragraph_format.left_indent
h_space = par2.paragraph_format.first_line_indent
b_space = par2.paragraph_format.space_before
print(l_space,h_space,b_space) 
# 打印結果
# 457200 914400 63500

3、字體格式設置:

首先明確一個概念:

python-docx 模塊中,paragraph 段落是一個塊對象,可以理解爲是一個容器。run 對象也是一個塊對象,可以理解爲具有相同格式的一段文字集合。

放在 word 文檔中簡單理解就是,一個段落包含許多文字,同一段落的文字,也可以有不同的格式。

注意:用 add_paragraph() 方法添加段落時,如果寫入了文本,就直接創建了一個 run。

測試一下上面的 paragraph 對象:

# 獲取上面段落對象 所有 run 對象
par2_run = par2.runs
print(par2_run) 
# 打印結果:
# [<docx.text.run.Run object at 0x000000000B307048>]

字體格式設置:

# 新建一個段落,增加一段文字
run_2 = doc.add_paragraph().add_run('這愛不落幕,忘了心事的國度,'
                                    '你所在之處,孤單都被征服,'
                                    '鐵鑄的招牌,錯落着就像,'
                                    '一封封城市獻給天空的情書,'
                                    '當街燈亮起,Havana漫步,'
                                    '這是世上最美麗的那雙人舞。')
# 設置字體格式
run_2.font.name = 'Times New Roman'  # 注:這個好像設置 run 中的西文字體
# 設置中文字體
# 需導入 qn 模塊
from docx.oxml.ns import qn
run_2.font.element.rPr.rFonts.set(qn('w:eastAsia'),'楷體')
# 設置字體大小
run_2.font.size = Pt(14)
# 設置加粗
run_2.font.bold = True
# 設置斜體
run_2.font.italic = True
# 設置字體顏色 需導入 rgb 顏色模塊
from docx.shared import RGBColor
run_2.font.color.rgb = RGBColor(255,55,55) # 紅色
# 設置下劃線
# run_2.font.underline = True
# 設置輪廓線
# run_2.font.outline = True
# 設置陰影
# run_2.font.shadow = True
# 刪除線
# run_2.font.strike = True
# 雙刪除線
# run_2.font.double_strike = True
# 設置下標
# run_2.font.subscript = True
# 設置上標
# run_2.font.superscript = True

注:
1、註釋掉的方法也都可以正常使用,之所以註釋掉是因爲設置太多格式,文字顯示效果會很亂。
2、像設置段落格式一樣,字體格式也可以被讀取。

以上代碼運行後,文件效果截圖:

在這裏插入圖片描述

結尾:

以上就是本篇博客全部內容了,感謝閱讀。
下一篇博客會詳細介紹:word 文檔中增加圖片、表格,寫入表格數據、設置格式等內容。

【Python與Office】專欄

該專欄會對 Python 的第三方模塊,如:xlwt,xlrd,python-docx等,操作 Office 辦公軟件(Word Excel PPT)的方法進行詳細講解。同時也會搭配一些實例演練,一方面強化知識點的理解與運用,另一方面也希望能起到,引導讀者進行思考:如何用 python 提高 offic 辦公軟件辦公效率的作用。

感興趣的朋友,可以點個 關注收藏 。如在博客中遇到任何問題或想法,可留言或私信。

創作不易,你的支持是我最大的動力,感謝 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章