曹夢川
(寧夏職業技術學院,寧夏 銀川 750021)
隨著信息技術的快速發展,越來越多的地方政府、企業、學校開展實用了無紙化辦公,相比以往的辦公模式,OA系統已經成為各大公司的標配,具有強大的便捷性,但是在某一些情景下,例如疫情數據上報、員工信息填報、員工信息匯總等相關工作還是需要大量的人工進行處理、統計、分析。在面對數據量很小的任務時,這類的辦公形式無法體現弊端,但是當數據量龐大到一定級別的時候,人工處理這些高重復性的任務不僅耗時耗力,還可能會出現錯誤或數據遺漏,對辦公效率影響嚴重。在這個信息化時代,如何快速處理源源不斷的數據已經是現代辦公的主要問題。在各大學校中此類問題最為突出,尤其是在學校的教務部門中,教務人員每天需要處理大量的學生數據,例如寧夏職業技術學院軟件學院全年級的學生已經超過1 200人,學校要求學院每天上報學生情況數據,負責教務的老師一天要處理這些碎片化的數據,效率和準確性來說都很難保證。如何通過辦公自動化來解決大量重復、瑣碎的工作任務,減少信息遺漏,提高工作效率,簡化教務人員的工作內容,是本次的研究的重點。
隨著人工智能、大數據等新興科技的快速發展,Python語言也變得主流起來,憑借著Python強大的拓展性和豐富的第三方模塊,不僅受到程序員的熱愛,在辦公自動化領域大顯身手。
辦公自動化(Office Automation, OA)是將計算機技術與現代化辦公結合應用的一種新型的辦公方式。目前而言,辦公自動化沒有統一的定義,凡是在傳統的辦公中使用各種新技術或設備,都屬于辦公自動化的領域。通過實現辦公自動化,可以減少辦公人員重復性工作,有效提升辦公效率。
根據針對多個寧夏當地企業、事業單位調研,大部分OA系統的主要功能是所有業務網上操作,流程無紙化,審批線上化等信息化手段。對于一些日常工作,并沒有給出有效的解決高重復性工作的方案。有些雖然提供了解決方案,但是沒有考慮到教務人員的真實需求,開發出來的需求沒有實用價值,很多工作不得不手工去做。因此加強對自動化替代人工辦公的研究,將重復性高的工作交給機器,優化人員工作,對全面提升各行各業辦公效率有著至關重要的作用。
通過對寧夏職業技術學院軟件學院教務部門的工作內容分析,表格匯總、表格信息處理、表格填報為主要的工作內容。其中部分工作是具有很大的重復性,這樣高重復性的工作,非常適合通過辦公自動化來解決問題。針對教務人員不同的工作內容,設計應對的方案,從而實現質量與效率的提高,同時還可以將信息在各個部門之間進行交流與共享,避免重復索要數據的麻煩。所以辦公自動化對教務辦公的效率提升有著非常重要的作用及幫助。
開發語言選取Python語言,主要原因是Python語言作為人工智能、大數據分析的重要支持語言,具有很強大、免費的“代碼庫”,用戶可以調用集成完整的庫實現自己想要的功能;Python作為腳本語言,和其他語言相比更加簡潔、高效;Python被稱為“膠水語言”,能夠很好的包裝和調用其他語言編寫的庫文件。
Pandas 是Python中一個強大的分析結構化數據的工具集,基礎是Numpy(提供高性能的矩陣運算),提供高性能、易于使用的數據結構和數據分析工具。名字衍生自術語”panel data”(面板數據)和 “Python data analysis”(Python 數據分析)。
MySQL是一個關系型數據庫管理系統,是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,就增加了速度并提高了靈活性。
本次研究以寧夏職業技術學院軟件學院教務部門為研究樣本,軟件學院2019級共有5個專業,合計13個班級,共536學生。主要數據來源是以班級為單位提交的各類表格,如個人信息登記表、疫情登記表等;學生相關各類表格,如活動報名表、信息表等。
1.2.1 表格匯總的實現
根據軟件學院實際情況分析,教務人員每天需要對13個班級表格進行匯總,平均耗時在10到20分鐘之間,如果涉及到全部年級班級,處理時間約90分鐘左右,人工方式已無法更加快捷的解決此類問題。通過使用Python進行辦公自動化,使用腳本實現表格的匯總,不論多少張表格,都可在1秒內完成匯總,并且信息來源于原始表格,不會出現遺漏或填報串行等情況,匯總后生成新的表格,原始數據表格僅僅作為數據讀取使用,不會對源數據造成不可逆的損壞。
圖1為具體實現思路:

