在實習工作中,如果遇到辦公自動化,就要用到python操作word。python 有多種用于操作 word 文檔的庫,python的強大,就是因為庫的強大。其中最常用的是 python-docx 庫。但是要說明的是python-docx 不支持 doc 文檔,只支持docx 格式,如果要使用doc 文檔,需要使用word軟件,將其文件另存為 docx 格式即可。以下介紹一些使用 python-docx 庫的常見的方法:
安裝 python-docx 庫。
可以使用 pip 、conda、mamba安裝,根據(jù)您使用的不同環(huán)境選擇。命令如下:
pip install python-docx
conda install python-docx -c conda-forge
mamba install python-docx -c conda-forge
打開 Word 文檔。
使用 python-docx 庫,您可以打開一個已有的 Word 文檔或者創(chuàng)建一個新的 Word 文檔。以下是一個打開現(xiàn)有 Word 文檔的基本示例代碼:
import docx
# 打開已有的 Word 文檔
doc = docx.Document('e:/test.docx')
讀取Word 文檔中的所有段落內(nèi)容
讀取Word 文檔中的所有段落內(nèi)容。示例代碼如下:
# 讀取文檔中的所有段落
for para in doc.paragraphs:
print(para.text)
讀取Word文檔中的表格所有表格內(nèi)容
讀取Word文檔中的表格所有表格。示例代碼如下:
# 讀取文檔中的表格
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
插入圖片內(nèi)容
插入圖片內(nèi)容。示例代碼如下:
# 插入一張圖片
doc.add_picture('e:/image.png')
插入一段新的段落
插入一段新的文本內(nèi)容。示例代碼如下
# 插入一段新的文本
doc.add_paragraph('這是一個新的段落。')
修改段落文本內(nèi)容
修改文檔中的第一個段落內(nèi)容,示例代碼如下:
# 獲取第一個段落的內(nèi)容,并更新內(nèi)容。
paragraph = doc.paragraphs[0]
paragraph.text = '體育盛會的目標,不僅僅是競技,更是融合了人類追求和平、平等、合作發(fā)展的愿望。\n過去幾十年,亞洲地區(qū)總體保持穩(wěn)定,經(jīng)濟持續(xù)快速增長,成就了“風景這邊獨好”的亞洲奇跡。作為山海相連、人文相親的命運共同體,我們要以體育促和平,堅持與鄰為善和互利共贏,抵制冷戰(zhàn)思維和陣營對抗,將亞洲打造成世界和平的穩(wěn)定錨。'
使用 doc.paragraphs[0] 訪問文檔中的第一個段落。接下來paragraph.text = 'New text' 將段落文本修改為 'New text'。paragraph.style = 'Heading 1' 將段落樣式修改為 'Heading 1'。注意修改內(nèi)容有一個換行'\n'的符號,意味著顯示的時候,直接換行。
修改段落字體大小
修改文檔中字體大小,示例代碼如下:
from docx.shared import Pt
# 設置字體大小16磅
paragraph.style.font.size = Pt(16)
導入 Pt 類。用于指定字體大小。設置段落的字體大小為 16磅,可以使用類似的方法來修改文檔中的其他格式,例如字體顏色、字體類型和行距等。
修改段落字體顏色
修改文檔中字體顏色,示例代碼如下:
from docx.shared import RGBColor
# 字體顏色,紅色
paragraph.style.font.color.rgb = RGBColor(255, 0, 0)
導入RGBColor類。用于指定不同的顏色。設置字體的顏色紅色。
修改段落中文字體
修改文檔中字體,示例代碼如下:
from docx.oxml.ns import qn
# 段落中文字體
paragraph.style.element.rPr.rFonts.set(qn('w:eastAsia'), '黑體')
導入qn類。用于設定中文字體為黑體。
新建一個文檔
創(chuàng)建一個新的Word文檔,示例代碼如下:
import docx
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Pt
#創(chuàng)建一個新的Word文檔
doc = docx.Document()
# 設置正文字型 英文字型:Times New Roman; 中文字型:宋體
doc.styles['Normal'].font.name = 'Times New Roman'
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')
# 設置正文字體大小
doc.styles['Normal'].font.size = Pt(12)
# 設置正文字體顏色
doc.styles['Normal'].font.color.rgb = RGBColor(0, 0, 0)
創(chuàng)建了一個新的word文檔,并設置正文字型 英文字型:Times New Roman; 中文字型:宋體,正文字體大小為12磅,字體顏色為黑色。
操作表格
(1)新建表格
# 表格
table = doc.add_table(rows=3, cols=3, style='Table Grid')
使用add_table,建立3行3列的表格。
(2)給表頭賦值
# 表頭
hc = table.rows[0].cells
hc[0].text = '姓名'
hc[1].text = '年齡'
hc[2].text = '性別'
給表頭賦值姓名、年齡、性別。需要說明的是:table.cell的單元格的幾行幾列,編號是從0開始編號的。
(3)給表格賦具體內(nèi)容
# 具體內(nèi)容
bc1 = table.rows[1].cells
bc1[0].text = '張三'
bc1[1].text = '12'
bc1[2].text = '男'
bc2 = table.rows[2].cells
bc2[0].text = '麗麗'
bc2[1].text = '34'
bc2[2].text = '女'
給表格賦具體內(nèi)容,分別為張三、麗麗及年齡和性別。
(4)修改表格定位表格,示例代碼如下:
# 獲取所有表格對象
tables = doc.tables
# 獲取word中第一個表格對象
table = tables[0]
(5)獲取單元格對象,示例代碼如下:
a11 = table.cell(1, 1) # 獲取第二行第二列單元格對象
b12= table.cell(1, 2) # 獲取第二行第三列單元格對象
需要說明的是:table.cell的單元格的幾行幾列,編號是從0開始編號的。
(6)修改單元格整體內(nèi)容,示例代碼如下:
# 修改單元格全部內(nèi)容
a11.text = '新的內(nèi)容a11'
通過重新賦值text的內(nèi)容,修改單元格全部內(nèi)容。
(7)修改單元格段落內(nèi)容,示例代碼如下:
# 獲取a單元格所有段落對象。如果單元格是空,那么只有一個空段落對象
ps = a11.paragraphs
# 獲取第一個段落對象
p = ps[0]
# 修改整個段落內(nèi)容
p.text = '新的段落a11'
# 追加段落內(nèi)容
p.add_run('加段落a11')
操作單元格段落內(nèi)容的方法與修改段落文本內(nèi)容類似。
設置頁眉
頁眉設置,示例代碼如下:
# 頁眉設置
header = doc.sections[0].header
header.add_paragraph('風輕云淡頁眉')
設置頁腳
頁腳設置,示例代碼如下:
#頁腳設置
footer = doc.sections[0].footer
footer.add_paragraph('風輕云淡頁腳')
保存文檔
完成對文檔內(nèi)容的操作后,您肯定需要保存 Word 文檔。代碼如下所示:
# 保存文檔
doc.save('e:/document.docx')
保存文檔時,這個文檔不能被其他應用程序打開或者占用,如office已經(jīng)打開,否者保存失敗,程序會報錯。如果文檔存在,它直接覆蓋,而沒有任何提示。
總之,使用 python-docx 庫操作 Word 文檔,其功能非常強大,需要一些基本的編程和 Word 文檔的知識。熟練使用它,可以實現(xiàn)自動化生成word文檔,自動修改word文檔,而達到辦公自動化的目的。