摘要:隨著圖書館網絡資源增多,如何通過編程的方法實現Excel數據導入到SQL Server,是一個值得探討的問題。本文主要以Excel的COM組件為中心,介紹編程中實現Excel與SQL Server數據的交互,并且給出其中的詳細實現過程。
關鍵詞:Excel ?Sql Server 2005 ?VBA編程 ?C# ?Visual Studio 2005
SQL Server數據庫是目前比較流行的一種大型數據庫管理系統。在實際應用中,人們大多習慣使用Excel編輯數據,而不是直接往SQL Server中輸入數據,這樣我們就可以通過SQL Server本身提供的DTS(Data Transform Service)即數據轉換服務功能來實現Excel數據的導入導出。另一方面,很多數據庫軟件是通過Excel來進行數據轉換。所以,討論SQL Server與Excel如何進行數據的交互是有價值的。
1 在Excel導入SQL Server中的數據
①在“數據”選項卡上的“獲取外部數據”組中,單擊“自其他來源”,然后單擊“來自SQL Server”。
②在“服務器名稱”框中,鍵入要連接的SQL Server 計算機的名稱。
③在“登錄憑據”下,執行下列操作之一:
要使用當前的Microsoft Windows用戶名和密碼,請單擊“使用Windows 身份驗證”。
要輸入數據庫用戶名和密碼,請單擊“使用下列用戶名和密碼”,然后在相應的“用戶名”和“密碼”框中鍵入您的用戶名和密碼。
④在“選擇數據庫”下,選擇一個數據庫。在“連接到指定表”下,選擇一個特定的表或視圖。或者,也可以清除“連接到指定表”復選框,以便系統向使用此連接文件的其他用戶提示表和視圖的列表。
⑤(可選)在“文件名”框中,修改建議的文件名。單擊“瀏覽”以更改默認文件位置(“我的數據源”)。
⑥(可選)分別在“說明”、“友好名稱”和“搜索關鍵字”框中鍵入對文件的說明、友好名稱及常用搜索文字。
⑦要確保更新數據時始終使用該連接文件,請單擊“始終嘗試使用此文件來刷新此數據”復選框。此選項可確保使用該連接文件的所有工作簿始終會使用對該連接文件的更新。
⑧若要指定在將工作簿發布到Sharepoint Foundation 2010網站并在Web瀏覽器中打開它時如何訪問數據透視表的外部數據源,請單擊“驗證設置”,然后選擇以下選項之一以登錄到相應的數據源:
Windows身份驗證 選擇此選項可使用當前用戶的 Windows用戶名和密碼。這是最安全的方法,但在許多用戶連接到服務器的情況下,此方法會影響性能。
SSS 選擇此選項可使用安全存儲服務(SSS),然后在“SSS ID”框中輸入適當的標識字符串。網站管理員可以將 Sharepoint Foundation 2010 網站配置為使用一個可在其中存儲用戶名和密碼的安全存儲服務數據庫。在許多用戶連接到服務器的情況下,此方法的效率最高。
無 選擇此選項可在連接文件中保存用戶名和密碼。
安全性 連接到數據源時應避免保存登錄信息。此信息可能會以純文本形式存儲,惡意用戶可能會訪問該信息以破壞數據源的安全。
注釋 僅在將工作簿發布到SharePoint網站時才使用驗證設置,Excel桌面程序將不會使用它。
2 在SQL Server中導入/導出Excel中數據
在SQL Sever中導入Excel數據有兩種方法,一種是用SQL語句進行導入,另一種是用導入導出向導。
用SQL語句導入Excel中的數據:
①SQL Server中導入Excel數據到新表
Select*INTO new_table
FROMOPENROWSET
'Excel 12.0 Xml;HDR=YES;Database=C:\Desktop\TEST.xlsx','SELECT * FROM [test$]');
②在SQL Server中導入Excel數據到已存在的表
INSERTINTO master.dbo. new_table
SELECT* FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml;HDR=YES;Database=C:\Desktop\TEST.xlsx','SELECT * FROM [test$]');
注:在導入的時候,Excel文檔都必須關閉,反之會得到如下錯誤提示:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
參考文獻:
[1]Harvey M.Deitel.C#大學教程[M].電子工業出版社,2004.
[2]John Walkenbach.Excel 2003寶典[M].北京:電子工業出版社,2004.
[3]Steven M.Hansen.Excel 2003與VBA編程[M].北京:電子工業出版社,2004.
[4]李洪根.SQL SERVER與ACCESS、EXCEL的數據.
作者簡介:
胡鍇(1982-),男,江西南昌人,助理館員,研究方向:數字圖書館。