圖1 表格匯總流程
(1)指定需要合并所有表格所在的文件夾絕對路徑,通過Python中OS庫中的walk方法遍歷文件夾里所有文件的名稱,與文件所在的絕對路徑拼接成完整路徑,存放在列表中,用于循環操作文件夾中所有的excel文件。
(2)使用循環調用pandas庫中的read_excel方法分別讀取文件夾中所有的文件,生成對應的dataframe對象。
(3)創建一個新的dataframe對象,用于存儲所有所有excel數據,并設置columns參數為對應表頭信息。將讀取的數據通過循環依次寫入這個新的dataframe對象中。
(4)通過pandas庫中to_excel方法將數據寫入新的excel中,完成合并操作。
具體實現代碼:
獲取文件夾中文件所在的全部路徑



根據樣本數據測試100次顯示,合并文件所用平均時間約為1.3秒
1.2.2 構建學生信息庫
根據調研顯示,因不同的機構或單位定期要求學校提交學生信息,大部分學生信息例如姓名、班級、學號、電話、家庭住址等經常重復填寫,教務人員不得不等各班學生填報完畢后提交上來,然后在進行匯總,因涉及班級眾多,往往在提交的過程階段花費時間最長。
很多學校為了解決此類問題建設了學生信息庫,但是因為使用的技術為前后端技術,學生填寫數據需要通過網頁。當有新的字段需要填報,后臺管理員必須重新設置或修改頁面信息,學生按照要求重新填報;有的服務端沒有實現低代碼化,還需要對頁面進行二次開發以應對新的字段填寫,可以說將簡單的問題復雜化,耗時耗力耗錢,無法有效的解決問題。
然而在通過表格的自動化匯總的實現后,本質來說,這個合成后的表格就是一個完整的數據集,可以使用該數據集在MySql中構建一個學生信息庫,那么就將對數據庫的維護轉變成了對excel的維護,如果填報的表沒有新的字段出現,可以直接使用Pandas中的to_sql方法,將現有的數據信息全部寫入至對應的數據庫表中。從而快速完成學生信息庫的建設。
但是在面臨新的字段信息的時候,會存在一個運行時間的問題,如果采用常規循環嵌套的方法,一條一條數據進行比對,每個字段也需要去比對,那么所花費的時間復雜度O(),完成的時間遠超人工手動完成的時間,這樣做反而適得其反。
解決思路:
(1)在學生填表階段,不需要設置特別多字段的表格,只需要學生填寫學號和新字段信息。
(2)對上交的表格進行合并,存放在dataframe對象中,不進行生成新表格和數據庫寫入的操作。
(3)在數據庫中對應表中創建新字段,根據dataframe對象中學生學號作為查找的關鍵key,使用MySql中update方法通過學生學號作為主鍵索引更新數據。
MySql數據庫根據主鍵索引所采用的是聚集索引,聚集索引的葉子節點就是數據節點,從上至下遍歷一次B+樹,直到找到具體的主鍵,拿到葉子結點存儲的數據。時間復雜度為O(),符合自動化辦公中快速的這一特點的要求。
根據樣本數據經過100次測試顯示,對學生信息庫進行數據更新的平均用平均時在1.2秒主鍵索引模式如圖2所示。

圖2 主鍵索引模式
具體實現代碼:


1.2.3 表格自動填報
在建立好學生信息庫后,即可用信息庫中的數據完成學生報表的自動填報功能。根據不同的報表要求,從信息庫中選取相關字段,自動寫入excel中。遇到根據班級分別上報的情況,可通過將班級作為班級作為一個sheet,分別將各個班級寫入對應sheet。
具體實現思路:
(1)使用Pandas中read_sql()方法直接讀取對應數據信息,得到一個dataframe對象。
(2)使用Pandas中loc進行切片,獲取所需要的字段,并生成新的dataframe對象。
(3)使用groupby()方法對切片后的數據按照班級進行分組。
(4)通過to_excel方法將同一組別的數據寫入到一張sheet中,循環至所有組別寫入完畢。
根據樣本數據測試100次顯示,19級全體學生填寫疫情登記表所用平均時間為4秒。
代碼實現:

通過多次實驗,自動化辦公為教務人員提升的辦公效率的成效是非常明顯的:(1)匯總表格平均用時在1.3秒。(2)數據信息庫的更新平均用時在1.2秒。(3)自動填報報表從已有的信息庫中所用時4秒。(4)該研究結果解決了大部分需要重復去做的工作,實現了辦公自動化。
優化教務辦公,用機器替代人工是實現高效辦公的必要途徑,但是在自動化具體實現方面必須立足于實際需求,依據真實需求設計相應功能,才能真正實現辦公自動化。