电竞比分网-中国电竞赛事及体育赛事平台

分享

效率成倍提升!使用 Python 來處理 Word/Excel 文檔

 北方的白樺林 2019-11-16

這是 Python 小專欄的第 ⑤ 期

在大家日常工作和學習中,WordExcel文檔是經常打交道的。Python 中有很多庫提供了對文檔和表格的操作處理功能,借助這些庫,可以輕松實現文檔表格的生成和修改

想象這樣的場景:從公司系統(tǒng)中導出的 Excel 數據,要填到 Word 文檔中做成報告的形式。如果每天都要這樣做,人工去復制各個數據不僅麻煩低效,也很容易出錯。借助 Python,只需很少的代碼,就能輕松實現這些操作。

今天給大家介紹幾個非常實用的 Word 和 Excel 處理的庫。篇幅限制,不會對每個庫都詳細講解,大家可以搜索庫的名字,找到相關的博客文章,但更建議熟悉英文閱讀的小伙伴參考給出的官方文檔來學習使用。

python-docx

文檔地址:http://python-docx./en/latest/

這是一個用來生成和修改 Word 文檔的庫,你可以添加標題、段落、圖片、表格,設置格式。

例如官方示例中,通過下面的代碼,你就能生成一份如圖所示的 Word 文檔:

生成的文檔效果:

python-docx-template

文檔地址:http://docxtpl./en/latest/

這也是操作 Word 文檔的庫,而且是在上一個 python-docx 的基礎之上開發(fā)的。主要原因是作者覺得 python-docx 庫在生成 Word 文檔方面很強大,但是在批量查找替換方面做的不夠好。

這個庫的 Python 包名叫 docxtpl,借助它,你可以在 Word 文檔中使用 jinja2 的模板語法來準備一份 Word 模板,然后在 Python 中傳入相關參數就能實現查找替換,批量生成 Word 文檔。(熟悉前端開發(fā)的小伙伴大概都知道網頁的模板引擎,jinja2 是 Python web 開發(fā)中廣泛使用的一種模板引擎。具體語法請自行搜索)

例如,在 Word 中,可以寫這樣一段內容:

然后使用 docxtpl 寫這段代碼:

就能生成下圖的 Word 文檔。其中 {} 的位置,替換成了 hello 參數的值。而 你好 這兩個字,由于參數中沒有 today,不符合 if 的判斷條件,就不會輸出。

借助 docxtpl,你可以在一份預先排好版的 Word 模板中,預留一些標簽占位,然后使用實際數據 render 一下這份模板,就能把數據填進去了。

xlrd, xlwt,xlutils

文檔地址:

http://xlrd./en/latest/

http://xlwt./en/latest/

http://xlutils./en/latest/

主要用來處理 Excel 文檔的幾個庫, xlrd 用來讀, xlwt 用來寫, xlutils 用于做復制、篩選等針對文檔文件的操作。

代碼示例:

通常 Excel 是一張二維表格的形式,通過行號和列號來找到每一個單元格,Python 庫中對 Excel 的操作也是如此,指定行號和列號就能定位到一個單元格,可以在這里讀取或寫入數據,甚至設定格式等。

應用場景

應用場景很廣泛,主要適合工作中的報表自動化等環(huán)節(jié)。例如文章開頭提到的場景中,你可以將每天要做的 Word 報告,使用 docxtpl 做成模板,各個位置用 {} 設置好占位符。然后每天拿到 Excel 表格,可以使用 xl** 相關包把數據讀取出來,然后自動替換到 Word 模板中。開發(fā)這套流程需要一點時間,但一旦做成,生成一份報表只要幾秒鐘。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多