|
通過(guò)Microsoft.Jet.OLEDB.4.0方式可實(shí)現(xiàn)使用ADO.NET訪問(wèn)Excel的目的,如以下示例代碼為連接Excel數(shù)據(jù)的字符串:
復(fù)制代碼 代碼如下:
string strOdbcCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:/2010年圖書(shū)銷售情況.xls;Extended Properties=Excel 8.0";
2.實(shí)施方法
程序開(kāi)發(fā)步驟:
(1)新建一個(gè)網(wǎng)站,命名為25,其主頁(yè)默認(rèn)為Default.ASPx。
(2)Default.ASPx頁(yè)面中添加一個(gè)Table表格,用來(lái)布局頁(yè)面,然后在該Table表格中添加一個(gè)iframe框架、兩個(gè)Button控件和一個(gè)GridView控件,其中,iframe框架用來(lái)顯示原始Excel數(shù)據(jù)表中的數(shù)據(jù);Button控件分別用來(lái)將指定Excel中的數(shù)據(jù)表導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)中和將導(dǎo)入SQL Server數(shù)據(jù)庫(kù)中的Excel數(shù)據(jù)綁定到GridView控件上;GridView控件用來(lái)顯示導(dǎo)入SQL Server數(shù)據(jù)庫(kù)中的Excel數(shù)據(jù)。
(3)程序主要代碼如下。
Default.ASPx頁(yè)面中,首先自定義一個(gè)LoadData方法,該方法為無(wú)返回值類型方法,主要用來(lái)將Excel數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)中。LoadData方法實(shí)現(xiàn)代碼如下:
復(fù)制代碼 代碼如下:
public void LoadData(string StyleSheet)
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + Server.MapPath
("usersdb.xls") + ";Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
myConn.Open(); //打開(kāi)數(shù)據(jù)鏈接,得到一個(gè)數(shù)據(jù)集
DataSet myDataSet = new DataSet(); //創(chuàng)建DataSet對(duì)象
string StrSql = "select * from [" + StyleSheet + "$]";
OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn);
myCommand.Fill(myDataSet, "[" + StyleSheet + "$]");
myCommand.Dispose();
DataTable DT = myDataSet.Tables["[" + StyleSheet + "$]"];
myConn.Close();
myCommand.Dispose();
string strConn = "Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=";
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
for (int j = 0; j < DT.Rows.Count; j++)
{
string UserID = DT.Rows[j][0].ToString();
string EmailAddress = DT.Rows[j][1].ToString();
string FirstName = DT.Rows[j][2].ToString();
string LastName = DT.Rows[j][3].ToString();
string Address1 = DT.Rows[j][4].ToString();
string Address2 = DT.Rows[j][5].ToString();
string City = DT.Rows[j][6].ToString();
string strSql = "insert into Usersdb(EmailAddress,FirstName,
LastName,Address1,Address2,City) ";
strSql = strSql + "values('" + EmailAddress + "','" + FirstName + "',
'" + LastName + "','" + Address1 + "','" + Address2 + "','" + City + "')";
SqlCommand comm = new SqlCommand(strSql, conn);
comm.ExecuteNonQuery();
if (j == DT.Rows.Count - 1)
{
Label1.Visible = true;
}
else
{
Label1.Visible = false;
}
}
conn.Close();
}
單擊【Excel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中】按鈕,定義一個(gè)string類型的變量,用來(lái)為L(zhǎng)oadData傳入?yún)?shù),然后調(diào)用LoadData自定義方法將指定的Excel中的數(shù)據(jù)表導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)中?!綞xcel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中】按鈕的Click事件代碼如下:
復(fù)制代碼 代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
string StyleSheet = "Sheet1";
LoadData(StyleSheet);
}
單擊【顯示導(dǎo)入SQL的Excel數(shù)據(jù)】按鈕,將導(dǎo)入SQL Server數(shù)據(jù)庫(kù)中的Excel數(shù)據(jù)綁定到GridView控件上,顯示在網(wǎng)頁(yè)中?!撅@示導(dǎo)入SQL的Excel數(shù)據(jù)】按鈕的Click事件代碼如下:
復(fù)制代碼 代碼如下:
protected void Button2_Click(object sender, EventArgs e)
{
string strConn = "Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=";
string sqlstr="select * from Usersdb";
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr,conn);
DataSet ds = new DataSet();
conn.Open();
myda.Fill(ds, "Usersdb");
GridView1.DataSource = ds;
GridView1.DataBind();
conn.Close();
}
說(shuō)明:程序中進(jìn)行與Excel和SQL Server數(shù)據(jù)庫(kù)相關(guān)的操作時(shí),首先需要分別添加System.Data.OleDb和System.Data.SqlClient命名空間。
3.補(bǔ)充說(shuō)明
除了可以將Excel中數(shù)據(jù)導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)外,還可以將其轉(zhuǎn)換為.txt文本文件格式,或者導(dǎo)入到Access或Oracle等數(shù)據(jù)庫(kù)中。
AspNet技術(shù):asp.net Excel轉(zhuǎn)換為SQL Server的方法,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。