這個問題沒有統一的答案,不同的應用平臺,要根據平臺的具體情況來制訂具體的應用方案,我們不妨簡要的分析一下,再以一個簡單的個案拓展一下解決的思路。
不同的平臺系統,采取的系統架框可能不同、開發的語言和數據庫選取也可能不盡相同,即使是系統架構數據庫及開發語言相同,但也可能存在著版本的差別、應用環景的不同,所以應用解決方案就不同。
一、平臺數據庫的不同,導致對Excel數據直接導入的處理方式不同
Excel是微軟的產品,所以,如果系統的數據庫選用的是微軟的Sqlserver、Access,兼容性就比較好,解決起來相對比較方便,當然更可以直接的導入。但是像其他的數據庫,比如Mysql,Oracle,Sqlite、PostgreSQL,就要查取相關的文檔,或查找相關的資料了,有些可以直接從Excel中導入數據,有些就需把Excel的數據轉換成其他格式的文件才能導入。
二、平臺系統的開發語言不同,使Excel數據導入的代碼處理上也不同
如果采用的是微軟的C#,VB等開發語言,則可以輕易地通過代碼把電子表格導入到已有的數據表中,當然要在代碼中進行處理,如果一次性的導入Excel數據,那就像上述一所講的直接導入數據庫就可以了,沒必要用這種程序代碼的方式,但是對于一些固定的業務和固定的Excel格式和反復的同樣工作,就需要采用語言編程在系統中做一個導入Excel的接口了,因為這是一個比較好的解決方案,比如各營業點每天上報的電子表格需要匯入總公司的系統中等,因為不同的企業或公司,技術層次不同,需求也是千差萬別了。在一些公司奇葩應用的存在也是比比皆是。
三、程序代碼對Excel導入的具體案例
我們舉個簡單的例子來說明Excel的導入到系統情況。
系統情況:采用ACCESS2010,數據庫為accdb,語言用VBA。編制了一個程序應用小系統,用該系統對淘寶客各合作方的訂單傭金進行運算處理。 數據來源:淘寶聯盟報表導出的Excel。 處理周期:每月21號處理上個月的傭金結算。
1、從淘寶聯盟后臺導出代理訂單的Excel。
2、因為每個月都要處理相同的業務,所以采用程序代碼處理Excel數據的導入。
用VBA做一個導入按鈕,以便選取要導入的電子表格,如下圖:
該按鈕的VBA代碼為:
PrivateSub選取文件_Click()
Setdlg=Application.FileDialog(1)
Withdlg
.AllowMultiSelect=False
.Show
EndWith
Ifdlg.SelectedItems.Count>0Then
GetFolder=dlg.SelectedItems(1)
Else
GetFolder=""
EndIf
Setdlg=Nothing
Me![文件]=GetFolder
EndSub
選好后,再通過另一段代碼進行處理,關鍵的代碼是取得Excel的婁據,如下:
SetExc=DBEngine.Workspaces(0).OpenDatabase(Me![文件],True,True,"Excel12.0")
然后打開選取的工作表的記錄集,如下代碼:
Setre=Exc.OpenRecordset(Me![sheet]&"$")
其他具體的業務代碼不具有通用性就不寫出了。
通過上面的代碼處理,就可以把Excel的數據導入到Access數據表中,以方便程序代碼處理了。
不單單是微軟的產品可以處理Excel數據,其他的平臺系統也有可能處理Excel數據,例如,我以前的一個網站使用的是Linux+Mysql系統,在處理采集器的Excel數據時,也可以通過PHP程序代碼導入到網站的數據表。