欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net Excel转换为SQL Server的方法

程序员文章站 2024-03-09 12:22:54
1.功能分析 通过microsoft.jet.oledb.4.0方式可实现使用ado.net访问excel的目的,如以下示例代码为连接excel数据的字符串: 复制代码 代...
1.功能分析
通过microsoft.jet.oledb.4.0方式可实现使用ado.net访问excel的目的,如以下示例代码为连接excel数据的字符串:
复制代码 代码如下:

string strodbccon = @"provider=microsoft.jet.oledb.4.0;persist security info=false;data source=d:\2010年图书销售情况.xls;extended properties=excel 8.0";

2.实施方法
程序开发步骤:
(1)新建一个网站,命名为25,其主页默认为default.aspx。
(2)default.aspx页面中添加一个table表格,用来布局页面,然后在该table表格中添加一个iframe框架、两个button控件和一个gridview控件,其中,iframe框架用来显示原始excel数据表中的数据;button控件分别用来将指定excel中的数据表导入到sql server数据库中和将导入sql server数据库中的excel数据绑定到gridview控件上;gridview控件用来显示导入sql server数据库中的excel数据。
(3)程序主要代码如下。
default.aspx页面中,首先自定义一个loaddata方法,该方法为无返回值类型方法,主要用来将excel数据表中的数据导入到sql server数据库中。loaddata方法实现代码如下:
复制代码 代码如下:

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(); //打开数据链接,得到一个数据集
dataset mydataset = new dataset(); //创建dataset对象
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数据写入数据库中】按钮,定义一个string类型的变量,用来为loaddata传入参数,然后调用loaddata自定义方法将指定的excel中的数据表导入到sql server数据库中。【excel数据写入数据库中】按钮的click事件代码如下:
复制代码 代码如下:

protected void button1_click(object sender, eventargs e)
{
string stylesheet = "sheet1";
loaddata(stylesheet);
}

单击【显示导入sql的excel数据】按钮,将导入sql server数据库中的excel数据绑定到gridview控件上,显示在网页中。【显示导入sql的excel数据】按钮的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();
}

说明:程序中进行与excel和sql server数据库相关的操作时,首先需要分别添加system.data.oledb和system.data.sqlclient命名空间。
3.补充说明
除了可以将excel中数据导入到sql server数据库外,还可以将其转换为.txt文本文件格式,或者导入到access或oracle等数据库中。