asp.net Excel轉(zhuǎn)換為SQL Server的方法
更新時(shí)間:2009年06月05日 00:47:37 作者:
辦公軟件Excel是一種常用的電子表格軟件,在編程項(xiàng)目中有需要將Excel轉(zhuǎn)換為SQL Server數(shù)據(jù)庫(kù)的需求,本文對(duì)此進(jìn)行一些介紹并給出設(shè)計(jì)代碼。
1.功能分析
通過(guò)Microsoft.Jet.OLEDB.4.0方式可實(shí)現(xiàn)使用ADO.NET訪問(wèn)Excel的目的,如以下示例代碼為連接Excel數(shù)據(jù)的字符串:
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)代碼如下:
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事件代碼如下:
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事件代碼如下:
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ù)中。
通過(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ù)中。
相關(guān)文章
.NET中利用js讓子窗體向父頁(yè)面?zhèn)髦档膶?shí)現(xiàn)方法
.NET中利用js讓子窗體向父頁(yè)面?zhèn)髦档膶?shí)現(xiàn)方法,需要的朋友可以參考一下2013-02-02ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn)
本文主要介紹了ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07MAUI項(xiàng)目中使用SnackBar與Toast通知功能
這篇文章介紹了MAUI項(xiàng)目中使用SnackBar與Toast通知功能的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02基于ASP.NET Core數(shù)據(jù)保護(hù)生成驗(yàn)證token示例
本篇文章主要介紹了基于ASP.NET Core數(shù)據(jù)保護(hù)生成驗(yàn)證token,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02PHP session實(shí)現(xiàn)購(gòu)物車功能
這篇文章主要為大家詳細(xì)介紹了PHP session實(shí)現(xiàn)購(gòu)物車功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06ASP.NET GridView中加入RadioButton不能單選的解決方案
這篇文章主要介紹了ASP.NET GridView中加入RadioButton不能單選的解決方案,希望大家閱讀完本文有所收獲。2015-09-09ASP.NET web.config中 數(shù)據(jù)庫(kù)連接字符串加密解密
本文主要介紹利用aspnet_regiis.exe工具對(duì)web.config中connectionStrings節(jié)點(diǎn)進(jìn)行加密和解密的過(guò)程,希望對(duì)大家有所幫助。2016-05-05