Python 操作 Word 寫入
日常辦公中,無論你是程序員還是普通文職人員,操作 Word 一定在你的工作中占了非常大的比例。項目文檔、需求分析文檔、合同報價、方案等等,這一系列都需要在Word中進行完成。但如何更高效靈活的使用 Word 你知道么?本小節將介紹 Python 第三方庫 python-docx 模塊完成對 Word 的操作。
1. python-docx模塊介紹
python-docx 是用于創建和更新 Microsoft Word(.docx)文件的 Python 庫。
通過本小節的學習,我們最終要完成Word文檔 "info.docx"的創建,文檔內容(花式 pick 慕課網)如下圖所示。
1.1 安裝
python-docx 是 Python 的第三方庫,使用前需要通過以下命令進行安裝:
pip install python-docx
1.2 使用步驟
步驟1:導入 docx 模塊
from docx import Document
步驟2:創建(讀取)一個文檔對象
document = Document() # 新建文檔對象
Document("info.docx") #讀取現有的word 建立文檔對象
步驟3:向文檔中寫入內容
根據 docx 提供的方法,完成 Word文檔所需內容的寫入。
步驟4:生成 Excel 文件
from docx import Document
document = Document() # 新建文檔對象
...省略部分代碼
document.save('C:/info.docx')# 保存文檔
通過 save() 方法進行保存,生成 Word 文件,save() 方法可以傳入你想要保存到的文件路徑。到這里就完成了新的 Word 文檔創建和內容寫入的操作。
2. python-docx 操作 Word 寫入
接下來,針對 python-docx提供的常用寫入方法進行講解,這里根據寫入內容的類型進行劃分。
2.1 寫入文本
寫入文本內容常用方法見下表。
方法名 | 描述 |
---|---|
add_heading(text=u’’, level=1) | 寫入標題段落 |
add_paragraph(text = u’’,style=None) | 寫入普通段落 |
insert_paragraph_before(text = u’’,style=None) | 插入段落到現有段落之前 |
下面來具體看下每個方法的使用:
- add_heading() 使用:
from docx import Document
document.add_heading('慕課網簡介', level=1)
document.save('info.docx')
代碼解釋:add_heading() 方法寫入標題段落,段落樣式由 level 決定,level范圍為0 至 9,默認為1。執行完成后,info.docx 文檔效果如下圖所示。
- add_paragraph() 使用:
from docx import Document
document.add_heading('慕課網簡介', level=1)
p1 = document.add_paragraph(
'慕課網是垂直的互聯網IT技能免費學習網站。以獨家視頻教程、在線編程工具、學習計劃、問答社區為核心特色。在這里,你可以找到最好的互聯網技術牛人,也可以通過免費的在線公開視頻課程學習國內領先的互聯網IT技術')
document.save('info.docx')
代碼解釋:add_paragraph() 方法寫入段落,段落樣式由 style 決定(本小節中僅寫入段落,后續小節會對應用樣式進行介紹),執行完成后,info.docx 文檔效果如下圖所示。
- insert_paragraph_before() 使用:
from docx import Document
document.add_heading('慕課網簡介', level=1)
p1 = document.add_paragraph(
'慕課網是垂直的互聯網IT技能免費學習網站。以獨家視頻教程、在線編程工具、學習計劃、問答社區為核心特色。在這里,你可以找到最好的互聯網技術牛人,也可以通過免費的在線公開視頻課程學習國內領先的互聯網IT技術')
p1.insert_paragraph_before('!!!慕課網是垂直的互聯網IT技能免費學習網站')
document.save('info.docx')
代碼解釋:insert_paragraph_before() 方法為插入段落到現有段落之前,段落樣式由 style 決定。執行完成后,info.docx 文檔效果如下圖所示。
2.2 寫入圖片
寫入圖片方法,見下表。
方法 | 描述 |
---|---|
add_picture(image_path_or_stream,width = None,height = None ) | 插入指定圖片 |
對應代碼中訪問,如下所示:
from docx import Document
from docx.shared import Pt
document.add_heading('慕課網簡介', level=1)
...省略部分代碼
document.add_picture('logo.jpg')
document.add_picture('logo.jpg', Pt(20), Pt(30))
document.save('info.docx')
代碼解釋:add_picture() 方法為插入指定圖片,并根據寬度和高度縮放。如果未指定寬度或高度,則圖片以其原始尺寸顯示。代碼中共插入了 2 張 logo 圖片,第一張沒有設置寬度和高度即按原始尺寸插入,第二張根據指定的寬度和高度按比例縮放,參數 Pt 為 points 磅,與字號對應可以參考下圖。
執行完成后,info.docx 文檔效果如下圖所示。
2.3 寫入表格
寫入表格方法,見下表。
方法 | 描述 |
---|---|
add_table(rows, cols) | 插入指定行數、列數的表格 |
通過表格可以很好的展示列表形式的數據,下面使用 add_table() 方法創建一個關于最新課程的表格,包含課程名稱、講師和價格。代碼如下所示:
...省略部分代碼
# 插入表格(1行3列,表格應用樣式Medium List 2)
table = document.add_table(rows=1, cols=3, style='Medium List 2')
# 獲取到第一行中的單元格列表
header_cells = table.rows[0].cells
header_cells[0].text = '新上好課'
header_cells[1].text = '講師'
header_cells[2].text = '價格'
# 初始化課程數據
data = (
['Java實操避坑指南', "勤一", 298],
['Vue2.5->2.6->3.0 開發去哪兒網APP', "DELL", 266],
['Vue3.0(正式版) + TS 仿知乎專欄企業級項目', "張軒", 298],
)
# 循環課程數據
for item in data:
# 使用add_row()方法創建新的一行
rows_cells = table.add_row().cells
rows_cells[0].text = item[0]
rows_cells[1].text = item[1]
rows_cells[2].text = str(item[2])
document.save('info.docx')
代碼解釋:add_table() 方法為插入指定行數、列數的表格,參數rows為指定行數, cols為指定列數, style為表格應用的樣式。代碼中初始表格為 1 行 3 列,在填充處理的位置,通過遍歷調用 add_row() 方法添加新的一行,為其設置各單元格內容。執行完成后,info.docx文檔效果如下圖所示。
3.小結
本節課程我們主要學習了 python-docx 模塊的使用。本節課程的重點如下:
- 了解 python-docx 模塊作用及使用步驟;
- 掌握 python-docx 模塊中寫入文本、圖片、表格的使用方法。