使用 python 創建&更改 word 文檔



使用 python 修改 word 文檔

說明:這個需求是老師想要一個自動識別 word 文檔中指定位置的分數,並填入相應表格。
使用庫 python-docx 的官方文檔地址是:python-docx

一、安裝 python-docx 庫文件

在 cmd 命令行中使用以下命令安裝庫文件

pip install python-docx

安裝效果如下圖:
安裝庫文件

二、引入庫,創建&打開&保存 docx 文檔

from docx import Document

這個命令引入了我們上面安裝的庫文件,這時我們便可以使用相應的命令進行創建修改文檔了。

#新建空文檔
document = Document()

#打開已經存在的文檔
document = Document(“d:\temp/python/test.docx”)
#注意上方語句的斜線方向
#打開文件可以指定路徑和文件名,保存的時候亦同,如不指定默認當前工作目錄

document.save(“當前目錄保存.docx”)

document.save(“d:\python/指定目錄保存.docx”)

這個命令變創建了一個 Document 對象,並且可以往里面寫入數據了。
需要說明的是創建的文件目錄在當前 python 的 “工作目錄” 下面。

import os
#獲取當前目錄
os.getcwd()

三、修改文檔

1、添加標題

#添加內容為 “This is a title" 大綱級別為 2 的標題
document.add_heading(“This is a title”,2)
#下面這種寫法和上面的寫法效果相同
document.add_heading(“This is a title”,level=2)

當大綱級別為 0 的時候,便是居中的文檔題目,默認為 1 。
官方文檔里面有一個這樣的寫法:

document.add_paragraph(‘Intense quote’, style=‘Intense Quote’)
#>但是我沒有實驗成功。提示 style 參數不存在,我換成中文 “樣式” 依然不可以。

2、添加段落

document.add_heading(“這是標題”)
document.add_paragraph(“聽說這樣直接加入的段落同時會加入結束符”)
document.add_paragraph(“如果這一行與上一行換行了,就說明這是兩個段落”)

下圖是效果圖,有的字體看着好像加粗了應該是字體格式問題,還有 word 兼容問題。查看了一下字體,使用的是 MS Gothic 格式的字體。
添加標題
==3、我們可以發現上面的方法,每寫一句話都會產生換行,==也就是開始新段落。那么有沒有方法接着上一次的寫呢?有的,看如下代碼。

p = document.add_paragraph(“這是一個新段落的開始。”)
p.add_run(“這句話應該是接着上面的寫的。”)
p.add_run(“這句話當然也是,而且是粗體”).bold = True
p.add_run(“然后再來個斜體。”).italic = True

添加段落
4、添加圖片
官方示例代碼如下:

document.add_picture(‘monty-truth.png’, width=Inches(1.25))
#實踐過程中發現 Inches 無法識別,圖片添加失敗
document.add_picture(‘monty-truth.png’)
#如上,去掉寬度設定后可以添加成功,但是無法控制其大小。

5、添加表格
官方代碼示例如下:

records = (
(3, ‘101’, ‘Spam’),
(7, ‘422’, ‘Eggs’),
(4, ‘631’, ‘Spam, spam, eggs, and spam’)
)
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = ‘Qty’
hdr_cells[1].text = ‘Id’
hdr_cells[2].text = ‘Desc’
for qty, id, desc in records:
row_cells = table.add_row().cells
row_cells[0].text = str(qty)
row_cells[1].text = id
row_cells[2].text = desc
#添加分頁符
document.add_page_break()

這個例子我沒有做過多的測試,效果如下圖,表格正常,只是沒有線。
添加表格

三、需求實現階段

目前只有思路,具體代碼待進一步測試實現。整體規划如下:

1、將所有的學生作業放到一個文件夾下,使用代碼獲取當前路徑,及當前路徑下所有文件名。
2、將獲取的目錄下文件名及其過程寫入日志保存,以備查驗。
3、使用文件名按順序讀取上一步獲取的文檔,使用正則匹配提取姓名和學號,寫入表格相應位置。
4、使用文檔模塊循環讀取上一步文檔內容,正則匹配到指定位置獲取分數值,寫入表格相應位置。
5、在3和4步驟之間循環執行,直到所有文件讀寫完畢,程序退出,日志保存。
**注:**日志需要保存第 1 步獲取的所有文件名,及預提取的姓名和學號。和第 3、4 步驟寫入表格位置的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM