本文講解了使用C#在ASP.NET中實現將Excel表中的數據導入到Sql Server數據庫中對應的表中的方法。
這里將E:/test.xls中Sheet1表中的數據導入到test數據庫中的my_test表中。
軟件:VS2005,SQL Server2000,test.xls中Sheet1表中有三個字段,編號、名稱、備注。具體內容如下圖。

1、首先,我們要先在test數據庫中新建一個my_test表,該表具有三個字段tid int類型, tname nvarchar類型, tt nvarchar類型(注意:my_test表中的數據類型必須與Excel中相應字段的類型一致)
2、我們用
SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel 5.0;DatabASE=[Excel表.xsl文件的路徑];HDR=YES;IMEX=1 ', Sheet1$')
來讀取Excel表中的數據,讀出來的數據跟從數據庫中的表讀出的數據是一樣,也包括字段名和數據。當然我們也可以用字段名列表來獲取Excel表中的部門數據。
SELECT 字段1, 字段2,字段3 [...] FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel 5.0;DatabASE=[Excel表.xsl文件的路徑];HDR=YES;IMEX=1 ', Sheet1$')
3、Excel中第一行是定義的是列名,從第2行開始才是數據。通過Sql語句從Excel中讀取到的數據也是從第二行開始的,二列名變成了字段名。如果你的第一行有定義列名,那么從Excel中獲取的數據的各個字段的名稱就是Excel中的列名。如:從test.xls sheet表中獲取的數據的字段名分別是編號 姓名 備注。如果你定義的Excel表的第一行沒有定義列名,那么獲取后數據的字段名分別是F1、F2、F3...以此類推。如果你只是要獲取Excel表中部分列的數據,那么你可以就要用到上面的內容。
4、在VS2005中新建一個web窗體(test.aspx),往其中添加一個Button控件,一點擊該按鈕就執行導入。雙擊該按鈕,定義事件處理函數。test.aspx.cs中的代碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class admin_test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public SqlConnection con()
{
return new SqlConnection("server=localhost;uid=test;pwd=test;database=test");
//這里的uid=test中的test必須是System Administrtor, 否則會出錯
}
protected void Button1_Click1(object sender, EventArgs e)
{
SqlConnection mycon = con();
string sqlstr = "insert into my_test select 編號, 姓名, 備注 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=e://test.xls',sheet1$)";
/*這里可以用 * 代替 編號, 姓名, 備注 */
SqlCommand cmd = new SqlCommand(sqlstr, mycon);
mycon.Open();
cmd.ExecuteNonQuery();
mycon.Close();
}
}
新聞熱點
疑難解答
圖片精選