匯入Excel試算表資料到SQL Sever資料庫的另一種方法

來源:互聯網
上載者:User
excel|試算表|資料|資料庫 上次給大家提供了一個從Excel試算表匯入到SQL Server資料庫的方法,前提條件是機器上要裝有Office 裡的Excel組件。今天再為大家提供另一種方法:不需要安裝Excel也可以匯入到我們的SQL Server資料庫。首先用SQL Server自身的資料轉換功能把Excel匯入到 SQL Server中,下面的樣本中匯入後的表名為:Sheet1$,然後我們再從這個庫中把資料匯入到我們自己的系統的資料表中。(這樣一來就是2個SQL Server表中的資料互相轉換的問題了)。總之,2種方法的原理都是先從一個資料來源中讀出所有資料,然後通過迴圈,把來源資料插入到我們的目標表中。

完整代碼如下:

<%
'On Error Resume Next
'匯入Excel試算表資料到SQL Sever資料庫 By Dicky 2004-12-27 16:41:12
Function Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlConn)
'建立資料庫連接對象並開啟資料庫連接
Dim ConnStr
'SQL Server資料庫連接參數:資料庫名、使用者密碼、使用者名稱、串連名(本地用local,外地用IP)
ConnStr = "Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"
Set SqlConn = Server.CreateObject("ADODB.Connection")
SqlConn.Open ConnStr
If Err Then
Err.Clear
Set SqlConn = Nothing
Response.Write "資料連線錯誤!"
Response.End
End If
End Function

Function Close_Conn(SqlConn)
'關閉資料庫連接並清除資料庫連接對象
If IsObject(SqlConn) Then
SqlConn.Close
Set SqlConn = Nothing
End If
End Function

Call Open_Conn("Shat_EDG","","sa","(local)",SqlConn) '開啟本地SQL Server資料庫連接
Call Open_Conn("Shat_EDG","","sa","ssh03",SqlConn1) '開啟遠程SQL Server資料庫連接

Function Get_EMP_CnName(NTACCNT)
'根據使用者NT帳號得到使用者中文名
Dim Sql1,Rs1
Sql1 = "Select EMP_CNAME From RF_EMPLOYEE Where EMP_NTACCNT='"&NTACCNT&"'"
Set Rs1 = Server.CreateObject("Adodb.RecordSet")
Rs1.Open Sql1,SqlConn1,1,1
If Rs1.Eof Then
Get_EMP_CnName = ""
Else
Get_EMP_CnName = Rs1("EMP_CNAME")
End If
Rs1.Close
Set Rs1 = Nothing
End Function %>
<html>
<head>
<title>匯入Excel試算表資料到SQL Sever資料庫</title>
<body bgcolor="#ACD9AF">
<center><b>匯入Excel試算表資料到SQL Sever資料庫</b></center>
<FORM METHOD="POST" name="form1">
請選擇數據源(本地庫):
<SELECT NAME="Table" title="請選擇需要匯入資料的表">
<option></option>
<% Dim RsSqlDatabaseTable
Set RsSqlDatabaseTable = SqlConn.OpenSchema(20)
Do While Not RsSqlDatabaseTable.Eof %>
<option<%If Trim(Request("Table"))=RsSqlDatabaseTable(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable(2)%></option>
<% RsSqlDatabaseTable.MoveNext:Loop
Set RsSqlDatabaseTable = Nothing %>
</SELECT><input type=submit name=submit value="開始導出">
<br>請選擇目標表(遠程庫):
<SELECT NAME="Table1" title="請選擇需要匯入資料的表">
<option></option>
<% Dim RsSqlDatabaseTable1
Set RsSqlDatabaseTable1 = SqlConn1.OpenSchema(20)
Do While Not RsSqlDatabaseTable1.Eof %>
<option<%If Trim(Request("Table1"))=RsSqlDatabaseTable1(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable1(2)%></option>
<% RsSqlDatabaseTable1.MoveNext:Loop
Set RsSqlDatabaseTable1 = Nothing %>
</SELECT>
</FORM>
<font color=blue>導出過程中請不要重新整理頁面!</font><br>
<%
If Trim(Request("Table1")) <> "" Then
Dim Sql,Rs
Sql = "Select * From Sheet1$" 'Sheet1$是我們實現用SQL Server自身資料轉換功能得到的表名
Set Rs = SqlConn.Execute(Sql)
If Rs.Eof And Rs.Bof Then
Response.write "沒有找到您需要的資料!!<br>"
Else
Do While Not Rs.Eof
SqlInsert = "Insert Into "&Trim(Request("Table1"))&" (EDG_Project_Name,EDG_Project_No,EDG_Project_VM,EDG_Project_VM_CnName,EDG_Project_M,EDG_Project_M_CnName,EDG_Project_Director,EDG_Project_Director_CnName) Values ('"&Trim(Rs("工程名稱"))&"','"&Trim(Rs("工程編號"))&"','"&Trim(Rs("項目副理"))&"','"&Trim(Rs("項目副理"))&"("&Get_EMP_CnName(Trim(Rs("項目副理")))&")"&"','"&Trim(Rs("專案經理"))&"','"&Trim(Rs("專案經理"))&"("&Get_EMP_CnName(Trim(Rs("專案經理")))&")"&"','"&Trim(Rs("項目總監"))&"','"&Trim(Rs("項目總監"))&"("&Get_EMP_CnName(Trim(Rs("項目總監")))&



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。