蘭天 張榮慶 梁乾 漢中職業技術學院
關鍵字:Excel 協同匯總 Nodejs
微軟公司于2003年已經為Excel2003提供了共享工作簿的功能,但該功能極不完善,表現為有兩項主要制約,協同編輯者必須事先約定自身所應當負責編輯的row、column或者cell,以及它僅能實現局域網共享編輯。
Boban Mathew, Thomas John, Dagny Evans于2007年在他們的專利申請公開說明書US20070220417A1中,提出來一個網絡共享云編輯的模型和方法,該模型采用C/S架構,每一位Client協作者,都與Server計算機簡歷Web會話,并從Server中下載一個副本。Server則接收Client協作者編輯文檔的請求, 該文檔具有特定的文檔類型并存儲在Server計算機上,通過這種方式來實現Excel云編輯。
Michael L. Milton 2006年在他的專利US20070219956A1中提出關閉用于分析在客戶端計算機上創建的電子表格的單個對象并發送整個工作簿、其二進制文件和主庫中服務器計算機上存儲的對象的方法。下載的對象可以使用電子表格應用程序的本機工具 (通常為Excel) 進行修改, 并以不同的名稱重新存儲在主庫中, 并將元數據中列出的對象作為所有者進行更改。用戶可以輸入自己的元數據。對象的自動命名可將對象與其在創建它們的工作簿中的原始位置分離。
國內有“格子啦”、“班牛”等云表格編輯平臺,并且金山軟件旗下的WPS手機版還提供云編輯的手機小程序,可以實現多人共享云編輯,這些云編輯都需要協作者向管理員申請編輯權限,才可以進行云編輯,因而會損失一定效率。
徐強、王振江在他們2012出版的《云計算應用開發實踐》中提出了Excel VBA宏與Symphony 相結合的方式實現云協同。實際上是Windows共享工作簿的一種實現。與此方案類似的還有,陳秀峰2003在《軟件世界》雜志中發表的《Excel共享全攻略》,張迎新2004年在《電腦應用文萃》雜志中發表的《Excel多人共享攻略》。
編者主要考慮不改變用戶固有的使用習慣,不以任何形式侵犯其他軟件的版權,所以沒有做任何Office Excel插件,另外需要具有跨平臺,可運行在Windows、Mac OS、Linux等多個操作系統的特性。同時,拋棄了傳統的C-S架構,在Client端無需配置任何插件,所有的匯總、比對、過濾、排序、檢驗數據都在Server端完成,因而協同Excel填報者無需使用和了解本軟件解決方案,僅僅Excel匯總者需要了解本軟件使用方法。為了達到以上目的,編者采用Node.js作為框架,JavaScript為主要編程語言,設計了Excel協同匯總軟件。在Excel文件處理方面主要使用了node-xlsx庫,將原本的Excel文件轉化為文本文件,在使用fs庫、line-reader庫、path庫、readline庫、iconv-lite庫來處理文本文件,將每一個文本相同部分剔除,保留差異部分。再將剔除的相同部分與差異部分重新組成一個匯總后的Excel文件。本軟件的創新之處在于先進的容錯機制,允許相同部分在前后空格、單元格格式、以及合并單元格與否等細節的不同。
Excel協同匯總軟件的構造主要由10個模塊組成,使用JavaScript編寫,分別為 contrast.js、excel.js、export.js、initialize.js、kill.js、killfinalfile.js、outcome.js、vs.js、vs00.js、vs0.js。
另外使用C++與HTML和Node.js的express模塊與multer模塊相結合編寫了一個圖形圖像化的網頁控制臺,可以在Windows平臺下直接點擊kongzhitai.exe進入網頁控制臺,在Linux和MacOS下可以通過瀏覽器登入網頁控制臺。除此之外,本軟件對有一定計算機基礎的使用者,在各平臺之下提供命令行來執行,可以精確地控制每一個比對、過濾、排序、檢驗、匯總數據的步驟。另外對于記不住命令行命令,又不想使用圖形界面的用戶,在Windows平臺下提供了命令批處理來執行本程序。
Excel協同匯總已經取得軟件著作權,發明專利也在申請當中,本軟件的設計邏輯總結起來可以用以下的流程圖來表示。
