杜志超,許 中,冉 靜,黃碧珍,林躍藝
(廈門大學(xué)附屬第一醫(yī)院,福建 廈門 361003)
Microsoft Excel 是微軟推出的包含在Microsoft Office 內(nèi)獨(dú)立的一款辦公軟件。Excel 作為微軟旗下Office 系列辦公軟件中的一員,擁有強(qiáng)大的計(jì)算、分析、傳遞和共享功能,可以幫助我們將繁雜的數(shù)據(jù)轉(zhuǎn)化為信息,是一款在各行各業(yè)中被廣泛使用的數(shù)據(jù)處理的工具。盡管Excel 的功能十分強(qiáng)大,但在諸多常見的數(shù)據(jù)處理和分析工作中,尤其是批量文件處理時(shí),通常需要用戶通過靈活地組合使用包含函數(shù)、VBA 等高級功能才能完成任務(wù),這對于很多人而言,是一個(gè)十分艱難的學(xué)習(xí)和使用過程。Python是一種可在多數(shù)平臺上寫腳本和快速開發(fā)應(yīng)用的、十分受歡迎的編程語言。本文通過介紹Python 第三方Excel 讀寫庫xlwings,并以醫(yī)師腫瘤藥品權(quán)限申請匯總為例,闡述其在批量Excel 文件處理中的用法。本文所有程序基于Python 3.9.7和xlwings 0.25.3。
xlwings是一款開源且免費(fèi)的Python第三方庫,可在Windows 和macOS 系統(tǒng)上運(yùn)行。借助xlwings,用戶不僅能夠非常便捷地對.xls和.xlsx 的Excel后綴文件進(jìn)行讀取、寫入、修改、保存、樣式調(diào)整、圖片插入等操作,而且還可以通過與NumPy、Pandas、Matplotlib、scikit-learn 等強(qiáng)大的Python 第三方庫結(jié)合使用,實(shí)現(xiàn)數(shù)據(jù)挖掘、數(shù)據(jù)分析和報(bào)表制作等功能。
本文以實(shí)際工作中醫(yī)師腫瘤藥品權(quán)限申請匯總場景為例,介紹xlwings 在批量Excel 文件數(shù)據(jù)加工中的應(yīng)用。
數(shù)據(jù)來源為:每個(gè)臨床科室分別提交的醫(yī)生申請表,數(shù)據(jù)來源樣表見表1(注:僅展示部分字段),表中表頭帶*號的為必輸字段,其余字段為選擇“申請腫瘤藥品序號”后,Excel自動(dòng)帶出的不可編輯信息。

表1 醫(yī)師腫瘤藥品權(quán)限申請樣表
目標(biāo)輸出為:合并匯總所有臨床科室的申請表信息,按藥品、科室分別匯總申請人信息,結(jié)果輸出樣表見表2(注:僅展示部分字段)。

表2 結(jié)果輸出樣表
創(chuàng)建Python 字典對象apply_info 用于存儲(chǔ)申請數(shù)據(jù),具體結(jié)構(gòu)樣例如下:

通過xlwings 逐行讀取Excel 申請表中的數(shù)據(jù),存儲(chǔ)至apply_info中,具體實(shí)現(xiàn)如下:



將所有臨床科室的申請表放入同一文件夾中,通過遍歷文件夾中的文件,將所有申請數(shù)據(jù)存儲(chǔ)至apply_info中,具體實(shí)現(xiàn)如下:

將藥品信息按藥品序號作升序排序(假定藥品序號為從1 開始的連續(xù)值,則藥品序號即為所在行號減1),并按目標(biāo)輸出格式制作成模板。遍歷申請數(shù)據(jù)字典apply_info,將每個(gè)藥品的申請人按科室填入對應(yīng)單元格中,具體實(shí)現(xiàn)如下:


在實(shí)際場景中,會(huì)出現(xiàn)不斷有科室提交新增申請數(shù)據(jù)的情況,為避免低效地全量生成,可以通過增量添加的方式進(jìn)行更新,同時(shí)可以對有更新的單元格添加標(biāo)記,便于核對,具體實(shí)現(xiàn)如下(僅展示部分關(guān)鍵代碼):


本文以解決實(shí)際工作中醫(yī)師腫瘤藥品權(quán)限申請匯總場景為例,介紹了xlwings 在批量Excel 文件數(shù)據(jù)加工中的應(yīng)用。借助xlwings 我們可以高效地實(shí)現(xiàn)對批量Excel 文件的信息讀取,經(jīng)數(shù)據(jù)加工后,不僅可以輸出為目標(biāo)結(jié)果,而且可以有針對性地對特定的行、列、單元格等設(shè)置樣式,以達(dá)到標(biāo)識或美化報(bào)表的目的。本文僅用到xlwings 的基礎(chǔ)功能,例如與Matplotlib 結(jié)合使用生成Excel 圖表、使用純Python 代碼替換VBA編寫Excel 宏和用戶定義函數(shù)(僅限Windows)等更為強(qiáng)大的進(jìn)階功能,可進(jìn)一步提高Excel 辦公自動(dòng)化效率,有興趣的讀者可根據(jù)實(shí)際需求進(jìn)行嘗試應(yīng)用。