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

來源:互聯網
上載者:User

上次給大家提供了一個從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("項目總監")))&")"&"')"
 '  Response.Write SqlInsert
   '此處插入的值根據實際資料庫結構進行調整
   SqlConn1.Execute(SqlInsert)'插入Excel表格裏所有東東
  Rs.MoveNext
  Loop
  Response.Write "<font color=red>恭喜,成功導出資料!^_^</font><br>"
 End If

 Rs.Close
 Set Rs = Nothing
End If

Call Close_Conn(SqlConn) '關閉Excel資料庫連接
Call Close_Conn(SqlConn1) '關閉SQL Server資料庫連接 %>
</body>
</html>

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.