2012-02-19 87 views
0

我想創建一個程序,可以通過VBA導入一個Postgres數據庫表到Excel,讓別人進行編輯,然後將編輯的數據導出爲一個新表通過VBA進入數據庫。啓用導入/導出流和Excel工作簿

這將是一個相對簡單的(雖然在程序上令人費解的)任務來完成,如果過程沒有與Windows和辦公MAC版本的工作。

我原來的計劃是簡單的讓用戶下載蟒蛇,然後安裝psycopg驅動程序。然後,我會將一個Python腳本作爲字符串存儲在vba模塊中,該模塊會將python腳本寫入文件,將一個SQL字符串傳遞給python腳本,並讓python直接從數據庫獲取數據。 Python會分割出一個文件,這會導致VBA循環,等待文件存在,終止然後導入數據並填充一個表格。

寫作將簡單地意味着不同之處在於將Excel中調用腳本之前包含數據被上傳到postgres的紙張導出相同的處理。

不幸的是,如果用戶在Mac上安裝psycopg2,將會讓他們處於不幸的狀態,因爲無法下載大量1+ GB軟件包(稱爲「xcode」),然後安裝mac端口只是爲了能夠運行一個簡單的python腳本來連接到postgres(甚至這實際上並不工作)!不用說,這簡直是不可接受的。

我的編程經驗大多來自創建腳本,以在本地機器上運行,所以我真的不知道我怎麼會做到這一點。

我能想到的最簡單的方法是在裝有postgres的ubuntu機器上設置某種基於python的服務器,並以某種方式允許由excel工作簿生成的本地python腳本向腳本發送數據流然後上傳到postgres數據庫。爲了從數據庫導出到excel,本地python腳本會將命令發送到基於python的服務器,然後該服務器將數據上傳到ftp服務器。隨後,本地python腳本將會載入這些數據,對其進行處理,並將其輸出到一個文件中,從而允許excel訪問它。

基本上,我只需要一個解決方案,允許從用戶的機器上執行的python程序連接到postgres住房機器,並告訴它運行一個腳本,該腳本生成一個文件供下載或以某種方式將數據傳回直接進入用戶的python程序而不需要用戶下載任何外部程序。

我已經開始學習Java基礎的過程,因此,如果Java允許爲完成這一任務更簡單的方法,我會很願意嘗試一下。截至這篇文章的日期,我只用java編寫了1.5天,所以請在回答時記住這一點。

在此先感謝!

+0

在Windows計算機上直接從VBA查詢數據庫很容易。我不熟悉Mac OS,但Postgresql有一個適用於Mac的ODBC驅動程序,所以我原以爲它可以工作? – assylias 2012-02-20 10:10:14

回答

1

您應該可以使用PyInstaller來實現此目的。實質上,您希望構建一個獨立的可執行文件,並將所有依賴關係捆綁在一起。