日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python word排版_利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等

發布時間:2024/5/8 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python word排版_利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

前兩篇博客介紹了 Python 的 docx 模塊對 Word 文檔的寫操作,這篇博客將介紹如何用 docx 模塊讀取已有 Word 文檔中的信息。

本篇博客主要內容有:

1、獲取文檔的章節信息;

2、獲取段落文本信息;

3、獲取表格內文本信息;

4、獲取文檔內格式信息。

1、獲取文檔章節信息:

1、用docx模塊獲取已有的word文檔對象:

from docx import Document

# Document 類,不僅可以新建word文檔,也可以打開一個本地文檔

doc = Document(‘test03.docx‘) # 想獲取的文檔文件名,這里是相對路徑。

用做示例的 test03.docx 文件截圖如下:

文檔中有兩個章節共兩頁(一個章節一頁),一個章節的頁面為 A3 ,另一個為 A4。

2、獲取文檔章節信息:

# 獲取文檔所有章節

sections = doc.sections

"class Sections(Sequence):"

print(sections)

#

# 查看章節數量

print(len(sections)) # 2

注意:

章節對象的概念雖然比段落對象大,章節對象可以設置本章節的頁面大小頁眉頁腳等,在該章節的段落對象必須遵守該章節的設置。

但是又并不存在包含關系,也就是說不能通過章節對象獲取到段落信息。

3、獲取頁邊距等信息:

# 獲取章節對象的頁邊距等信息

sec0 = sections[0]

"class Section(object):"

‘‘‘

官方解釋:文檔節,提供對節和頁面設置的訪問。

還提供對頁眉和頁腳的訪問。

‘‘‘

print(sec0)

#

# 獲取章節頁面信息

# 獲取頁面邊距值:(單位為像素)

print(‘左邊距:‘,sec0.left_margin)

# 左邊距: 914400

print(‘右邊距:‘,sec0.right_margin)

# 右邊距: 914400

print(‘上邊距:‘,sec0.top_margin)

# 上邊距: 1143000

print(‘下邊距:‘,sec0.bottom_margin)

# 下邊距: 1143000

print(‘頁眉邊距:‘,sec0.header_distance)

# 頁眉邊距: 540385

print(‘頁腳邊距:‘,sec0.footer_distance)

# 頁腳邊距: 629920

print(‘頁面方向:‘,sec0.orientation)

# 頁面方向: LANDSCAPE (1)

print(‘頁面高度:‘,sec0.page_height)

# 頁面高度: 10657205

print(‘頁面寬度:‘,sec0.page_width)

# 頁面寬度: 15085695

這里獲取的是第一個章節的頁面信息,也就是 A3 頁面的信息。

注:上一篇博客 往Word文檔中插入圖片、表格,設置表格樣式,章節,頁眉頁腳等,在介紹設置頁面信息時,忘記介紹如何設置頁面方向了,這里補充一下:

設置頁面方向:

# 導入設置頁面方向所需模塊

from docx.enum.section import WD_ORIENT

# 獲取章節對象

section = document.sections[0]

# 設置頁面方向

section.orientation = WD_ORIENT.LANDSCAPE # 橫向

可設置項有橫向( LANDSCAPE ) 和縱向 ( PORTRAIT ):

‘‘‘

‘PORTRAIT‘, 0, ‘portrait‘, ‘Portrait orientation.‘

‘LANDSCAPE‘, 1, ‘landscape‘, ‘Landscape orientation.‘

‘‘‘

文檔截圖:

4、獲取文檔頁眉頁腳信息:

head0 = sec0.header # 獲取頁眉對象

print(head0)

#

head0_pars = head0.paragraphs # 獲取 頁眉 paragraphs

# 獲取頁眉文字信息

# 因存在多個 paragraph 對象的可能所以用循環讀取的方式

head0_string = ‘‘

for par in head0_pars:

head0_string += par.text

print(head0_string)

# 儀征市馬集鎮總體規劃(2017-2030)——說明

# 獲取頁腳信息,也是類似的方法

foot0 = sec0.footer

print(foot0) # 獲取頁腳對象

#

foot0_pars = foot0.paragraphs

foot0_string = ‘‘

for par in foot0_pars:

foot0_string += par.text

print(foot0_string)

# 1

2、獲取段落文字信息:

1、獲取Word文檔所有段落對象:

"獲取文檔所有段落信息:"

# 獲取文檔所有段落對象

paragraphs = doc.paragraphs

注意:

paragraphs 獲取的是文檔中所有段落對象的列表,嚴格來說是word文檔中正文部分的段落對象列表。因為通過前文的介紹,許多除正文部分,如 表格,頁面頁腳等元素也包含 paragraph 對象。

而 doc.paragraphs 獲取到的 paragraph 不包含這些段落對象。

2、獲取段落對象文字信息:

print(paragraphs)

print(len(paragraphs)) # 打印結果:20

# 獲取一個段落對象的文字信息

par0 = paragraphs[0]

print(par0)

par0_string = par0.text

print(par0_string)

# 獲取所有段落文字信息

pars_string = [par.text for par in paragraphs]

print(pars_string)

par0_string 打印截圖:

3、獲取段落格式信息:

print(‘段落對齊方式:‘,par0.paragraph_format.alignment)

# 段落對齊方式: LEFT (0)

print(‘左縮進:‘,par0.paragraph_format.left_indent)

# 左縮進: None

print(‘右縮進:‘,par0.paragraph_format.right_indent)

