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