将Excel表导入数据库,使存储过程进行更新

页面设计如下:
<table style="width: 991px; height: 42px">
            
<tr>
                
<td colspan="3">
                    
&nbsp; &nbsp; &nbsp;导入数据:&nbsp;&nbsp;
        
<asp:FileUpload ID="FileUpload1" runat="server" style="position: static" />
        
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="读取数据" style="position: static;" /></td>
            
</tr>
            
<tr>
                
<td colspan="3">
        
<div style="width:100%;height:199px;overflow:auto" >
        
<asp:DataGrid ID="DataGrid1" runat="server" HorizontalAlign="Center" Height="186px" Width="978px" style="position: static">
        
</asp:DataGrid></div>
                
</td>
            
</tr>

后台代码如下:
  1 protected void Button2_Click(object sender, EventArgs e)
  2    {
  3       
  4        string nd = DropDownList1.SelectedValue;
  5        string km = DropDownList2.SelectedValue;
  6        string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
  7"Data Source=" + FileUpload1.PostedFile.FileName.ToString() + ";" +
  8"Extended Properties=Excel 8.0;";
  9
 10        //建立EXCEL的连接
 11
 12        //建立EXCEL的连接
 13        OleDbConnection objConn = new OleDbConnection(sConnectionString);
 14
 15        objConn.Open();
 16
 17        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
 18        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
 19        objAdapter1.SelectCommand = objCmdSelect;
 20
 21        DataSet objDataset1 = new DataSet();
 22
 23        objAdapter1.Fill(objDataset1, "XLData");
 24
 25        // DataGrid1.DataSource = objDataset1.Tables[0].DefaultView; //测试代码,用来测试是否能读出EXCEL上面的数据
 26        // DataGrid1.DataBind();
 27
 28        DataTable dt = objDataset1.Tables[0];
 29        DataView myView = new DataView(dt);
 30
 31        //SQL SERVER的数据库连接
 32        SqlConnection conn;
 33        string dns = System.Configuration.ConfigurationSettings.AppSettings["ConStr"];//连接串
 34        conn = new SqlConnection(dns);
 35
 36        SqlCommand cmd = conn.CreateCommand();
 37        cmd.CommandType = CommandType.StoredProcedure;
 38        cmd.CommandText = "Proc_Address";
 39
 40        int count = 0;//用来记录出错的条数
 41        try
 42        {
 43            foreach (DataRowView myDrv in myView)
 44            {
 45                count++;
 46                //要关闭上一次的SQL Server的连接
 47                if (conn.State.ToString() != "Closed")
 48                    conn.Close();
 49
 50                //每一次都要清空所有的CMD的参数
 51                cmd.Parameters.Clear();
 52
 53                //执行存储过程
 54                //首先获得参数 共 3个
 55                //@CardNo,@ToAddress,@CCAddress
 56                SqlParameter paraxh = cmd.Parameters.Add("@xh", SqlDbType.Int);
 57                SqlParameter paraname = cmd.Parameters.Add("@name", SqlDbType.Char);
 58                SqlParameter parand = cmd.Parameters.Add("@nd", SqlDbType.Char);
 59                SqlParameter parabj = cmd.Parameters.Add("@bj", SqlDbType.Int);
 60                SqlParameter parazh = cmd.Parameters.Add("@zh", SqlDbType.Int);
 61                                        //   SqlParameter parazh = cmd.Parameters.Add("@xh", SqlDbType.Int);
 62                                        //SqlParameter parayw = cmd.Parameters.Add("@yw", SqlDbType.Int);
 63                                        //SqlParameter parasw = cmd.Parameters.Add("@sw", SqlDbType.Int);
 64                                        //SqlParameter parayw = cmd.Parameters.Add("@yw", SqlDbType.Int);
 65                                        //SqlParameter parasx = cmd.Parameters.Add("@sx", SqlDbType.Float);
 66
 67                SqlParameter parayw = cmd.Parameters.Add("@yw", SqlDbType.Int);
 68                SqlParameter parasx = cmd.Parameters.Add("@sx", SqlDbType.Int);
 69                SqlParameter parayy = cmd.Parameters.Add("@yy", SqlDbType.Int);
 70                SqlParameter parazz = cmd.Parameters.Add("@zz", SqlDbType.Int);
 71                SqlParameter parals = cmd.Parameters.Add("@ls", SqlDbType.Int);
 72                SqlParameter paradl = cmd.Parameters.Add("@dl", SqlDbType.Int);
 73                //表示是输出参数
 74                SqlParameter parawl = cmd.Parameters.Add("@wl", SqlDbType.Int);
 75                SqlParameter parahx = cmd.Parameters.Add("@hx", SqlDbType.Int);
 76                SqlParameter parasw = cmd.Parameters.Add("@sw", SqlDbType.Int);
 77
 78
 79
 80
 81                paraxh.Direction = ParameterDirection.Input;
 82                paraname.Direction = ParameterDirection.Input;
 83                parand.Direction = ParameterDirection.Input;
 84                parabj.Direction = ParameterDirection.Input;
 85                parazh.Direction = ParameterDirection.Input;
 86
 87                //parayw.Direction = ParameterDirection.Input;
 88                parayw.Direction = ParameterDirection.Input;
 89                parasx.Direction = ParameterDirection.Input;
 90                parayy.Direction = ParameterDirection.Input;
 91                parazz.Direction = ParameterDirection.Input;
 92                parals.Direction = ParameterDirection.Input;
 93                paradl.Direction = ParameterDirection.Input;
 94                parawl.Direction = ParameterDirection.Input;
 95                parahx.Direction = ParameterDirection.Input;
 96                parasw.Direction = ParameterDirection.Input;
 97
 98                //参数赋值
 99                paraxh.Value = myDrv[0].ToString().Trim().ToString();
100                paraname.Value = myDrv[1].ToString().Trim();
101                parand.Value = myDrv[2].ToString().Trim();
102                parabj.Value = myDrv[3].ToString().Trim();
103                parazh.Value = myDrv[4].ToString().Trim();
104                //parayw.Value = myDrv[3].ToString().Trim();
105                parayw.Value = myDrv[5].ToString().Trim();
106                parasx.Value = myDrv[6].ToString().Trim();
107                parayy.Value = Convert.ToInt32(myDrv[7]).ToString().Trim();
108                parazz.Value = Convert.ToInt32(myDrv[8]).ToString().Trim();
109                parals.Value = Convert.ToInt32(myDrv[9]).ToString().Trim();
110                paradl.Value = Convert.ToInt32(myDrv[10]).ToString().Trim();
111                parawl.Value = myDrv[11].ToString().Trim();
112                parahx.Value = myDrv[12].ToString().Trim();
113                parasw.Value = myDrv[13].ToString().Trim();
114             
115
116                conn.Open();
117                cmd.ExecuteNonQuery();//写入SQL数据库
118
119            }

120            Response.Write("导入成功!!");
121        }

122        catch
123        {
124
125            //cmd.ExecuteNonQuery();
126            Page.Response.Write("alert('第" + count.ToString() + "条数据出错!');");
127            objConn.Close();//关闭EXCEL的连接
128        }

129
130       
131
132
133    }

134   
posted @ 2008-05-05 22:26  冷风醉饮  阅读(844)  评论(0)    收藏  举报