發表文章

目前顯示的是 1月, 2024的文章

Python Flask呼叫 Excel VBA 實作

圖片
專案緣由: 近來在研究LINE BOT的專案,剛好前陣子有用GAS(Google Apps Script)所建立的網頁應用程式服務做一些題目,然而在LINE BOT中有一個機制是可以將使用者的內容發送一個POST到WebHook(一種API)進行處理,API的概念本身是一條URL,透過常見的GET、POST進行後端Server的處理,可以跟資料庫溝通或運算其他的服務。 一提到API,除了透過GAS也可以用Python Flask或者Django,用Python的好處是他可以用其他的套件進行其他的服務(此處為pywin32),以此案為例便是藉由Flask的前端渲染介面給使用者填寫資料(預計要引到ExcelVBA中的參數)後點選按鈕發一個Router到後端Server進行Excel VBA的呼叫程序。 應用場景: 適用於已經有些VBA的開發成果的夥伴且其他需要跨平台跨裝置的時候,透過瀏覽網頁便可以將所有運算都進到後端Server進行處理,並且輸出成果到前端提供下載連結(本專案範例)或者如果手機端使用者無法順利打開也可以透過寄信給User,讓User選擇合適的開啟方式。 圖一、網頁前端介面 圖二、下載成果內容(Username與Email為傳入參數) 結論: Excel 的好處是很多公式都已經寫好在檔案中,透過VBA的執行可以直接將資料都到Excel的報表版面上進行成果輸出,或者是檢核內容是否有NG而提示使用者哪裡需要再行更正。 手機或平板使用者無法進行運算Excel的內容時可以透過瀏覽網頁進行後端運算達到輸出成果的目的,藉由下載連結或收取信件即時展示成果。 正常來說Excel較常運行於Windows的系統,如為MacOS或Linux的使用者較難進行操作,因此也可以透過瀏覽網頁進行後端運算得到輸出成果。 後端要更新前端渲染內容或後端報表版面、運算邏輯相當便利,需要具備如何維護後端Server的知識。 如果對於資料庫是熟悉的,也可以將運算邏輯直接用Python去撰寫並且透過資料庫系統(常見如SQLite或MySQL或其他)去取代Excel,版面則可以用reportLab輸出,這樣也讓後端可以直接部署於Linux系統上(大多數的後端Server都是這個)。 如果有考量高度併發性(同時多人連線),Flask是屬於輕量型的網頁框架,也可以考慮用Node.js+MongoDB進行撰