# 右縮進: None

print(‘首行縮進:‘,par0.paragraph_format.first_line_indent)

# 首行縮進: 304800

print(‘行間距:‘,par0.paragraph_format.line_spacing)

# 行間距: 1.5

print(‘段前間距:‘,par0.paragraph_format.space_before)

# 段前間距: 198120

print(‘段后間距:‘,par0.paragraph_format.space_after)

# 段后間距: 198120

3、獲取文字格式信息:

paragraph 對象 里還有更小的 run 對象,run 對象才包含了段落對象的文字信息。

paragraph.text 方法也是通過 run 對象的方法獲取到文字信息的:

paragraph.text 方法源碼:

def text(self):

text = ‘‘

for run in self.runs:

text += run.text

return text

文字的字體、大小、下劃線等信息都包含在 run 對象中(不清楚的看前面的博客):

# 獲取段落的 run 對象列表

runs = par0.runs

print(runs)

# 獲取 run 對象

run_0 = runs[0]

print(run_0.text) # 獲取 run 對象文字信息

# 打印結果:

# 堅持因地制宜,差異化打造特色小鎮,

文檔 段落 和 run 對象示意:

獲取文字格式信息:

# 獲取文字格式信息

print(‘字體名稱:‘,run_0.font.name)

# 字體名稱: 宋體

print(‘字體大小:‘,run_0.font.size)

# 字體大小: 152400

print(‘是否加粗:‘,run_0.font.bold)

# 是否加粗: None

print(‘是否斜體:‘,run_0.font.italic)

# 是否斜體: True

print(‘字體顏色:‘,run_0.font.color.rgb)

# 字體顏色: FF0000

print(‘字體高亮:‘,run_0.font.highlight_color)

# 字體高亮: YELLOW (7)

print(‘下劃線:‘,run_0.font.underline)

# 下劃線: True

print(‘刪除線:‘,run_0.font.strike)

# 刪除線: None

print(‘雙刪除線:‘,run_0.font.double_strike)

# 雙刪除線: None

print(‘下標:‘,run_0.font.subscript)

# 下標: None

print(‘上標:‘,run_0.font.superscript)

# 上標: None

注:前面的博客好像也沒介紹文字背景顏色的設置…

背景顏色設置方法: (與字體顏色設置方法有區別)

# 設置背景顏色

from docx.enum.text import WD_COLOR_INDEX

run_2.font.highlight_color = WD_COLOR_INDEX.YELLOW

背景顏色可選值有:

‘‘‘

‘AUTO‘, 0, ‘default‘

‘BLACK‘, 1, ‘black‘

‘BLUE‘, 2, ‘blue‘

‘BRIGHT_GREEN‘, 4, ‘green‘,

‘DARK_BLUE‘, 9, ‘darkBlue‘,

‘DARK_RED‘, 13, ‘darkRed‘

‘DARK_YELLOW‘, 14, ‘darkYellow‘

‘GRAY_25‘, 16, ‘lightGray‘

‘GRAY_50‘, 15, ‘darkGray‘

‘GREEN‘, 11, ‘darkGreen‘

‘PINK‘, 5, ‘magenta‘

‘RED‘, 6, ‘red‘

‘TEAL‘, 10, ‘darkCyan‘

‘TURQUOISE‘, 3, ‘cyan‘

‘VIOLET‘, 12, ‘darkMagenta‘

‘WHITE‘, 8, ‘white‘

‘YELLOW‘, 7, ‘yellow‘

‘‘‘

4、獲取文檔中表格信息:

示例文檔中表格截圖:

1、獲取表格樣式、單元格對象及文字信息:

# 獲取文檔中表格信息

tables = doc.tables # 獲取文檔中所有表格對象的列表

print(tables)

# []

print(len(tables)) # 查看文檔中表格數量

# 1

table0 = tables[0] # 獲取表格對象

# 獲取表格的樣式信息

print(table0.style)

# _TableStyle(‘Normal Table‘) id: 190621384

# 獲取一個表格的所有單元格

cells = table0._cells

print(len(cells)) # 表格中單元格數量

# 15

# 獲取單元格內所有文字信息

cells_string = [cell.text for cell in cells]

print(cells_string)

cells_string 打印截圖:

從截圖中可以看出來,用 tableobj._cells 獲取到的單元格對象列表是按行排列的。

2、獲取表格的行列對象:

# 獲取表格對象行數量、列數量

col_num = len(table0.columns)

print(col_num) # 3

# 行數量

row_num = len(table0.rows)

print(row_num) # 5

# 獲取行對象

row0 = table0.rows[0]

# 獲取列對象

col0 = table0.columns[0]

# 獲取行對象文字信息

‘要用 row0.cells 獲取行對象的 cell 才能獲取其文字信息‘

row0_string = [cell.text for cell in row0.cells]

print(row0_string)

# 獲取列對象文字信息

col0_string = [cell.text for cell in col0.cells]

print(col0_string

注:在介紹單元格格式信息時,說過單元格內文字信息也是通過 run 對象設置,故獲取文字信息也和前面獲取段落文字信息類似,就不重復講了。

結尾:

以上就是本篇博客的全部內容了,后面將會用兩個實例來將前面三篇博客的知識點串聯起來,感謝閱讀。

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

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

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

原文地址:https://www.cnblogs.com/cnchemmy/p/13266233.html

總結

以上是生活随笔為你收集整理的python word排版_利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。