ASP.NET将EXCEL导入SQL SERVER数据库的代码

Asp.Net将Excel数据导入Sql Server数据库的的例子,是调用存储过程的,大家分享.

前言:cmd.CommandText="Proc_Address";这句话是调用存储过程"Proc_Address"
该存储过程代码为:
CREATE Proc Proc_Address @CardNo char(20),@ToAddress char(50),@CCAddress char(50) ,@YYYYMM char(12)
 as 
declare @strSql  char (400)

set @strSql = 'Insert into EmailAddress' + @YYYYMM + ' values(''+@CardNo+'',''+@ToAddress+'',''+@CCAddress+'',''+'1')'  --插入一条记录
exec (@strSql)
GO



private void Button1_Click(object sender, System.EventArgs e)
{
CreateTable();

//先将EXCEL导入到数据库,一:先把EXCEL导入dateView,二:然后将dateView里的数据导入到数据库里面

//EXCEL 的连接串
string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + File1.PostedFile.FileName.ToString() + ";" +
"Extended Properties=Excel 8.0;";

//建立EXCEL的连接
OleDbConnection objConn = new OleDbConnection(sConnectionString);

objConn.Open();

OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;

DataSet objDataset1 = new DataSet();

objAdapter1.Fill(objDataset1, "XLData");

// DataGrid1.DataSource = objDataset1.Tables[0].DefaultView; //测试代码,用来测试是否能读出EXCEL上面的数据
// DataGrid1.DataBind();

DataTable dt = objDataset1.Tables[0];
DataView myView = new DataView(dt);

//SQL SERVER的数据库连接
SqlConnection conn;
string dns =System.Configuration.ConfigurationSettings.AppSettings["ConStr"];//连接串
conn=new SqlConnection(dns);

SqlCommand cmd =conn.CreateCommand();
cmd.CommandType =CommandType.StoredProcedure;
cmd.CommandText="Proc_Address";

int count=0;//用来记录出错的条数

try
{
foreach (DataRowView myDrv in myView)
{
count++;
//要关闭上一次的SQL Server的连接
if (conn.State.ToString()!="Closed")
conn.Close();

//每一次都要清空所有的CMD的参数
cmd.Parameters.Clear();

//执行存储过程
//首先获得参数 共 3个
//@CardNo,@ToAddress,@CCAddress
SqlParameter paraCardNo =cmd.Parameters.Add("@CardNo",SqlDbType.Char);
SqlParameter paraToAddress =cmd.Parameters.Add("@ToAddress",SqlDbType.Char);
SqlParameter paraCCAddress =cmd.Parameters.Add("@CCAddress",SqlDbType.Char);
SqlParameter paraYYYYMM =cmd.Parameters.Add("@YYYYMM",SqlDbType.Char);

//表示是输入参数
paraCardNo.Direction = ParameterDirection.Input;
paraToAddress.Direction = ParameterDirection.Input; 
paraCCAddress.Direction = ParameterDirection.Input;
paraYYYYMM.Direction = ParameterDirection.Input;

//参数赋值
paraCardNo.Value = myDrv[0].ToString().Trim();
paraToAddress.Value = myDrv[1].ToString().Trim();
paraCCAddress.Value = myDrv[2].ToString().Trim();
paraYYYYMM.Value = ddlYear.Items[ddlYear.SelectedIndex].Value + ddlMonth.Items[ddlMonth.SelectedIndex].Value;

conn.Open();
cmd.ExecuteNonQuery();//写入SQL数据库
}
}
catch
{
Page.Response.Write("alert('第"+count.ToString()+"条数据出错!');"
objConn.Close();//关闭EXCEL的连接
}

objConn.Close();//关闭EXCEL的连接

posted @ 2008-11-07 22:48 mylhei 阅读(1926) 评论(6)  编辑 收藏 网摘

  回复  引用    
#1楼2008-11-07 22:53 | 长兴论坛[未注册用户]
学习了,是不是有更好的方法呢
  回复  引用    
#2楼2008-11-07 23:03 | why?[未注册用户]
直接插入数据库不更简单吗?
  回复  引用  查看    
#3楼2008-11-08 09:30 | 代码乱了      
不通用
  回复  引用    
#4楼2008-11-08 09:34 | wingsyee[未注册用户]
ado2.0 中 不是有将dataview批量导入到数据库的写法吗?
  回复  引用  查看    
#5楼2008-11-08 09:47 | net1234      
不够灵活
  回复  引用    
#6楼2008-11-10 23:01 | china。。。[未注册用户]
@wingsyee
@why?
@长兴论坛
@代码乱了
@net1234
但是不是要一条条写吗?很麻烦把!

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1329339




相关文章:

相关链接:
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

与我联系

搜索

 

我参加的小组

最新评论

@wingsyee
@why?
@长兴论坛
@代码乱了
@net1234
但是不是要一条条写吗?很麻烦把!
(china。。。)
不够灵活 (net1234)
ado2.0 中 不是有将dataview批量导入到数据库的写法吗? (wingsyee)
不通用 (代码乱了)
直接插入数据库不更简单吗? (why?)